Maude-Maude3.5.1/0000775000175000017510000000000015036121435013060 5ustar nileshnileshMaude-Maude3.5.1/tests/0000775000175000017510000000000015036121435014222 5ustar nileshnileshMaude-Maude3.5.1/tests/StrategyLanguage/0000775000175000017510000000000015036121435017470 5ustar nileshnileshMaude-Maude3.5.1/tests/StrategyLanguage/srewrite.maude0000664000175000017510000001063015036121435022351 0ustar nileshnileshset show timing off . set show advisories off . mod DATA is protecting SET{Qid} . sort Pair . op <_|_> : Set{Qid} Set{Qid} -> Pair [ctor] . vars Q Q1 Q2 : Qid . rl [concat] : Q1, Q2 => qid(string(Q1) + string(Q2)) . rl [rh] : Q => qid("h" + string(Q)) . rl [rm] : Q => empty . endm smod STRATEGIES is protecting DATA . var Q : Qid . var S S1 S2 : Set{Qid} . strat filter : Set{Qid} @ Set{Qid} . sd filter(S1) := match empty . sd filter(S1) := try(matchrew Q, S s.t. Q in S1 by Q using rm[Q <- Q], S using filter(S1)) . endsm srew < 'a, 'b | 'c, 'd, 'e > using matchrew < S1 | S2 > by S1 using rh , S2 using concat ! . srew < 'a, 'b | 'a, 'd > using matchrew < S1 | S2 > by S1 using one(concat) , S2 using filter(S1) . srew [2] < 'a | 'c > using matchrew < S1 | S2 > by S1 using rh * , S2 using rh * . continue 1 . *** *** Testing all the combinators *** fmod 15PUZZLE-BOARD is protecting NAT . sorts Tile Row Puzzle . subsorts Nat < Tile < Row < Puzzle . op b : -> Tile [ctor] . op nil : -> Row [ctor] . op __ : Row Row -> Row [ctor assoc id: nil prec 25] . op _;_ : Puzzle Puzzle -> Puzzle [ctor assoc] . var T : Tile . var R : Row . op size : Row -> Nat . eq size(nil) = 0 . eq size(T R) = size(R) + 1 . endfm mod 15PUZZLE is protecting 15PUZZLE-BOARD . var T : Tile . vars LU RU LD RD : Row . var P : Puzzle . rl [left] : T b => b T . rl [right] : b T => T b . crl [down] : (LU b RU) ; (LD T RD) => (LU T RU) ; (LD b RD) if size(LU) = size(LD) . crl [up] : (LU T RU) ; (LD b RD) => (LU b RU) ; (LD T RD) if size(LU) = size(LD) . endm srewrite 1 b 2 using idle . srewrite 1 b 2 using fail . srewrite 1 b 2 ; 3 b 4 using right . srewrite 1 b 2 ; 3 b 4 using left[T <- 1] . mod 15PUZZLE-LOG is protecting 15PUZZLE . protecting LIST{Qid} . sort PuzzleLog . op <_|_> : List{Qid} Puzzle -> PuzzleLog [ctor] . var M : Qid . var L : List{Qid} . vars P P' : Puzzle . crl [move] : < L | P > => < L M | P' > if P => P' [nonexec] . endm srewrite < nil | 1 b 2 > using move[M <- 'left]{left} . srewrite < nil | 1 b 2 > using all . srewrite 1 b 2 using xmatch b N:Nat s.t. N:Nat =/= 1 . srewrite 1 2 ; 3 b using left ; up | up ; left . srewrite 1 b 2 3 using right * . srewrite 1 b 2 3 4 using right * ; (right ? fail : idle) . srewrite 1 b 2 ; 3 b 4 using matchrew RU:Row ; RD:Row by RU:Row using left, RD:Row using right . srewrite 1 b 2 3 using one(right +) . srew [2] b 1 2 ; b 3 using right + . dsrew [2] b 1 2 ; b 3 using right + . srew 1 b using (left | right) * . smod 15PUZZLE-STRATS is protecting 15PUZZLE . protecting INT . strat loop @ Puzzle . strat move : Int Int @ Puzzle . var N : Nat . var M : Int . sd loop := left ; up ; right ; down . sd move(0, 0) := idle . sd move(s(N), M) := right ; move(N, M) . sd move(- s(N), M) := left ; move(- N, M) . sd move(0, s(N)) := down ; move(0, N) . sd move(0, - s(N)) := up ; move(0, - N) . endsm srewrite 1 2 3 ; 4 5 6 ; 7 b 8 using move(1, -2) . *** *** Testing more complex strategy definitions *** mod SWAPPING{X :: DEFAULT} is protecting ARRAY{Nat, X} . vars I J : Nat . vars V W : X$Elt . var AR : Array{Nat, X} . rl [swap] : J |-> V ; I |-> W => J |-> W ; I |-> V . op maxIndex : Array{Nat, X} ~> Nat . eq maxIndex(empty) = 0 . eq maxIndex(I |-> V ; AR) = if maxIndex(AR) < I then I else maxIndex(AR) fi . endm view DEFAULT+ from DEFAULT to STRICT-TOTAL-ORDER + DEFAULT is endv smod INSERTION-SORT{X :: STRICT-TOTAL-ORDER + DEFAULT} is protecting SWAPPING{DEFAULT+}{X} * ( sort Array{Nat, DEFAULT+}{X} to NatArray{X} ) . strat swap : Nat Nat @ NatArray{X} . strats insert insort : Nat @ NatArray{X} . vars X Y J I : Nat . vars V W : X$Elt . var AR : NatArray{X} . sd insort(Y) := try(match AR s.t. Y <= maxIndex(AR) ; insert(Y) ; insort(Y + 1)) . sd insert(1) := idle [label base-case] . csd insert(s(X)) := try(xmatch X |-> V ; s(X) |-> W s.t. W < V ; swap(X, s(X)) ; insert(X)) if X > 0 [label recursive-case] . sd swap(X, Y) := swap[J <- X, I <- Y] . endsm view Int<0 from STRICT-TOTAL-ORDER + DEFAULT to INT is sort Elt to Int . endv smod INSERTION-SORT-INT is protecting INSERTION-SORT{Int<0} . endsm srewrite 1 |-> 8 ; 2 |-> 3 ; 3 |-> 15 ; 4 |-> 5 ; 5 |-> 2 using insort(2) . Maude-Maude3.5.1/tests/StrategyLanguage/srewrite.expected0000664000175000017510000001162215036121435023061 0ustar nileshnilesh========================================== srewrite in STRATEGIES : < 'a, 'b | 'c, 'd, 'e > using matchrew < S1 | S2 > by S1 using rh, S2 using concat ! . Solution 1 rewrites: 93 result Pair: < 'b, 'ha | 'cde > Solution 2 rewrites: 98 result Pair: < 'a, 'hb | 'cde > Solution 3 rewrites: 98 result Pair: < 'b, 'ha | 'ecd > Solution 4 rewrites: 98 result Pair: < 'b, 'ha | 'ced > Solution 5 rewrites: 98 result Pair: < 'a, 'hb | 'ecd > Solution 6 rewrites: 98 result Pair: < 'a, 'hb | 'ced > Solution 7 rewrites: 98 result Pair: < 'b, 'ha | 'dce > Solution 8 rewrites: 98 result Pair: < 'a, 'hb | 'dce > Solution 9 rewrites: 98 result Pair: < 'b, 'ha | 'edc > Solution 10 rewrites: 98 result Pair: < 'a, 'hb | 'edc > Solution 11 rewrites: 98 result Pair: < 'b, 'ha | 'dec > Solution 12 rewrites: 98 result Pair: < 'a, 'hb | 'dec > No more solutions. rewrites: 98 ========================================== srewrite in STRATEGIES : < 'a, 'b | 'a, 'd > using matchrew < S1 | S2 > by S1 using one(concat), S2 using filter(S1) . Solution 1 rewrites: 9 result Pair: < 'ab | 'd > No more solutions. rewrites: 9 ========================================== srewrite [2] in STRATEGIES : < 'a | 'c > using matchrew < S1 | S2 > by S1 using rh *, S2 using rh * . Solution 1 rewrites: 8 result Pair: < 'a | 'c > Solution 2 rewrites: 16 result Pair: < 'ha | 'c > Solution 3 rewrites: 0 result Pair: < 'a | 'hc > ========================================== srewrite in 15PUZZLE : 1 b 2 using idle . Solution 1 rewrites: 0 result Row: 1 b 2 No more solutions. rewrites: 0 ========================================== srewrite in 15PUZZLE : 1 b 2 using fail . No solution. rewrites: 0 ========================================== srewrite in 15PUZZLE : 1 b 2 ; 3 b 4 using right . Solution 1 rewrites: 1 result Puzzle: 1 2 b ; 3 b 4 Solution 2 rewrites: 2 result Puzzle: 1 b 2 ; 3 4 b No more solutions. rewrites: 2 ========================================== srewrite in 15PUZZLE : 1 b 2 ; 3 b 4 using left[T <- 1] . Solution 1 rewrites: 1 result Puzzle: b 1 2 ; 3 b 4 No more solutions. rewrites: 1 ========================================== srewrite in 15PUZZLE-LOG : < nil | 1 b 2 > using move[M <- 'left]{left} . Solution 1 rewrites: 2 result PuzzleLog: < 'left | b 1 2 > No more solutions. rewrites: 2 ========================================== srewrite in 15PUZZLE-LOG : < nil | 1 b 2 > using all . Solution 1 rewrites: 1 result PuzzleLog: < nil | b 1 2 > Solution 2 rewrites: 2 result PuzzleLog: < nil | 1 2 b > No more solutions. rewrites: 2 ========================================== srewrite in 15PUZZLE-LOG : 1 b 2 using xmatch b N:Nat such that N:Nat =/= 1 = true . Solution 1 rewrites: 1 result Row: 1 b 2 No more solutions. rewrites: 1 ========================================== srewrite in 15PUZZLE-LOG : 1 2 ; 3 b using left ; up | up ; left . Solution 1 rewrites: 15 result Puzzle: b 2 ; 1 3 Solution 2 rewrites: 20 result Puzzle: b 1 ; 3 2 No more solutions. rewrites: 20 ========================================== srewrite in 15PUZZLE-LOG : 1 b 2 3 using right * . Solution 1 rewrites: 0 result Row: 1 b 2 3 Solution 2 rewrites: 1 result Row: 1 2 b 3 Solution 3 rewrites: 2 result Row: 1 2 3 b No more solutions. rewrites: 2 ========================================== srewrite in 15PUZZLE-LOG : 1 b 2 3 4 using right * ; (right ? fail : idle) . Solution 1 rewrites: 6 result Row: 1 2 3 4 b No more solutions. rewrites: 6 ========================================== srewrite in 15PUZZLE-LOG : 1 b 2 ; 3 b 4 using matchrew RU:Row ; RD:Row by RU:Row using left, RD:Row using right . Solution 1 rewrites: 2 result Puzzle: b 1 2 ; 3 4 b No more solutions. rewrites: 2 ========================================== srewrite in 15PUZZLE-LOG : 1 b 2 3 using one(right +) . Solution 1 rewrites: 1 result Row: 1 2 b 3 No more solutions. rewrites: 1 ========================================== srewrite [2] in 15PUZZLE-LOG : b 1 2 ; b 3 using right + . Solution 1 rewrites: 2 result Puzzle: 1 b 2 ; b 3 Solution 2 rewrites: 3 result Puzzle: b 1 2 ; 3 b ========================================== dsrewrite [2] in 15PUZZLE-LOG : b 1 2 ; b 3 using right + . Solution 1 rewrites: 1 result Puzzle: 1 b 2 ; b 3 Solution 2 rewrites: 2 result Puzzle: 1 2 b ; b 3 ========================================== srewrite in 15PUZZLE-LOG : 1 b using (left | right)* . Solution 1 rewrites: 0 result Row: 1 b Solution 2 rewrites: 1 result Row: b 1 No more solutions. rewrites: 2 ========================================== srewrite in 15PUZZLE-STRATS : 1 2 3 ; 4 5 6 ; 7 b 8 using move(1, -2) . Solution 1 rewrites: 52 result Puzzle: 1 2 b ; 4 5 3 ; 7 8 6 No more solutions. rewrites: 52 ========================================== srewrite in INSERTION-SORT-INT : 1 |-> 8 ; 2 |-> 3 ; 3 |-> 15 ; 4 |-> 5 ; 5 |-> 2 using insort(2) . Solution 1 rewrites: 116 result NatArray{Int<0}: 1 |-> 2 ; 2 |-> 3 ; 3 |-> 5 ; 4 |-> 8 ; 5 |-> 15 No more solutions. rewrites: 116 Bye. Maude-Maude3.5.1/tests/StrategyLanguage/srewrite0000775000175000017510000000033415036121435021262 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/srewrite.maude -no-banner -no-advise \ > srewrite.out 2>&1 diff $srcdir/srewrite.expected srewrite.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/StrategyLanguage/parameterization.maude0000664000175000017510000000724115036121435024067 0ustar nileshnileshset show timing off . set show advisories off . sth BT-ELEMS is protecting BOOL . sort State . op isOk : State -> Bool . op isSolution : State -> Bool . strat expand @ State . endsth smod BT-STRAT{X :: BT-ELEMS} is var S : X$State . strat solve @ X$State . sd solve := (match S s.t. isSolution(S)) ? idle : (expand ; match S s.t. isOk(S) ; solve) . endsm mod QUEENS is protecting LIST{Nat} . protecting SET{Nat} . op isOk : List{Nat} -> Bool . op ok : List{Nat} Nat Nat -> Bool . op isSolution : List{Nat} -> Bool . vars N M Diff : Nat . var L : List{Nat} . var S : Set{Nat} . eq isOk(L N) = ok(L, N, 1) . eq ok(nil, M, Diff) = true . ceq ok(L N, M, Diff) = ok(L, M, Diff + 1) if N =/= M /\ N =/= M + Diff /\ M =/= N + Diff . eq isSolution(L) = size(L) == 8 . crl [next] : L => L N if N,S := 1, 2, 3, 4, 5, 6, 7, 8 . endm view QueensBT from BT-ELEMS to QUEENS is sort State to List{Nat} . strat expand to expr top(next) . endv smod QUEENS-BT is including BT-STRAT{QueensBT} . endsm dsrew [1] nil using solve . srew [1] nil using solve . continue 2 . fmod GRAPHS is pr NAT . sort Edge . op p : Nat Nat -> Edge [ctor comm] . sort Adjacency . subsort Edge < Adjacency . op nil : -> Adjacency [ctor] . op __ : Adjacency Adjacency -> Adjacency [ctor assoc comm id: nil] . var E : Edge . var As : Adjacency . var K L : Nat . eq E E = E . op neighbor : Nat Nat Adjacency -> Bool . eq neighbor(K, L, p(K, L) As) = true . eq neighbor(K, L, As) = false [owise] . endfm mod COLORING is pr GRAPHS . pr NAT-LIST . pr EXT-BOOL . sort Graph . op graph : Nat Nat Adjacency NatList -> Graph [ctor] . op numColors : Graph -> Nat . op alreadyColored : Graph -> Nat . eq numColors(graph(N, M, As, Cs)) = M . eq alreadyColored(graph(N, M, As, Cs)) = size(Cs) . var N M K K' C C' : Nat . var As : Adjacency . var Cs : NatList . op isSolution : Graph -> Bool . op isOk : Graph -> Bool . op admissibleColor : Nat Nat Graph -> Bool . op admissibleColor : Nat Nat Adjacency Nat NatList -> Bool . eq isSolution(graph(N, M, As, Cs)) = N == size(Cs) . eq isOk(G:Graph) = true . eq admissibleColor(C, K, graph(N, M, As, Cs)) = admissibleColor(C, K, As, 0, Cs) . eq admissibleColor(C, K, As, K', nil) = true . eq admissibleColor(C, K, As, K', C' Cs) = (C =/= C' or not neighbor(K, K', As)) and-then admissibleColor(C, K, As, s(K'), Cs) . rl [next] : graph(N, M, As, Cs) => graph(N, M, As, Cs C) [nonexec] . endm smod COLORING-STRAT is protecting COLORING . strat expand @ Graph . strat expand : Nat @ Graph . sd expand := expand(0) . var C : Nat . var G : Graph . sd expand(C) := match G s.t. admissibleColor(C, alreadyColored(G), G) ; next[C <- C] | match G s.t. s(C) < numColors(G) ; expand(s(C)) . endsm view ColoringBT from BT-ELEMS to COLORING-STRAT is sort State to Graph . strat expand to expand . endv smod COLORING-BT is including BT-STRAT{ColoringBT} . endsm srew [4] graph(10, 3, p(0, 1) p(0, 4) p(0, 5) p(1, 2) p(1, 6) p(2, 3) p(2, 7) p(3, 4) p(3, 8) p(4, 9) p(5, 7) p(5, 8) p(6, 8) p(6, 9) p(7, 9), nil) using solve . sth STRIV is including TRIV . strat st @ Elt . endsth smod IDLE-STRAT is strats nop @ Bool . sd nop := idle . endsm view Nop from STRIV to IDLE-STRAT is sort Elt to Bool . strat st to nop . endv smod TWICE{X :: STRIV} is strat xst @ X$Elt . sd xst := st ; st . endsm view Twice{X :: STRIV} from STRIV to TWICE{X} is sort Elt to X$Elt . strat st to xst . endv smod REDUCE{X :: STRIV} is strat reduce @ X$Elt . sd reduce := st ? idle : reduce . endsm smod MAIN is protecting REDUCE{Twice{Nop}} . endsm srew true using reduce . Maude-Maude3.5.1/tests/StrategyLanguage/parameterization.expected0000664000175000017510000000315715036121435024577 0ustar nileshnilesh========================================== dsrewrite [1] in QUEENS-BT : nil using solve . Solution 1 rewrites: 15602 result NeList{Nat}: 1 5 8 6 3 7 2 4 ========================================== srewrite [1] in QUEENS-BT : nil using solve . Solution 1 rewrites: 285296 result NeList{Nat}: 1 5 8 6 3 7 2 4 Solution 2 rewrites: 0 result NeList{Nat}: 1 6 8 3 7 4 2 5 Solution 3 rewrites: 0 result NeList{Nat}: 1 7 4 6 8 2 5 3 ========================================== srewrite [4] in COLORING-BT : graph(10, 3, p(0, 1) p(0, 4) p(0, 5) p(1, 2) p(1, 6) p(2, 3) p(2, 7) p(3, 4) p(3, 8) p(4, 9) p(5, 7) p(5, 8) p(6, 8) p(6, 9) p(7, 9), nil) using solve . Solution 1 rewrites: 130137 result Graph: graph(10, 3, p(0, 1) p(0, 4) p(0, 5) p(1, 2) p(1, 6) p(2, 3) p(2, 7) p(3, 4) p(3, 8) p(4, 9) p(5, 7) p(5, 8) p(6, 8) p(6, 9) p(7, 9), 0 1 0 1 2 1 2 2 0 0) Solution 2 rewrites: 130137 result Graph: graph(10, 3, p(0, 1) p(0, 4) p(0, 5) p(1, 2) p(1, 6) p(2, 3) p(2, 7) p(3, 4) p(3, 8) p(4, 9) p(5, 7) p(5, 8) p(6, 8) p(6, 9) p(7, 9), 0 1 0 1 2 2 2 1 0 0) Solution 3 rewrites: 130137 result Graph: graph(10, 3, p(0, 1) p(0, 4) p(0, 5) p(1, 2) p(1, 6) p(2, 3) p(2, 7) p(3, 4) p(3, 8) p(4, 9) p(5, 7) p(5, 8) p(6, 8) p(6, 9) p(7, 9), 0 1 0 2 1 1 2 2 0 0) Solution 4 rewrites: 130137 result Graph: graph(10, 3, p(0, 1) p(0, 4) p(0, 5) p(1, 2) p(1, 6) p(2, 3) p(2, 7) p(3, 4) p(3, 8) p(4, 9) p(5, 7) p(5, 8) p(6, 8) p(6, 9) p(7, 9), 0 1 0 2 1 2 2 1 0 0) ========================================== srewrite in MAIN : true using reduce . Solution 1 rewrites: 0 result Bool: true No more solutions. rewrites: 0 Bye. Maude-Maude3.5.1/tests/StrategyLanguage/parameterization0000775000175000017510000000037415036121435023000 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parameterization.maude -no-banner -no-advise \ > parameterization.out 2>&1 diff $srcdir/parameterization.expected parameterization.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/StrategyLanguage/modules.maude0000664000175000017510000000403715036121435022161 0ustar nileshnileshset show timing off . set show advisories off . *** *** Strategy modules, theories and views *** sth STRIV is including TRIV . strat stt @ Elt . endsth mod FOO is protecting QID . var X : Qid . rl [rh] : X => qid("h" + string(X)) . endm view Foo from STRIV to FOO is sort Elt to Qid . strat stt to expr rh . endv smod REPEAT{X :: STRIV} is protecting NAT . var N : Nat . strat repeat : Nat @ X$Elt . sd repeat(0) := idle . sd repeat(s(N)) := stt ; repeat(N) . endsm smod BAR is protecting REPEAT{Foo} * (strat repeat to puths) . endsm show all . srew 'a using puths(8) . view STriv from TRIV to STRIV is endv smod PROMOTED is protecting LIST{STriv}{Foo} . endsm red 'a 'b 'c . *** *** Strategy calls and traces *** smod CALLS is protecting FOO . protecting SET{Qid} . strat cond @ Qid . *** different matches from the assignement condition strat defs @ Qid . *** different matches from different definitions strat args : Set{Qid} @ Qid . *** different matches from the argument var X : Qid . var S : Set{Qid} . csd cond := rh[X <- X] if X, S := 'a, 'b, 'c . sd defs := fail . sd defs := rh . sd defs := idle . sd args((X, S)) := rh[X <- X] . endsm set trace eq off . set trace rl off . set trace whole on . set trace on . srew 'c using cond . srew 'b using defs . srew 'a using args(('a, 'z)) . set trace sd off . set trace off . *** *** Detection of some bad strategy terms *** smod BAD is protecting FOO . var Q R : Qid . strat st @ Qid . strat st : Qid @ Qid . csd st := idle if Q = 'a . sd st := rh[Q <- Q] . sd st := match R s.t. Q == R . sd st := st(Q) . endsm *** *** Strategy modules containing rules and equations *** smod ALLINSMOD is sorts Letter Vowel . subsort Vowel < Letter . ops b c d : -> Letter . ops a e i o u : -> Vowel . op next : Letter -> Letter . eq next(a) = b . eq next(b) = c . var L : Letter . rl [next] : L => next(L) . strat next @ Letter . sd next() := next ; next . endsm srew a using next . srew a using next() . Maude-Maude3.5.1/tests/StrategyLanguage/modules.expected0000664000175000017510000003020115036121435022657 0ustar nileshnileshsmod BAR is sorts Bool Zero NzNat Nat String Char FindResult Qid . subsorts Zero NzNat < Nat . subsort Char < String . subsort Nat < FindResult . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [FindResult] [FindResult] [FindResult] -> [FindResult] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op : -> Char [special ( id-hook StringSymbol)] . op : -> String [special ( id-hook StringSymbol)] . op notFound : -> FindResult [ctor] . op ascii : Char -> Nat [special ( id-hook StringOpSymbol (ascii) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op char : [FindResult] -> [String] [special ( id-hook StringOpSymbol (char) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : String String -> String [prec 33 gather (E e) special ( id-hook StringOpSymbol (+) op-hook stringSymbol ( : ~> Char))] . op length : String -> Nat [special ( id-hook StringOpSymbol (length) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op substr : String Nat Nat -> String [special ( id-hook StringOpSymbol (substr) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op find : String String Nat -> FindResult [special ( id-hook StringOpSymbol (find) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook notFoundTerm (notFound))] . op rfind : String String Nat -> FindResult [special ( id-hook StringOpSymbol (rfind) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook notFoundTerm (notFound))] . op _<_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (<) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (<=) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (>) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (>=) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op upperCase : String -> String [special ( id-hook StringOpSymbol (upperCase) op-hook stringSymbol ( : ~> Char))] . op lowerCase : String -> String [special ( id-hook StringOpSymbol (lowerCase) op-hook stringSymbol ( : ~> Char))] . op : -> Qid [special ( id-hook QuotedIdentifierSymbol)] . op string : Qid -> String [special ( id-hook QuotedIdentifierOpSymbol (string) op-hook quotedIdentifierSymbol ( : ~> Qid) op-hook stringSymbol ( : ~> Char))] . op qid : [String] -> [Qid] [special ( id-hook QuotedIdentifierOpSymbol (qid) op-hook quotedIdentifierSymbol ( : ~> Qid) op-hook stringSymbol ( : ~> Char))] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . rl [rh] : X:Qid => qid("h" + string(X:Qid)) . strat puths : Nat @ Qid . sd puths(0) := idle . sd puths(s N:Nat) := rh ; puths(N:Nat) . endsm ========================================== srewrite in BAR : 'a using puths(8) . Solution 1 rewrites: 32 result Qid: 'hhhhhhhha No more solutions. rewrites: 32 ========================================== reduce in PROMOTED : 'a 'b 'c . rewrites: 0 result NeList{STriv}{Foo}: 'a 'b 'c ========================================== srewrite in CALLS : 'c using cond . *********** trial #1 csd cond := rh[X <- X] if X, S := 'a, 'b, 'c . X --> (unbound) S --> (unbound) *********** solving condition fragment X, S := 'a, 'b, 'c *********** success for condition fragment X, S := 'a, 'b, 'c X --> 'a S --> 'b, 'c *********** success #1 *********** strategy call csd cond := rh[X <- X] if X, S := 'a, 'b, 'c . subject --> 'c X --> 'a S --> 'b, 'c *********** re-solving condition fragment X, S := 'a, 'b, 'c *********** success for condition fragment X, S := 'a, 'b, 'c X --> 'b S --> 'a, 'c *********** success #1 *********** strategy call csd cond := rh[X <- X] if X, S := 'a, 'b, 'c . subject --> 'c X --> 'b S --> 'a, 'c *********** re-solving condition fragment X, S := 'a, 'b, 'c *********** success for condition fragment X, S := 'a, 'b, 'c X --> 'c S --> 'a, 'b *********** success #1 *********** strategy call csd cond := rh[X <- X] if X, S := 'a, 'b, 'c . subject --> 'c X --> 'c S --> 'a, 'b *********** re-solving condition fragment X, S := 'a, 'b, 'c *********** failure for condition fragment X, S := 'a, 'b, 'c *********** failure #1 Solution 1 rewrites: 4 result Qid: 'hc No more solutions. rewrites: 4 ========================================== srewrite in CALLS : 'b using defs . *********** strategy call sd defs := fail . subject --> 'b empty substitution *********** strategy call sd defs := rh . subject --> 'b empty substitution *********** strategy call sd defs := idle . subject --> 'b empty substitution Solution 1 rewrites: 4 result Qid: 'hb Solution 2 rewrites: 4 result Qid: 'b No more solutions. rewrites: 4 ========================================== srewrite in CALLS : 'a using args('a, 'z) . *********** strategy call sd args(X, S) := rh[X <- X] . call term --> args('a, 'z) subject --> 'a X --> 'a S --> 'z *********** strategy call sd args(X, S) := rh[X <- X] . call term --> args('a, 'z) subject --> 'a X --> 'z S --> 'a Solution 1 rewrites: 4 result Qid: 'ha No more solutions. rewrites: 4 Warning: , line 101 (smod BAD): variable Q is used before it is bound in strategy definition: csd st := idle if Q = 'a . Warning: , line 102 (smod BAD): unbound variable Q in application strategy substitution for Q. Warning: , line 103 (smod BAD): variable Q is used before it is bound in condition of test strategy. Warning: , line 104 (smod BAD): unbound variable Q in strategy call argument. ========================================== srewrite in ALLINSMOD : a using next . Solution 1 rewrites: 2 result Letter: b No more solutions. rewrites: 2 ========================================== srewrite in ALLINSMOD : a using next() . Solution 1 rewrites: 4 result Letter: c No more solutions. rewrites: 4 Bye. Maude-Maude3.5.1/tests/StrategyLanguage/modules0000775000175000017510000000033015036121435021062 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/modules.maude -no-banner -no-advise \ > modules.out 2>&1 diff $srcdir/modules.expected modules.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/StrategyLanguage/metalevel.maude0000664000175000017510000000547615036121435022477 0ustar nileshnileshset show timing off . set show advisories off . *** *** Ascent functions *** mod FOO is sort Foo . ops a b c : -> Foo . rl [ab] : a => b . rl [bc] : b => c . endm smod SFOO is protecting FOO . strat ac @ Foo . sd ac := ab ; bc . endsm sth STRIV is including TRIV . strat st @ Elt . endsth red in META-LEVEL : upModule('SFOO, false) . red in META-LEVEL : upModule('SFOO, true) . red in META-LEVEL : upModule('STRIV, false) . red in META-LEVEL : upStratDecls('STRIV, true) . red in META-LEVEL : upSds('SFOO, false) . view SFoo from STRIV to SFOO is sort Elt to Foo . strat st to ac . endv view SFoo2 from STRIV to FOO is sort Elt to Foo . strat st to expr ab . endv red in META-LEVEL : upView('SFoo) . red in META-LEVEL : upView('SFoo2) . *** *** Strategic rewrite *** red in META-LEVEL : metaSrewrite(upModule('SFOO, false), 'a.Foo, 'ab[none]{empty} | 'ac[[empty]], breadthFirst, 0) . red in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ab[none]{empty} | 'ac[[empty]], breadthFirst, 0) . red in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ab[none]{empty} | 'ac[[empty]], breadthFirst, 0) . red in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ab[none]{empty} | 'ac[[empty]], breadthFirst, 1) . red in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ab[none]{empty} | 'ac[[empty]], breadthFirst, 2) . red in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ab[none]{empty} | 'ac[[empty]], depthFirst, 1) . red in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ab[none]{empty} | 'ac[[empty]], depthFirst, 0) . red in META-LEVEL : metaSrewrite( mod 'INC is protecting 'NAT . sorts none . none none none none rl 'N:Nat => 's_['N:Nat] [label('inc)] . endm, '0.Nat, ('inc[none]{empty}) *, breadthFirst, 8) . red in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'bad-rule[none]{empty}, depthFirst, 0) . red in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'bad-strat[[empty]], depthFirst, 0) . *** *** Parse and pretty-print *** red in META-LEVEL : metaParseStrategy(['SFOO], none, 'ac '| 'ab) . red in META-LEVEL : metaParseStrategy(['NAT], 'N:Nat ; 'M:Nat, 'match 'N 's.t. 'M ':= '5 '/\ 'N '> 'M) . red in META-LEVEL : metaParseStrategy(['SFOO], 'N:Nat, 'idle) . red in META-LEVEL : metaParseStrategy(['SFOO], none, 'ab ';) . red in META-LEVEL : metaPrettyPrintStrategy(['SFOO], none, 'ac[[empty]] ; 'ab[none]{empty}, none) . red in META-LEVEL : metaPrettyPrintStrategy(['NAT], 'N:Nat, match 'N:Nat s.t. ('M:Nat := 's_^5['0.Zero] /\ '_>_['N:Nat, 'M:Nat] = 'true.Bool), number) . red in META-LEVEL : metaPrettyPrintStrategy( smod 'CONFLICT is protecting 'NAT . sorts none . none none none none rl 'N:Nat => '0.Zero [label('cancel)] . strat 'cancel : nil @ 'Nat [none] . sd 'cancel[[empty]] := match '0.Zero s.t. nil or-else ('cancel[none]{empty}) [none] . endsm, none, 'cancel[[empty]] | 'cancel[none]{empty}, none) . Maude-Maude3.5.1/tests/StrategyLanguage/metalevel.expected0000664000175000017510000001663715036121435023206 0ustar nileshnilesh========================================== reduce in META-LEVEL : upModule('SFOO, false) . rewrites: 1 result StratModule: smod 'SFOO is including 'BOOL . protecting 'FOO . sorts none . none none none none none strat 'ac : nil @ 'Foo [none] . sd 'ac[[empty]] := 'ab[none]{empty} ; 'bc[none]{empty} [none] . endsm ========================================== reduce in META-LEVEL : upModule('SFOO, true) . rewrites: 1 result StratModule: smod 'SFOO is nil sorts 'Bool ; 'Foo . none op '_=/=_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '_and_ : 'Bool 'Bool -> 'Bool [assoc comm prec(55)] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op '_or_ : 'Bool 'Bool -> 'Bool [assoc comm prec(59)] . op '_xor_ : 'Bool 'Bool -> 'Bool [assoc comm prec(57)] . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . none eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . rl 'a.Foo => 'b.Foo [label('ab)] . rl 'b.Foo => 'c.Foo [label('bc)] . strat 'ac : nil @ 'Foo [none] . sd 'ac[[empty]] := 'ab[none]{empty} ; 'bc[none]{empty} [none] . endsm ========================================== reduce in META-LEVEL : upModule('STRIV, false) . rewrites: 1 result StratTheory: sth 'STRIV is including 'TRIV . sorts none . none none none none none strat 'st : nil @ 'Elt [none] . none endsth ========================================== reduce in META-LEVEL : upStratDecls('STRIV, true) . rewrites: 1 result StratDecl: strat 'st : nil @ 'Elt [none] . ========================================== reduce in META-LEVEL : upSds('SFOO, false) . rewrites: 1 result StratDefinition: sd 'ac[[empty]] := 'ab[none]{empty} ; 'bc[none]{empty} [none] . ========================================== reduce in META-LEVEL : upView('SFoo) . rewrites: 1 result View: view 'SFoo from 'STRIV to 'SFOO is sort 'Elt to 'Foo . none strat 'st to 'ac . endv ========================================== reduce in META-LEVEL : upView('SFoo2) . rewrites: 1 result View: view 'SFoo2 from 'STRIV to 'FOO is sort 'Elt to 'Foo . none strat 'st[[empty]] to expr 'ab[none]{empty} . endv ========================================== reduce in META-LEVEL : metaSrewrite(upModule('SFOO, false), 'a.Foo, 'ac[[ empty]] | 'ab[none]{empty}, breadthFirst, 0) . rewrites: 3 result ResultPair: {'b.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ac[[empty]] | 'ab[none]{ empty}, breadthFirst, 0) . rewrites: 3 result ResultPair: {'b.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ac[[empty]] | 'ab[none]{ empty}, breadthFirst, 0) . rewrites: 2 result ResultPair: {'b.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ac[[empty]] | 'ab[none]{ empty}, breadthFirst, 1) . rewrites: 4 result ResultPair: {'c.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ac[[empty]] | 'ab[none]{ empty}, breadthFirst, 2) . rewrites: 2 result ResultPair?: (failure).ResultPair? ========================================== reduce in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ac[[empty]] | 'ab[none]{ empty}, depthFirst, 1) . rewrites: 5 result ResultPair: {'b.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'ac[[empty]] | 'ab[none]{ empty}, depthFirst, 0) . rewrites: 4 result ResultPair: {'c.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaSrewrite(mod 'INC is protecting 'NAT . sorts none . none none none none rl 'N:Nat => 's_['N:Nat] [label('inc)] . endm, '0.Nat, ('inc[none]{empty}) *, breadthFirst, 8) . rewrites: 29 result ResultPair: {'s_^8['0.Zero], 'NzNat} ========================================== reduce in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'bad-rule[none]{empty}, depthFirst, 0) . rewrites: 2 result ResultPair?: (failure).ResultPair? ========================================== reduce in META-LEVEL : metaSrewrite(['SFOO], 'a.Foo, 'bad-strat[[empty]], depthFirst, 0) . rewrites: 1 result [ResultPair?]: metaSrewrite(sth 'SFOO is including 'SFOO . sorts none . none none none none none none none endsth, 'a.Foo, 'bad-strat[[empty]], depthFirst, 0) ========================================== reduce in META-LEVEL : metaParseStrategy(['SFOO], none, 'ac '| 'ab) . rewrites: 2 result Strategy: 'ac[[empty]] | 'ab[none]{empty} ========================================== reduce in META-LEVEL : metaParseStrategy(['NAT], 'M:Nat ; 'N:Nat, 'match 'N 's.t. 'M ':= '5 '/\ 'N '> 'M) . rewrites: 2 result Strategy: match 'N:Nat s.t. ('M:Nat := 's_^5['0.Zero] /\ '_>_['N:Nat, 'M:Nat] = 'true.Bool) ========================================== reduce in META-LEVEL : metaParseStrategy(['SFOO], 'N:Nat, 'idle) . rewrites: 1 result [StrategyList,Strategy?]: metaParseStrategy(sth 'SFOO is including 'SFOO . sorts none . none none none none none none none endsth, 'N:Nat, 'idle) ========================================== reduce in META-LEVEL : metaParseStrategy(['SFOO], none, 'ab ';) . rewrites: 2 result Strategy?: noStratParse(2) ========================================== reduce in META-LEVEL : metaPrettyPrintStrategy(['SFOO], none, 'ac[[empty]] ; 'ab[none]{empty}, none) . rewrites: 2 result NeTypeList: 'ac '; 'ab ========================================== reduce in META-LEVEL : metaPrettyPrintStrategy(['NAT], 'N:Nat, match 'N:Nat s.t. ('M:Nat := 's_^5['0.Zero] /\ '_>_['N:Nat, 'M:Nat] = 'true.Bool), number) . rewrites: 2 result NeQidList: 'match 'N 's.t. 'M:Nat ':= '5 '/\ '_>_ '`( 'N '`, 'M:Nat '`) '= 'true ========================================== reduce in META-LEVEL : metaPrettyPrintStrategy(smod 'CONFLICT is protecting 'NAT . sorts none . none none none none rl 'N:Nat => '0.Zero [label('cancel)] . strat 'cancel : nil @ 'Nat [none] . sd 'cancel[[empty]] := match '0.Zero s.t. nil or-else 'cancel[none]{empty} [ none] . endsm, none, 'cancel[[empty]] | 'cancel[none]{empty}, none) . rewrites: 1 result NeTypeList: 'cancel '`( '`) '| 'cancel Bye. Maude-Maude3.5.1/tests/StrategyLanguage/metalevel0000775000175000017510000000034015036121435021371 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metalevel.maude -no-banner -no-advise \ > metalevel.out 2>&1 diff $srcdir/metalevel.expected metalevel.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/StrategyLanguage/Makefile.am0000664000175000017510000000050215036121435021521 0ustar nileshnileshTESTS = \ metalevel \ modules \ srewrite \ parameterization MAUDE_FILES = \ metalevel.maude \ modules.maude \ srewrite.maude \ parameterization.maude RESULT_FILES = \ metalevel.expected \ modules.expected \ srewrite.expected \ parameterization.expected EXTRA_DIST = $(TESTS) $(MAUDE_FILES) $(RESULT_FILES) Maude-Maude3.5.1/tests/ResolvedBugs/0000775000175000017510000000000015036121435016626 5ustar nileshnileshMaude-Maude3.5.1/tests/ResolvedBugs/viewRecursionMay2019.maude0000664000175000017510000000022115036121435023465 0ustar nileshnileshset show timing off . set show advisories off . *** Infinite recursion view NatSet from TRIV to SET{NatSet} is sort Elt to Set{NatSet} . endv Maude-Maude3.5.1/tests/ResolvedBugs/viewRecursionMay2019.expected0000664000175000017510000000025615036121435024203 0ustar nileshnileshWarning: , line 5 (view NatSet): recursive use of view NatSet is not allowed. Warning: , line 5 (view NatSet): unusable view NatSet. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/viewRecursionMay20190000775000175000017510000000041415036121435022402 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/viewRecursionMay2019.maude -no-banner -no-advise \ > viewRecursionMay2019.out 2>&1 diff $srcdir/viewRecursionMay2019.expected viewRecursionMay2019.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/viewNameApril2025.maude0000664000175000017510000000357015036121435022724 0ustar nileshnileshset show timing off . *** *** We had a bug because view names were unrestricted single token *** identifers but they ended up inside instantiated sort names and *** sort names have many restrictions. This is resolved by no longer *** allowing ( ) [ ] { } , in view names and allowing any non-space *** characters except these 7 inside of balanced {}s within sort names. *** *** This should be rejected view B`{`}AD from TRIV to NAT is sort Elt to Nat . endv fmod TEST is inc SET{B`{`}AD} . endfm *** Test : ending up inside sort name as a result of instantiation view NAT::AS::TRIV from TRIV to NAT is sort Elt to Nat . endv fmod TEST2 is inc SET{NAT::AS::TRIV} . var X : NeSet{NAT::AS::TRIV} . var Y : NeSet`{NAT::AS::TRIV`} . *** single token version endfm show sorts . red X2:NeSet{NAT::AS::TRIV} == (X).NeSet{NAT::AS::TRIV} . red Y2:NeSet`{NAT::AS::TRIV`} == (Y).NeSet`{NAT::AS::TRIV`} . *** Test . ending up inside sort name as a result of instantiation view NAT.AS.TRIV from TRIV to NAT is sort Elt to Nat . endv fmod TEST3 is inc SET{NAT.AS.TRIV} . var X : NeSet{NAT.AS.TRIV} . var Y : NeSet`{NAT.AS.TRIV`} . *** single token version endfm show sorts . red X2:NeSet{NAT.AS.TRIV} == (X).NeSet{NAT.AS.TRIV} . red Y2:NeSet`{NAT.AS.TRIV`} == (Y).NeSet`{NAT.AS.TRIV`} . *** Bad sort names fmod TEST4{X :: TRIV} is sorts `[Bad`] B`{ad B`,a`,d`{X`} B:a:d B.a.d{X} . endfm show sorts . *** Make sure it can't be used at the metalevel red in META-LEVEL : metaReduce(['TEST4], 'true.Bool) . *** Bad implied sort name fmod TEST5 is op f : `[Bad`] -> `[Bad`] . endfm *** Bad class name omod TEST6 is class `[Bad`] . endom *** OK sort names in single token form fmod TEST7{X :: TRIV} is sorts Ok`{X:Y`} Ok`{X.Y`} Ok`{X`,Y`}`{X.Y`} . endfm show sorts . *** OK sort names in pretty form fmod TEST8{X :: TRIV} is sorts Ok{X:Y} Ok{X.Y} Ok{X,Y}{X.Y} . endfm show sorts . Maude-Maude3.5.1/tests/ResolvedBugs/viewNameApril2025.expected0000664000175000017510000000662015036121435023431 0ustar nileshnileshWarning: , line 12 (view B`{`}AD): B`{`}AD is not a valid view name. Warning: , line 17 (fmod TEST): unusable view B`{`}AD. Warning: , line 16 (fmod TEST): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. sort Bool . sort Zero . subsorts Zero < Nat NeSet{NAT::AS::TRIV} Set{NAT::AS::TRIV} . sort NzNat . subsorts NzNat < Nat NeSet{NAT::AS::TRIV} Set{NAT::AS::TRIV} . sort Nat . subsorts NzNat Zero < Nat < NeSet{NAT::AS::TRIV} Set{ NAT::AS::TRIV} . sort NeSet{NAT::AS::TRIV} . subsorts NzNat Zero Nat < NeSet{NAT::AS::TRIV} < Set{NAT::AS::TRIV} . sort Set{NAT::AS::TRIV} . subsorts NzNat Zero Nat NeSet{NAT::AS::TRIV} < Set{NAT::AS::TRIV} . ========================================== reduce in TEST2 : X2:NeSet{NAT::AS::TRIV} == X . rewrites: 1 result Bool: false ========================================== reduce in TEST2 : Y2:NeSet{NAT::AS::TRIV} == Y . rewrites: 1 result Bool: false sort Bool . sort Zero . subsorts Zero < Nat NeSet{NAT.AS.TRIV} Set{NAT.AS.TRIV} . sort NzNat . subsorts NzNat < Nat NeSet{NAT.AS.TRIV} Set{NAT.AS.TRIV} . sort Nat . subsorts NzNat Zero < Nat < NeSet{NAT.AS.TRIV} Set{NAT.AS.TRIV} . sort NeSet{NAT.AS.TRIV} . subsorts NzNat Zero Nat < NeSet{NAT.AS.TRIV} < Set{NAT.AS.TRIV} . sort Set{NAT.AS.TRIV} . subsorts NzNat Zero Nat NeSet{NAT.AS.TRIV} < Set{ NAT.AS.TRIV} . ========================================== reduce in TEST3 : X2:NeSet{NAT.AS.TRIV} == X . rewrites: 1 result Bool: false ========================================== reduce in TEST3 : Y2:NeSet{NAT.AS.TRIV} == Y . rewrites: 1 result Bool: false Warning: , line 54 (fmod TEST4): `[Bad`] is not a valid sort name. Warning: , line 54 (fmod TEST4): B`{ad is not a valid sort name. Warning: , line 54 (fmod TEST4): B`,a`,d`{X`} is not a valid sort name. Warning: , line 54 (fmod TEST4): B:a:d is not a valid sort name. Warning: , line 54 (fmod TEST4): B.a.d`{X`} is not a valid sort name. Warning: , line 53 (fmod TEST4): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 53 (fmod TEST4): module TEST4 is unusable due to unpatchable errors. ========================================== reduce in META-LEVEL : metaReduce(['TEST4], 'true.Bool) . Warning: : unable to use module TEST4 due to unpatchable errors. rewrites: 1 result [ResultPair?]: metaReduce(sth 'TEST4 is including 'TEST4 . sorts none . none none none none none none none endsth, 'true.Bool) Warning: , line 64 (fmod TEST5): `[Bad`] is not a valid sort name. Warning: , line 64 (fmod TEST5): undeclared sort `[Bad`]. Warning: , line 63 (fmod TEST5): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 69 (omod TEST6): `[Bad`] is not a valid class name. Warning: , line 68 (omod TEST6): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. sort X$Elt . sort Bool . sort Ok{X:Y} . sort Ok{X.Y} . sort Ok{X,Y}{X.Y} . sort X$Elt . sort Bool . sort Ok{X:Y} . sort Ok{X.Y} . sort Ok{X,Y}{X.Y} . Bye. Maude-Maude3.5.1/tests/ResolvedBugs/viewNameApril20250000775000175000017510000000040015036121435021622 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/viewNameApril2025.maude -no-banner -no-advise \ > viewNameApril2025.out 2>&1 diff $srcdir/viewNameApril2025.expected viewNameApril2025.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByTheoryViewStrategyMay2025.maude0000664000175000017510000000133415036121435030407 0ustar nileshnilesh*** *** Counterpart of the viewInstantiationByTheoryViewApril2025 test for *** strategy to strategy expression mappings. *** sth T is sort Small . strat f : Small @ Small . endsth sth T2 is sort Little . strat h : Little @ Little . endsth view TV from T to T2 is sort Small to Little . strat f to h . endv sth B is sort Tiny . strat g : Tiny @ Tiny . endsth smod USE-B{X :: B} is sd g(N:X$Tiny) := match N:X$Tiny [label "raw thumb"] . endsm smod BASE{X :: T} is sort Big . subsort X$Small < Big . *** this triggers the bug endsm view PV{X :: T} from B to BASE{X} is sort Tiny to X$Small . strat g(N:Tiny) to expr f(N:X$Small) . endv smod TEST{Y :: T2} is pr USE-B{PV{TV}{Y}} . endsm show sds . Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByTheoryViewStrategyMay2025.expected0000664000175000017510000000005415036121435031113 0ustar nileshnileshsd h(N:Y$Little) := match N:Y$Little . Bye. Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByTheoryViewStrategyMay20250000775000175000017510000000057015036121435027321 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude -no-prelude \ < $srcdir/viewInstantiationByTheoryViewStrategyMay2025.maude -no-banner -no-advise \ > viewInstantiationByTheoryViewStrategyMay2025.out 2>&1 diff $srcdir/viewInstantiationByTheoryViewStrategyMay2025.expected viewInstantiationByTheoryViewStrategyMay2025.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByTheoryViewApril2025.maude0000664000175000017510000000244415036121435027210 0ustar nileshnilesh*** *** Test for the instantiation of a parameterized view containing an *** op->term mapping by a theory-view. Here the problem is in *** the canonical renaming that is computed to map from the *** parameterized view, PV{X :: T} from B to BASE{X} to its *** instance, PV{TV} from B to BASE{TV}. *** *** If the first user sort in a kind in BASE{X} does not appear *** in the parameter theory copy of T then term->op mappings and *** op->op mappings in this canonical renaming maybe missing this sort *** and may fail to match. Then instantiating the op->term mapping will *** cause a self-check failure. *** *** The solution is to use BASE{X} to compute the sorts for the *** operator mappings in the canonical renaming. *** fth T is sort Small . op f : Small -> Small . endfth fth T2 is sort Little . op h : Little -> Little . endfth view TV from T to T2 is sort Small to Little . op f to h . endv fth B is sort Tiny . op g : Tiny -> Tiny . endfth fmod USE-B{X :: B} is eq g(N:X$Tiny) = N:X$Tiny [label "raw thumb"] . endfm fmod BASE{X :: T} is sort Big . subsort X$Small < Big . *** this triggers the bug endfm view PV{X :: T} from B to BASE{X} is sort Tiny to X$Small . op g(N:Tiny) to term f(f(N:X$Small)) . endv fmod TEST{Y :: T2} is pr USE-B{PV{TV}{Y}} . endfm show eqs . Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByTheoryViewApril2025.expected0000664000175000017510000000007015036121435027707 0ustar nileshnilesheq ["raw thumb"] : h(h(N:Y$Little)) = N:Y$Little . Bye. Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByTheoryViewApril20250000775000175000017510000000054015036121435026114 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude -no-prelude \ < $srcdir/viewInstantiationByTheoryViewApril2025.maude -no-banner -no-advise \ > viewInstantiationByTheoryViewApril2025.out 2>&1 diff $srcdir/viewInstantiationByTheoryViewApril2025.expected viewInstantiationByTheoryViewApril2025.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByModuleViewStrategyMay2025.maude0000664000175000017510000000130215036121435030355 0ustar nileshnilesh*** *** Counterpart of the viewInstantiationByModuleViewApril2025 test for *** strategy to strategy expression mappings. *** sth T is sort Small . strat f : Small @ Small . endsth smod M is sort Num . strat s : Num @ Num . endsm view MV from T to M is sort Small to Num . strat f to s . endv sth B is sort Tiny . strat g : Tiny @ Tiny . endsth smod USE-B{X :: B} is sd g(N:X$Tiny) := match N:X$Tiny [label "raw thumb"] . endsm smod BASE{X :: T} is sort Big . subsort X$Small < Big . *** this triggers the bug endsm view PV{X :: T} from B to BASE{X} is sort Tiny to X$Small . strat g(N:Tiny) to expr f(N:X$Small) . endv smod TEST is pr USE-B{PV{MV}} . endsm show sds . Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByModuleViewStrategyMay2025.expected0000664000175000017510000000004215036121435031063 0ustar nileshnileshsd s(N:Num) := match N:Num . Bye. Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByModuleViewStrategyMay20250000775000175000017510000000057015036121435027274 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude -no-prelude \ < $srcdir/viewInstantiationByModuleViewStrategyMay2025.maude -no-banner -no-advise \ > viewInstantiationByModuleViewStrategyMay2025.out 2>&1 diff $srcdir/viewInstantiationByModuleViewStrategyMay2025.expected viewInstantiationByModuleViewStrategyMay2025.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByModuleViewApril2025.maude0000664000175000017510000000241215036121435027156 0ustar nileshnilesh*** *** Test for the instantiation of a parameterized view containing an *** op->term mapping by a module-view. Here the problem is in *** the canonical renaming that is computed to map from the *** parameterized view, PV{X :: T} from B to BASE{X} to its *** instance, PV{MV} from B to BASE{MV}. *** *** If the first user sort in a kind in BASE{X} does not appear *** in the parameter theory copy of T then term->op mappings and *** op->op mappings in this canonical renaming maybe missing this sort *** and may fail to match. Then instantiating the op->term mapping will *** cause a self-check failure. *** *** The solution is to use BASE{X} to compute the sorts for the *** operator mappings in the canonical renaming. *** fth T is sort Small . op f : Small -> Small . endfth fmod M is sort Num . op s : Num -> Num . endfm view MV from T to M is sort Small to Num . op f to s . endv fth B is sort Tiny . op g : Tiny -> Tiny . endfth fmod USE-B{X :: B} is eq g(N:X$Tiny) = N:X$Tiny [label "raw thumb"] . endfm fmod BASE{X :: T} is sort Big . subsort X$Small < Big . *** this triggers the bug endfm view PV{X :: T} from B to BASE{X} is sort Tiny to X$Small . op g(N:Tiny) to term f(f(N:X$Small)) . endv fmod TEST is pr USE-B{PV{MV}} . endfm show eqs . Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByModuleViewApril2025.expected0000664000175000017510000000005615036121435027666 0ustar nileshnilesheq ["raw thumb"] : s(s(N:Num)) = N:Num . Bye. Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationByModuleViewApril20250000775000175000017510000000054015036121435026067 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude -no-prelude \ < $srcdir/viewInstantiationByModuleViewApril2025.maude -no-banner -no-advise \ > viewInstantiationByModuleViewApril2025.out 2>&1 diff $srcdir/viewInstantiationByModuleViewApril2025.expected viewInstantiationByModuleViewApril2025.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationAwkwardCaseStrategyMay2025.maude0000664000175000017510000000135315036121435030204 0ustar nileshnilesh*** *** Counterpart of the viewInstantiationAwkwardCaseApril2025 test for *** strategy to strategy expression mappings. *** smod INT is sorts Nat Int . subsort Nat < Int . strat s : Int @ Int . endsm sth A is sorts Small Big . subsort Small < Big . strat f : Big @ Big . endsth view INT-as-an-A from A to INT is sort Small to Nat . sort Big to Int . strat f(N:Big) to expr s(N:Int) . endv sth B is sort Card . strat g : Card @ Card . endsth smod BASE{X :: A} is endsm view BASE-as-a-B{X :: A} from B to BASE{X} is sort Card to X$Small . strat g to f . endv smod USE-B{X :: B} is sd g(N:X$Card) := match N:X$Card [label "raw thumb"] . endsm smod TEST is pr USE-B{BASE-as-a-B{INT-as-an-A}} . endsm show sds . Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationAwkwardCaseStrategyMay2025.expected0000664000175000017510000000004215036121435030704 0ustar nileshnileshsd s(N:Nat) := match N:Nat . Bye. Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationAwkwardCaseStrategyMay20250000775000175000017510000000056415036121435027120 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude -no-prelude \ < $srcdir/viewInstantiationAwkwardCaseStrategyMay2025.maude -no-banner -no-advise \ > viewInstantiationAwkwardCaseStrategyMay2025.out 2>&1 diff $srcdir/viewInstantiationAwkwardCaseStrategyMay2025.expected viewInstantiationAwkwardCaseStrategyMay2025.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationAwkwardCaseApril2025.maude0000664000175000017510000000254215036121435027003 0ustar nileshnilesh*** *** Test for the awkward case where a parameterized view has a regular *** or implied op->op mapping, here *** op g to f . *** but it is instantiated by a view which maps the target symbol f, *** to a term, here *** op f(N:Big) to term s(s(N:Int)) . *** The composition must be an op->term mapping which must be synthesized - *** the "awkward case". The problem is what sort(s) to give the variable(s) *** in the left-hand side so they match up to the right-hand side. Here *** there is no sort in fth B that maps to Big and hence to Int in *** op g(N:???) to term s(s(N:Int)) . *** which leads to a warning followed by a crash when the equation is *** displayed. The solution is to lift all variables to the kind level in *** synthesized op->term mappings. *** fmod INT is sorts Nat Int . subsort Nat < Int . op s : Int -> Int . endfm fth A is sorts Small Big . subsort Small < Big . op f : Big -> Big . endfth view INT-as-an-A from A to INT is sort Small to Nat . sort Big to Int . op f(N:Big) to term s(s(N:Int)) . endv fth B is sort Card . op g : Card -> Card . endfth fmod BASE{X :: A} is endfm view BASE-as-a-B{X :: A} from B to BASE{X} is sort Card to X$Small . op g to f . endv fmod USE-B{X :: B} is eq g(N:X$Card) = N:X$Card [label "raw thumb"] . endfm fmod TEST is pr USE-B{BASE-as-a-B{INT-as-an-A}} . endfm show eqs . Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationAwkwardCaseApril2025.expected0000664000175000017510000000005615036121435027507 0ustar nileshnilesheq ["raw thumb"] : s(s(N:Nat)) = N:Nat . Bye. Maude-Maude3.5.1/tests/ResolvedBugs/viewInstantiationAwkwardCaseApril20250000775000175000017510000000053415036121435025713 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude -no-prelude \ < $srcdir/viewInstantiationAwkwardCaseApril2025.maude -no-banner -no-advise \ > viewInstantiationAwkwardCaseApril2025.out 2>&1 diff $srcdir/viewInstantiationAwkwardCaseApril2025.expected viewInstantiationAwkwardCaseApril2025.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/variantUnifyJune2020.maude0000664000175000017510000000106715036121435023454 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check for substitution size bug that affected both UnifierFilter *** and VariantFolder, because subpatterns were being compiled before *** all abstraction variables were added. *** fmod A-UNIF is sorts List Elt . subsort Elt < List . op f : List List -> List [assoc] . op j : List List -> List [assoc comm id: 1] . op 1 : -> List . vars A B C D G H I S U V W X Y Z : List . var E : Elt . endfm variant unify j(A, f(B, E, C), f(D, E, j(G, H), I)) =? j(U, f(V, W), f(X, j(Y, Z), S)) . Maude-Maude3.5.1/tests/ResolvedBugs/variantUnifyJune2020.expected0000664000175000017510000026052115036121435024164 0ustar nileshnilesh========================================== variant unify in A-UNIF : j(A, f(B, E, C), f(D, E, j(G, H), I)) =? j(U, f(V, W), f(X, j(Y, Z), S)) . Unifier 1 rewrites: 0 A --> j(%14:List, f(%8:List, %9:List), f(%10:List, j(%11:List, %12:List), %13:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%14:List, f(%1:List, %2:Elt, %3:List), f(%4:List, %2:Elt, j(%5:List, %6:List), %7:List)) V --> %8:List W --> %9:List X --> %10:List Z --> %11:List Y --> %12:List S --> %13:List Unifier 2 rewrites: 0 A --> j(%12:List, f(%8:List, j(%9:List, %10:List), %11:List)) B --> %1:List E --> %2:Elt C --> f(%13:List, %7:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> j(%12:List, f(%3:List, %2:Elt, j(%4:List, %5:List), %6:List)) V --> f(%1:List, %2:Elt, %13:List) W --> %7:List X --> %8:List Z --> %9:List Y --> %10:List S --> %11:List Unifier 3 rewrites: 0 A --> j(%12:List, f(%8:List, j(%9:List, %10:List), %11:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%12:List, f(%4:List, %2:Elt, j(%5:List, %6:List), %7:List)) V --> f(%1:List, %2:Elt) W --> %3:List X --> %8:List Z --> %9:List Y --> %10:List S --> %11:List Unifier 4 rewrites: 0 A --> j(%12:List, f(%8:List, j(%9:List, %10:List), %11:List)) B --> f(%7:List, %13:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> j(%12:List, f(%3:List, %1:Elt, j(%4:List, %5:List), %6:List)) V --> %7:List W --> f(%13:List, %1:Elt, %2:List) X --> %8:List Z --> %9:List Y --> %10:List S --> %11:List Unifier 5 rewrites: 0 A --> j(%12:List, f(%8:List, j(%9:List, %10:List), %11:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%12:List, f(%4:List, %2:Elt, j(%5:List, %6:List), %7:List)) V --> %1:List W --> f(%2:Elt, %3:List) X --> %8:List Z --> %9:List Y --> %10:List S --> %11:List Unifier 6 rewrites: 0 A --> j(%12:List, f(%8:List, j(%9:List, %10:List), %11:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%13:List, %7:List) U --> j(%12:List, f(%1:List, %2:Elt, %3:List)) V --> f(%4:List, %2:Elt, j(%5:List, %6:List), %13:List) W --> %7:List X --> %8:List Z --> %9:List Y --> %10:List S --> %11:List Unifier 7 rewrites: 0 A --> j(%10:List, f(%6:List, j(%7:List, %8:List), %9:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%11:List, %12:List) G --> 1 I --> %5:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> f(%4:List, %2:Elt, %11:List) W --> f(%12:List, %5:List) X --> %6:List Z --> %7:List Y --> %8:List S --> %9:List Unifier 8 rewrites: 0 A --> j(%10:List, f(%6:List, j(%7:List, %8:List), %9:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%11:List, %12:List) I --> %5:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> f(%4:List, %2:Elt, %11:List) W --> f(%12:List, %5:List) X --> %6:List Z --> %7:List Y --> %8:List S --> %9:List Unifier 9 rewrites: 0 A --> j(%12:List, f(%8:List, j(%9:List, %10:List), %11:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%12:List, f(%1:List, %2:Elt, %3:List)) V --> f(%4:List, %2:Elt, j(%5:List, %6:List)) W --> %7:List X --> %8:List Z --> %9:List Y --> %10:List S --> %11:List Unifier 10 rewrites: 0 A --> j(%12:List, f(%8:List, j(%9:List, %10:List), %11:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%12:List, f(%1:List, %2:Elt, %3:List)) V --> f(%4:List, %2:Elt) W --> f(j(%5:List, %6:List), %7:List) X --> %8:List Z --> %9:List Y --> %10:List S --> %11:List Unifier 11 rewrites: 0 A --> j(%12:List, f(%8:List, j(%9:List, %10:List), %11:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%7:List, %13:List) H --> %4:List G --> %5:List I --> %6:List U --> j(%12:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> f(%13:List, %2:Elt, j(%4:List, %5:List), %6:List) X --> %8:List Z --> %9:List Y --> %10:List S --> %11:List Unifier 12 rewrites: 0 A --> j(%12:List, f(%8:List, j(%9:List, %10:List), %11:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%12:List, f(%1:List, %2:Elt, %3:List)) V --> %4:List W --> f(%2:Elt, j(%5:List, %6:List), %7:List) X --> %8:List Z --> %9:List Y --> %10:List S --> %11:List Unifier 13 rewrites: 0 A --> j(%12:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> f(%13:List, j(%9:List, %10:List), %11:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> j(%12:List, f(%3:List, %2:Elt, j(%4:List, %5:List), %6:List)) V --> %7:List W --> %8:List X --> f(%1:List, %2:Elt, %13:List) Z --> %9:List Y --> %10:List S --> %11:List Unifier 14 rewrites: 0 A --> j(%12:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> f(j(%9:List, %10:List), %11:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> j(%12:List, f(%3:List, %2:Elt, j(%4:List, %5:List), %6:List)) V --> %7:List W --> %8:List X --> f(%1:List, %2:Elt) Z --> %9:List Y --> %10:List S --> %11:List Unifier 15 rewrites: 0 A --> j(%10:List, f(%6:List, %7:List)) B --> f(%8:List, %11:List) E --> %1:Elt C --> f(%12:List, %9:List) D --> %2:List H --> %3:List G --> %4:List I --> %5:List U --> j(%10:List, f(%2:List, %1:Elt, j(%3:List, %4:List), %5:List)) V --> %6:List W --> %7:List X --> %8:List Z --> f(%11:List, %1:Elt, %12:List) Y --> 1 S --> %9:List Unifier 16 rewrites: 0 A --> j(%10:List, f(%6:List, %7:List)) B --> f(%8:List, %11:List) E --> %1:Elt C --> f(%12:List, %9:List) D --> %2:List H --> %3:List G --> %4:List I --> %5:List U --> j(%10:List, f(%2:List, %1:Elt, j(%3:List, %4:List), %5:List)) V --> %6:List W --> %7:List X --> %8:List Z --> 1 Y --> f(%11:List, %1:Elt, %12:List) S --> %9:List Unifier 17 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> f(%9:List, %11:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> j(%10:List, f(%3:List, %1:Elt, j(%4:List, %5:List), %6:List)) V --> %7:List W --> %8:List X --> %9:List Z --> f(%11:List, %1:Elt) Y --> 1 S --> %2:List Unifier 18 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> f(%9:List, %11:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> j(%10:List, f(%3:List, %1:Elt, j(%4:List, %5:List), %6:List)) V --> %7:List W --> %8:List X --> %9:List Z --> 1 Y --> f(%11:List, %1:Elt) S --> %2:List Unifier 19 rewrites: 0 A --> j(%12:List, f(%7:List, %8:List)) B --> f(%9:List, j(%10:List, %11:List), %13:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> j(%12:List, f(%3:List, %1:Elt, j(%4:List, %5:List), %6:List)) V --> %7:List W --> %8:List X --> %9:List Z --> %10:List Y --> %11:List S --> f(%13:List, %1:Elt, %2:List) Unifier 20 rewrites: 0 A --> j(%12:List, f(%7:List, %8:List)) B --> f(%9:List, j(%10:List, %11:List)) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> j(%12:List, f(%3:List, %1:Elt, j(%4:List, %5:List), %6:List)) V --> %7:List W --> %8:List X --> %9:List Z --> %10:List Y --> %11:List S --> f(%1:Elt, %2:List) Unifier 21 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> f(%11:List, %9:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> j(%10:List, f(%3:List, %2:Elt, j(%4:List, %5:List), %6:List)) V --> %7:List W --> %8:List X --> %1:List Z --> f(%2:Elt, %11:List) Y --> 1 S --> %9:List Unifier 22 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> f(%11:List, %9:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> j(%10:List, f(%3:List, %2:Elt, j(%4:List, %5:List), %6:List)) V --> %7:List W --> %8:List X --> %1:List Z --> 1 Y --> f(%2:Elt, %11:List) S --> %9:List Unifier 23 rewrites: 0 A --> j(%10:List, f(%8:List, %9:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%10:List, f(%4:List, %2:Elt, j(%5:List, %6:List), %7:List)) V --> %8:List W --> %9:List X --> %1:List Z --> %2:Elt Y --> 1 S --> %3:List Unifier 24 rewrites: 0 A --> j(%10:List, f(%8:List, %9:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%10:List, f(%4:List, %2:Elt, j(%5:List, %6:List), %7:List)) V --> %8:List W --> %9:List X --> %1:List Z --> 1 Y --> %2:Elt S --> %3:List Unifier 25 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%12:List, j(%8:List, %9:List), %10:List) D --> %3:List H --> %4:List G --> %5:List I --> f(%11:List, %7:List) U --> %6:List V --> f(%3:List, %2:Elt, j(%4:List, %5:List), %11:List) W --> %7:List X --> f(%1:List, %2:Elt, %12:List) Z --> %8:List Y --> %9:List S --> %10:List Unifier 26 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%11:List, j(%6:List, %7:List), %8:List) D --> %3:List H --> f(%9:List, %10:List) G --> 1 I --> %4:List U --> %5:List V --> f(%3:List, %2:Elt, %9:List) W --> f(%10:List, %4:List) X --> f(%1:List, %2:Elt, %11:List) Z --> %6:List Y --> %7:List S --> %8:List Unifier 27 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%11:List, j(%6:List, %7:List), %8:List) D --> %3:List H --> 1 G --> f(%9:List, %10:List) I --> %4:List U --> %5:List V --> f(%3:List, %2:Elt, %9:List) W --> f(%10:List, %4:List) X --> f(%1:List, %2:Elt, %11:List) Z --> %6:List Y --> %7:List S --> %8:List Unifier 28 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%11:List, j(%8:List, %9:List), %10:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %2:Elt, j(%4:List, %5:List)) W --> %6:List X --> f(%1:List, %2:Elt, %11:List) Z --> %8:List Y --> %9:List S --> %10:List Unifier 29 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%11:List, j(%8:List, %9:List), %10:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %2:Elt) W --> f(j(%4:List, %5:List), %6:List) X --> f(%1:List, %2:Elt, %11:List) Z --> %8:List Y --> %9:List S --> %10:List Unifier 30 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%12:List, j(%8:List, %9:List), %10:List) D --> f(%7:List, %11:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%11:List, %2:Elt, j(%3:List, %4:List), %5:List) X --> f(%1:List, %2:Elt, %12:List) Z --> %8:List Y --> %9:List S --> %10:List Unifier 31 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%11:List, j(%8:List, %9:List), %10:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %3:List W --> f(%2:Elt, j(%4:List, %5:List), %6:List) X --> f(%1:List, %2:Elt, %11:List) Z --> %8:List Y --> %9:List S --> %10:List Unifier 32 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(j(%8:List, %9:List), %10:List) D --> %3:List H --> %4:List G --> %5:List I --> f(%11:List, %7:List) U --> %6:List V --> f(%3:List, %2:Elt, j(%4:List, %5:List), %11:List) W --> %7:List X --> f(%1:List, %2:Elt) Z --> %8:List Y --> %9:List S --> %10:List Unifier 33 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(j(%6:List, %7:List), %8:List) D --> %3:List H --> f(%9:List, %10:List) G --> 1 I --> %4:List U --> %5:List V --> f(%3:List, %2:Elt, %9:List) W --> f(%10:List, %4:List) X --> f(%1:List, %2:Elt) Z --> %6:List Y --> %7:List S --> %8:List Unifier 34 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(j(%6:List, %7:List), %8:List) D --> %3:List H --> 1 G --> f(%9:List, %10:List) I --> %4:List U --> %5:List V --> f(%3:List, %2:Elt, %9:List) W --> f(%10:List, %4:List) X --> f(%1:List, %2:Elt) Z --> %6:List Y --> %7:List S --> %8:List Unifier 35 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(j(%8:List, %9:List), %10:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %2:Elt, j(%4:List, %5:List)) W --> %6:List X --> f(%1:List, %2:Elt) Z --> %8:List Y --> %9:List S --> %10:List Unifier 36 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(j(%8:List, %9:List), %10:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %2:Elt) W --> f(j(%4:List, %5:List), %6:List) X --> f(%1:List, %2:Elt) Z --> %8:List Y --> %9:List S --> %10:List Unifier 37 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(j(%8:List, %9:List), %10:List) D --> f(%7:List, %11:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%11:List, %2:Elt, j(%3:List, %4:List), %5:List) X --> f(%1:List, %2:Elt) Z --> %8:List Y --> %9:List S --> %10:List Unifier 38 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(j(%8:List, %9:List), %10:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %3:List W --> f(%2:Elt, j(%4:List, %5:List), %6:List) X --> f(%1:List, %2:Elt) Z --> %8:List Y --> %9:List S --> %10:List Unifier 39 rewrites: 0 A --> %5:List B --> f(%7:List, %10:List) E --> %1:Elt C --> f(%11:List, %8:List) D --> %2:List H --> %3:List G --> %4:List I --> f(%9:List, %6:List) U --> %5:List V --> f(%2:List, %1:Elt, j(%3:List, %4:List), %9:List) W --> %6:List X --> %7:List Z --> f(%10:List, %1:Elt, %11:List) Y --> 1 S --> %8:List Unifier 40 rewrites: 0 A --> %5:List B --> f(%7:List, %10:List) E --> %1:Elt C --> f(%11:List, %8:List) D --> %2:List H --> %3:List G --> %4:List I --> f(%9:List, %6:List) U --> %5:List V --> f(%2:List, %1:Elt, j(%3:List, %4:List), %9:List) W --> %6:List X --> %7:List Z --> 1 Y --> f(%10:List, %1:Elt, %11:List) S --> %8:List Unifier 41 rewrites: 0 A --> %4:List B --> f(%5:List, %9:List) E --> %1:Elt C --> f(%10:List, %6:List) D --> %2:List H --> f(%7:List, %8:List) G --> 1 I --> %3:List U --> %4:List V --> f(%2:List, %1:Elt, %7:List) W --> f(%8:List, %3:List) X --> %5:List Z --> f(%9:List, %1:Elt, %10:List) Y --> 1 S --> %6:List Unifier 42 rewrites: 0 A --> %4:List B --> f(%5:List, %9:List) E --> %1:Elt C --> f(%10:List, %6:List) D --> %2:List H --> f(%7:List, %8:List) G --> 1 I --> %3:List U --> %4:List V --> f(%2:List, %1:Elt, %7:List) W --> f(%8:List, %3:List) X --> %5:List Z --> 1 Y --> f(%9:List, %1:Elt, %10:List) S --> %6:List Unifier 43 rewrites: 0 A --> %4:List B --> f(%5:List, %9:List) E --> %1:Elt C --> f(%10:List, %6:List) D --> %2:List H --> 1 G --> f(%7:List, %8:List) I --> %3:List U --> %4:List V --> f(%2:List, %1:Elt, %7:List) W --> f(%8:List, %3:List) X --> %5:List Z --> f(%9:List, %1:Elt, %10:List) Y --> 1 S --> %6:List Unifier 44 rewrites: 0 A --> %4:List B --> f(%5:List, %9:List) E --> %1:Elt C --> f(%10:List, %6:List) D --> %2:List H --> 1 G --> f(%7:List, %8:List) I --> %3:List U --> %4:List V --> f(%2:List, %1:Elt, %7:List) W --> f(%8:List, %3:List) X --> %5:List Z --> 1 Y --> f(%9:List, %1:Elt, %10:List) S --> %6:List Unifier 45 rewrites: 0 A --> %6:List B --> f(%7:List, %9:List) E --> %1:Elt C --> f(%10:List, %8:List) D --> %2:List H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> f(%2:List, %1:Elt, j(%3:List, %4:List)) W --> %5:List X --> %7:List Z --> f(%9:List, %1:Elt, %10:List) Y --> 1 S --> %8:List Unifier 46 rewrites: 0 A --> %6:List B --> f(%7:List, %9:List) E --> %1:Elt C --> f(%10:List, %8:List) D --> %2:List H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> f(%2:List, %1:Elt, j(%3:List, %4:List)) W --> %5:List X --> %7:List Z --> 1 Y --> f(%9:List, %1:Elt, %10:List) S --> %8:List Unifier 47 rewrites: 0 A --> %6:List B --> f(%7:List, %9:List) E --> %1:Elt C --> f(%10:List, %8:List) D --> %2:List H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> f(%2:List, %1:Elt) W --> f(j(%3:List, %4:List), %5:List) X --> %7:List Z --> f(%9:List, %1:Elt, %10:List) Y --> 1 S --> %8:List Unifier 48 rewrites: 0 A --> %6:List B --> f(%7:List, %9:List) E --> %1:Elt C --> f(%10:List, %8:List) D --> %2:List H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> f(%2:List, %1:Elt) W --> f(j(%3:List, %4:List), %5:List) X --> %7:List Z --> 1 Y --> f(%9:List, %1:Elt, %10:List) S --> %8:List Unifier 49 rewrites: 0 A --> %5:List B --> f(%7:List, %10:List) E --> %1:Elt C --> f(%11:List, %8:List) D --> f(%6:List, %9:List) H --> %2:List G --> %3:List I --> %4:List U --> %5:List V --> %6:List W --> f(%9:List, %1:Elt, j(%2:List, %3:List), %4:List) X --> %7:List Z --> f(%10:List, %1:Elt, %11:List) Y --> 1 S --> %8:List Unifier 50 rewrites: 0 A --> %5:List B --> f(%7:List, %10:List) E --> %1:Elt C --> f(%11:List, %8:List) D --> f(%6:List, %9:List) H --> %2:List G --> %3:List I --> %4:List U --> %5:List V --> %6:List W --> f(%9:List, %1:Elt, j(%2:List, %3:List), %4:List) X --> %7:List Z --> 1 Y --> f(%10:List, %1:Elt, %11:List) S --> %8:List Unifier 51 rewrites: 0 A --> %6:List B --> f(%7:List, %9:List) E --> %1:Elt C --> f(%10:List, %8:List) D --> %2:List H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %2:List W --> f(%1:Elt, j(%3:List, %4:List), %5:List) X --> %7:List Z --> f(%9:List, %1:Elt, %10:List) Y --> 1 S --> %8:List Unifier 52 rewrites: 0 A --> %6:List B --> f(%7:List, %9:List) E --> %1:Elt C --> f(%10:List, %8:List) D --> %2:List H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %2:List W --> f(%1:Elt, j(%3:List, %4:List), %5:List) X --> %7:List Z --> 1 Y --> f(%9:List, %1:Elt, %10:List) S --> %8:List Unifier 53 rewrites: 0 A --> %6:List B --> f(%8:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %7:List) U --> %6:List V --> f(%3:List, %1:Elt, j(%4:List, %5:List), %9:List) W --> %7:List X --> %8:List Z --> f(%10:List, %1:Elt) Y --> 1 S --> %2:List Unifier 54 rewrites: 0 A --> %6:List B --> f(%8:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %7:List) U --> %6:List V --> f(%3:List, %1:Elt, j(%4:List, %5:List), %9:List) W --> %7:List X --> %8:List Z --> 1 Y --> f(%10:List, %1:Elt) S --> %2:List Unifier 55 rewrites: 0 A --> %5:List B --> f(%6:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> %4:List U --> %5:List V --> f(%3:List, %1:Elt, %7:List) W --> f(%8:List, %4:List) X --> %6:List Z --> f(%9:List, %1:Elt) Y --> 1 S --> %2:List Unifier 56 rewrites: 0 A --> %5:List B --> f(%6:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> %4:List U --> %5:List V --> f(%3:List, %1:Elt, %7:List) W --> f(%8:List, %4:List) X --> %6:List Z --> 1 Y --> f(%9:List, %1:Elt) S --> %2:List Unifier 57 rewrites: 0 A --> %5:List B --> f(%6:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> %4:List U --> %5:List V --> f(%3:List, %1:Elt, %7:List) W --> f(%8:List, %4:List) X --> %6:List Z --> f(%9:List, %1:Elt) Y --> 1 S --> %2:List Unifier 58 rewrites: 0 A --> %5:List B --> f(%6:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> %4:List U --> %5:List V --> f(%3:List, %1:Elt, %7:List) W --> f(%8:List, %4:List) X --> %6:List Z --> 1 Y --> f(%9:List, %1:Elt) S --> %2:List Unifier 59 rewrites: 0 A --> %7:List B --> f(%8:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %1:Elt, j(%4:List, %5:List)) W --> %6:List X --> %8:List Z --> f(%9:List, %1:Elt) Y --> 1 S --> %2:List Unifier 60 rewrites: 0 A --> %7:List B --> f(%8:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %1:Elt, j(%4:List, %5:List)) W --> %6:List X --> %8:List Z --> 1 Y --> f(%9:List, %1:Elt) S --> %2:List Unifier 61 rewrites: 0 A --> %7:List B --> f(%8:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %1:Elt) W --> f(j(%4:List, %5:List), %6:List) X --> %8:List Z --> f(%9:List, %1:Elt) Y --> 1 S --> %2:List Unifier 62 rewrites: 0 A --> %7:List B --> f(%8:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %1:Elt) W --> f(j(%4:List, %5:List), %6:List) X --> %8:List Z --> 1 Y --> f(%9:List, %1:Elt) S --> %2:List Unifier 63 rewrites: 0 A --> %6:List B --> f(%8:List, %10:List) E --> %1:Elt C --> %2:List D --> f(%7:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%9:List, %1:Elt, j(%3:List, %4:List), %5:List) X --> %8:List Z --> f(%10:List, %1:Elt) Y --> 1 S --> %2:List Unifier 64 rewrites: 0 A --> %6:List B --> f(%8:List, %10:List) E --> %1:Elt C --> %2:List D --> f(%7:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%9:List, %1:Elt, j(%3:List, %4:List), %5:List) X --> %8:List Z --> 1 Y --> f(%10:List, %1:Elt) S --> %2:List Unifier 65 rewrites: 0 A --> %7:List B --> f(%8:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %3:List W --> f(%1:Elt, j(%4:List, %5:List), %6:List) X --> %8:List Z --> f(%9:List, %1:Elt) Y --> 1 S --> %2:List Unifier 66 rewrites: 0 A --> %7:List B --> f(%8:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %3:List W --> f(%1:Elt, j(%4:List, %5:List), %6:List) X --> %8:List Z --> 1 Y --> f(%9:List, %1:Elt) S --> %2:List Unifier 67 rewrites: 0 A --> %6:List B --> f(%8:List, j(%9:List, %10:List), %12:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> f(%11:List, %7:List) U --> %6:List V --> f(%3:List, %1:Elt, j(%4:List, %5:List), %11:List) W --> %7:List X --> %8:List Z --> %9:List Y --> %10:List S --> f(%12:List, %1:Elt, %2:List) Unifier 68 rewrites: 0 A --> %5:List B --> f(%6:List, j(%7:List, %8:List), %11:List) E --> %1:Elt C --> %2:List D --> %3:List H --> f(%9:List, %10:List) G --> 1 I --> %4:List U --> %5:List V --> f(%3:List, %1:Elt, %9:List) W --> f(%10:List, %4:List) X --> %6:List Z --> %7:List Y --> %8:List S --> f(%11:List, %1:Elt, %2:List) Unifier 69 rewrites: 0 A --> %5:List B --> f(%6:List, j(%7:List, %8:List), %11:List) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(%9:List, %10:List) I --> %4:List U --> %5:List V --> f(%3:List, %1:Elt, %9:List) W --> f(%10:List, %4:List) X --> %6:List Z --> %7:List Y --> %8:List S --> f(%11:List, %1:Elt, %2:List) Unifier 70 rewrites: 0 A --> %7:List B --> f(%8:List, j(%9:List, %10:List), %11:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %1:Elt, j(%4:List, %5:List)) W --> %6:List X --> %8:List Z --> %9:List Y --> %10:List S --> f(%11:List, %1:Elt, %2:List) Unifier 71 rewrites: 0 A --> %7:List B --> f(%8:List, j(%9:List, %10:List), %11:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %1:Elt) W --> f(j(%4:List, %5:List), %6:List) X --> %8:List Z --> %9:List Y --> %10:List S --> f(%11:List, %1:Elt, %2:List) Unifier 72 rewrites: 0 A --> %6:List B --> f(%8:List, j(%9:List, %10:List), %12:List) E --> %1:Elt C --> %2:List D --> f(%7:List, %11:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%11:List, %1:Elt, j(%3:List, %4:List), %5:List) X --> %8:List Z --> %9:List Y --> %10:List S --> f(%12:List, %1:Elt, %2:List) Unifier 73 rewrites: 0 A --> %7:List B --> f(%8:List, j(%9:List, %10:List), %11:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %3:List W --> f(%1:Elt, j(%4:List, %5:List), %6:List) X --> %8:List Z --> %9:List Y --> %10:List S --> f(%11:List, %1:Elt, %2:List) Unifier 74 rewrites: 0 A --> %6:List B --> f(%8:List, j(%9:List, %10:List)) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> f(%11:List, %7:List) U --> %6:List V --> f(%3:List, %1:Elt, j(%4:List, %5:List), %11:List) W --> %7:List X --> %8:List Z --> %9:List Y --> %10:List S --> f(%1:Elt, %2:List) Unifier 75 rewrites: 0 A --> %5:List B --> f(%6:List, j(%7:List, %8:List)) E --> %1:Elt C --> %2:List D --> %3:List H --> f(%9:List, %10:List) G --> 1 I --> %4:List U --> %5:List V --> f(%3:List, %1:Elt, %9:List) W --> f(%10:List, %4:List) X --> %6:List Z --> %7:List Y --> %8:List S --> f(%1:Elt, %2:List) Unifier 76 rewrites: 0 A --> %5:List B --> f(%6:List, j(%7:List, %8:List)) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(%9:List, %10:List) I --> %4:List U --> %5:List V --> f(%3:List, %1:Elt, %9:List) W --> f(%10:List, %4:List) X --> %6:List Z --> %7:List Y --> %8:List S --> f(%1:Elt, %2:List) Unifier 77 rewrites: 0 A --> %7:List B --> f(%8:List, j(%9:List, %10:List)) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %1:Elt, j(%4:List, %5:List)) W --> %6:List X --> %8:List Z --> %9:List Y --> %10:List S --> f(%1:Elt, %2:List) Unifier 78 rewrites: 0 A --> %7:List B --> f(%8:List, j(%9:List, %10:List)) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %1:Elt) W --> f(j(%4:List, %5:List), %6:List) X --> %8:List Z --> %9:List Y --> %10:List S --> f(%1:Elt, %2:List) Unifier 79 rewrites: 0 A --> %6:List B --> f(%8:List, j(%9:List, %10:List)) E --> %1:Elt C --> %2:List D --> f(%7:List, %11:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%11:List, %1:Elt, j(%3:List, %4:List), %5:List) X --> %8:List Z --> %9:List Y --> %10:List S --> f(%1:Elt, %2:List) Unifier 80 rewrites: 0 A --> %7:List B --> f(%8:List, j(%9:List, %10:List)) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %3:List W --> f(%1:Elt, j(%4:List, %5:List), %6:List) X --> %8:List Z --> %9:List Y --> %10:List S --> f(%1:Elt, %2:List) Unifier 81 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %7:List) U --> %6:List V --> f(%3:List, %2:Elt, j(%4:List, %5:List), %9:List) W --> %7:List X --> %1:List Z --> f(%2:Elt, %10:List) Y --> 1 S --> %8:List Unifier 82 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %7:List) U --> %6:List V --> f(%3:List, %2:Elt, j(%4:List, %5:List), %9:List) W --> %7:List X --> %1:List Z --> 1 Y --> f(%2:Elt, %10:List) S --> %8:List Unifier 83 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%9:List, %6:List) D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> %4:List U --> %5:List V --> f(%3:List, %2:Elt, %7:List) W --> f(%8:List, %4:List) X --> %1:List Z --> f(%2:Elt, %9:List) Y --> 1 S --> %6:List Unifier 84 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%9:List, %6:List) D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> %4:List U --> %5:List V --> f(%3:List, %2:Elt, %7:List) W --> f(%8:List, %4:List) X --> %1:List Z --> 1 Y --> f(%2:Elt, %9:List) S --> %6:List Unifier 85 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%9:List, %6:List) D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> %4:List U --> %5:List V --> f(%3:List, %2:Elt, %7:List) W --> f(%8:List, %4:List) X --> %1:List Z --> f(%2:Elt, %9:List) Y --> 1 S --> %6:List Unifier 86 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%9:List, %6:List) D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> %4:List U --> %5:List V --> f(%3:List, %2:Elt, %7:List) W --> f(%8:List, %4:List) X --> %1:List Z --> 1 Y --> f(%2:Elt, %9:List) S --> %6:List Unifier 87 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%9:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %2:Elt, j(%4:List, %5:List)) W --> %6:List X --> %1:List Z --> f(%2:Elt, %9:List) Y --> 1 S --> %8:List Unifier 88 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%9:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %2:Elt, j(%4:List, %5:List)) W --> %6:List X --> %1:List Z --> 1 Y --> f(%2:Elt, %9:List) S --> %8:List Unifier 89 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%9:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %2:Elt) W --> f(j(%4:List, %5:List), %6:List) X --> %1:List Z --> f(%2:Elt, %9:List) Y --> 1 S --> %8:List Unifier 90 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%9:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%3:List, %2:Elt) W --> f(j(%4:List, %5:List), %6:List) X --> %1:List Z --> 1 Y --> f(%2:Elt, %9:List) S --> %8:List Unifier 91 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %8:List) D --> f(%7:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%9:List, %2:Elt, j(%3:List, %4:List), %5:List) X --> %1:List Z --> f(%2:Elt, %10:List) Y --> 1 S --> %8:List Unifier 92 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %8:List) D --> f(%7:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%9:List, %2:Elt, j(%3:List, %4:List), %5:List) X --> %1:List Z --> 1 Y --> f(%2:Elt, %10:List) S --> %8:List Unifier 93 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%9:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %3:List W --> f(%2:Elt, j(%4:List, %5:List), %6:List) X --> %1:List Z --> f(%2:Elt, %9:List) Y --> 1 S --> %8:List Unifier 94 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%9:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %3:List W --> f(%2:Elt, j(%4:List, %5:List), %6:List) X --> %1:List Z --> 1 Y --> f(%2:Elt, %9:List) S --> %8:List Unifier 95 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%9:List, %8:List) U --> %7:List V --> f(%4:List, %2:Elt, j(%5:List, %6:List), %9:List) W --> %8:List X --> %1:List Z --> %2:Elt Y --> 1 S --> %3:List Unifier 96 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%9:List, %8:List) U --> %7:List V --> f(%4:List, %2:Elt, j(%5:List, %6:List), %9:List) W --> %8:List X --> %1:List Z --> 1 Y --> %2:Elt S --> %3:List Unifier 97 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%7:List, %8:List) G --> 1 I --> %5:List U --> %6:List V --> f(%4:List, %2:Elt, %7:List) W --> f(%8:List, %5:List) X --> %1:List Z --> %2:Elt Y --> 1 S --> %3:List Unifier 98 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%7:List, %8:List) G --> 1 I --> %5:List U --> %6:List V --> f(%4:List, %2:Elt, %7:List) W --> f(%8:List, %5:List) X --> %1:List Z --> 1 Y --> %2:Elt S --> %3:List Unifier 99 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%7:List, %8:List) I --> %5:List U --> %6:List V --> f(%4:List, %2:Elt, %7:List) W --> f(%8:List, %5:List) X --> %1:List Z --> %2:Elt Y --> 1 S --> %3:List Unifier 100 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%7:List, %8:List) I --> %5:List U --> %6:List V --> f(%4:List, %2:Elt, %7:List) W --> f(%8:List, %5:List) X --> %1:List Z --> 1 Y --> %2:Elt S --> %3:List Unifier 101 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> f(%4:List, %2:Elt, j(%5:List, %6:List)) W --> %7:List X --> %1:List Z --> %2:Elt Y --> 1 S --> %3:List Unifier 102 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> f(%4:List, %2:Elt, j(%5:List, %6:List)) W --> %7:List X --> %1:List Z --> 1 Y --> %2:Elt S --> %3:List Unifier 103 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> f(%4:List, %2:Elt) W --> f(j(%5:List, %6:List), %7:List) X --> %1:List Z --> %2:Elt Y --> 1 S --> %3:List Unifier 104 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> f(%4:List, %2:Elt) W --> f(j(%5:List, %6:List), %7:List) X --> %1:List Z --> 1 Y --> %2:Elt S --> %3:List Unifier 105 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %9:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %8:List W --> f(%9:List, %2:Elt, j(%4:List, %5:List), %6:List) X --> %1:List Z --> %2:Elt Y --> 1 S --> %3:List Unifier 106 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %9:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %8:List W --> f(%9:List, %2:Elt, j(%4:List, %5:List), %6:List) X --> %1:List Z --> 1 Y --> %2:Elt S --> %3:List Unifier 107 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> %4:List W --> f(%2:Elt, j(%5:List, %6:List), %7:List) X --> %1:List Z --> %2:Elt Y --> 1 S --> %3:List Unifier 108 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> %4:List W --> f(%2:Elt, j(%5:List, %6:List), %7:List) X --> %1:List Z --> 1 Y --> %2:Elt S --> %3:List Unifier 109 rewrites: 0 A --> j(%12:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%13:List, j(%9:List, %10:List), %11:List) U --> j(%12:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> f(%4:List, %2:Elt, j(%5:List, %6:List), %13:List) Z --> %9:List Y --> %10:List S --> %11:List Unifier 110 rewrites: 0 A --> j(%8:List, f(%5:List, %6:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%9:List, %10:List) G --> 1 I --> f(%11:List, %7:List) U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %5:List W --> %6:List X --> f(%4:List, %2:Elt, %9:List) Z --> f(%10:List, %11:List) Y --> 1 S --> %7:List Unifier 111 rewrites: 0 A --> j(%8:List, f(%5:List, %6:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%9:List, %10:List) G --> 1 I --> f(%11:List, %7:List) U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %5:List W --> %6:List X --> f(%4:List, %2:Elt, %9:List) Z --> 1 Y --> f(%10:List, %11:List) S --> %7:List Unifier 112 rewrites: 0 A --> j(%8:List, f(%5:List, %6:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%9:List, %10:List) I --> f(%11:List, %7:List) U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %5:List W --> %6:List X --> f(%4:List, %2:Elt, %9:List) Z --> f(%10:List, %11:List) Y --> 1 S --> %7:List Unifier 113 rewrites: 0 A --> j(%8:List, f(%5:List, %6:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%9:List, %10:List) I --> f(%11:List, %7:List) U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %5:List W --> %6:List X --> f(%4:List, %2:Elt, %9:List) Z --> 1 Y --> f(%10:List, %11:List) S --> %7:List Unifier 114 rewrites: 0 A --> j(%10:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%11:List, j(%8:List, %9:List), %12:List) G --> 1 I --> %5:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> f(%4:List, %2:Elt, %11:List) Z --> %8:List Y --> %9:List S --> f(%12:List, %5:List) Unifier 115 rewrites: 0 A --> j(%10:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%11:List, j(%8:List, %9:List), %12:List) I --> %5:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> f(%4:List, %2:Elt, %11:List) Z --> %8:List Y --> %9:List S --> f(%12:List, %5:List) Unifier 116 rewrites: 0 A --> j(%10:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%11:List, j(%8:List, %9:List)) G --> 1 I --> %5:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> f(%4:List, %2:Elt, %11:List) Z --> %8:List Y --> %9:List S --> %5:List Unifier 117 rewrites: 0 A --> j(%10:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%11:List, j(%8:List, %9:List)) I --> %5:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> f(%4:List, %2:Elt, %11:List) Z --> %8:List Y --> %9:List S --> %5:List Unifier 118 rewrites: 0 A --> j(%12:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(j(%9:List, %10:List), %11:List) U --> j(%12:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> f(%4:List, %2:Elt, j(%5:List, %6:List)) Z --> %9:List Y --> %10:List S --> %11:List Unifier 119 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%11:List, %9:List) U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> f(%4:List, %2:Elt) Z --> f(j(%5:List, %6:List), %11:List) Y --> 1 S --> %9:List Unifier 120 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%11:List, %9:List) U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> f(%4:List, %2:Elt) Z --> 1 Y --> f(j(%5:List, %6:List), %11:List) S --> %9:List Unifier 121 rewrites: 0 A --> j(%10:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(j(%8:List, %9:List), %11:List) G --> 1 I --> %5:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> f(%4:List, %2:Elt) Z --> %8:List Y --> %9:List S --> f(%11:List, %5:List) Unifier 122 rewrites: 0 A --> j(%10:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(j(%8:List, %9:List), %11:List) I --> %5:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> f(%4:List, %2:Elt) Z --> %8:List Y --> %9:List S --> f(%11:List, %5:List) Unifier 123 rewrites: 0 A --> j(%8:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> j(%9:List, %11:List) G --> j(%10:List, %12:List) I --> %5:List U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> f(%4:List, %2:Elt) Z --> j(%9:List, %10:List) Y --> j(%11:List, %12:List) S --> %5:List Unifier 124 rewrites: 0 A --> j(%10:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %11:List) H --> %4:List G --> %5:List I --> f(%12:List, %9:List) U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> %8:List Z --> f(%11:List, %2:Elt, j(%4:List, %5:List), %12:List) Y --> 1 S --> %9:List Unifier 125 rewrites: 0 A --> j(%10:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %11:List) H --> %4:List G --> %5:List I --> f(%12:List, %9:List) U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> %8:List Z --> 1 Y --> f(%11:List, %2:Elt, j(%4:List, %5:List), %12:List) S --> %9:List Unifier 126 rewrites: 0 A --> j(%8:List, f(%5:List, %6:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%7:List, %9:List) H --> f(%10:List, %11:List) G --> 1 I --> %4:List U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %5:List W --> %6:List X --> %7:List Z --> f(%9:List, %2:Elt, %10:List) Y --> 1 S --> f(%11:List, %4:List) Unifier 127 rewrites: 0 A --> j(%8:List, f(%5:List, %6:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%7:List, %9:List) H --> f(%10:List, %11:List) G --> 1 I --> %4:List U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %5:List W --> %6:List X --> %7:List Z --> 1 Y --> f(%9:List, %2:Elt, %10:List) S --> f(%11:List, %4:List) Unifier 128 rewrites: 0 A --> j(%8:List, f(%5:List, %6:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%7:List, %9:List) H --> 1 G --> f(%10:List, %11:List) I --> %4:List U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %5:List W --> %6:List X --> %7:List Z --> f(%9:List, %2:Elt, %10:List) Y --> 1 S --> f(%11:List, %4:List) Unifier 129 rewrites: 0 A --> j(%8:List, f(%5:List, %6:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%7:List, %9:List) H --> 1 G --> f(%10:List, %11:List) I --> %4:List U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %5:List W --> %6:List X --> %7:List Z --> 1 Y --> f(%9:List, %2:Elt, %10:List) S --> f(%11:List, %4:List) Unifier 130 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%9:List, %11:List) H --> %4:List G --> %5:List I --> %6:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> %9:List Z --> f(%11:List, %2:Elt, j(%4:List, %5:List)) Y --> 1 S --> %6:List Unifier 131 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%9:List, %11:List) H --> %4:List G --> %5:List I --> %6:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> %9:List Z --> 1 Y --> f(%11:List, %2:Elt, j(%4:List, %5:List)) S --> %6:List Unifier 132 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%9:List, %11:List) H --> %4:List G --> %5:List I --> %6:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> %9:List Z --> f(%11:List, %2:Elt) Y --> 1 S --> f(j(%4:List, %5:List), %6:List) Unifier 133 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%9:List, %11:List) H --> %4:List G --> %5:List I --> %6:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> %9:List Z --> 1 Y --> f(%11:List, %2:Elt) S --> f(j(%4:List, %5:List), %6:List) Unifier 134 rewrites: 0 A --> j(%12:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%9:List, j(%10:List, %11:List), %13:List) H --> %4:List G --> %5:List I --> %6:List U --> j(%12:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> %9:List Z --> %10:List Y --> %11:List S --> f(%13:List, %2:Elt, j(%4:List, %5:List), %6:List) Unifier 135 rewrites: 0 A --> j(%12:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> f(%9:List, j(%10:List, %11:List)) H --> %4:List G --> %5:List I --> %6:List U --> j(%12:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> %9:List Z --> %10:List Y --> %11:List S --> f(%2:Elt, j(%4:List, %5:List), %6:List) Unifier 136 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%11:List, %9:List) U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> %4:List Z --> f(%2:Elt, j(%5:List, %6:List), %11:List) Y --> 1 S --> %9:List Unifier 137 rewrites: 0 A --> j(%10:List, f(%7:List, %8:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%11:List, %9:List) U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %7:List W --> %8:List X --> %4:List Z --> 1 Y --> f(%2:Elt, j(%5:List, %6:List), %11:List) S --> %9:List Unifier 138 rewrites: 0 A --> j(%8:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%9:List, %10:List) G --> 1 I --> %5:List U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> %4:List Z --> f(%2:Elt, %9:List) Y --> 1 S --> f(%10:List, %5:List) Unifier 139 rewrites: 0 A --> j(%8:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%9:List, %10:List) G --> 1 I --> %5:List U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> %4:List Z --> 1 Y --> f(%2:Elt, %9:List) S --> f(%10:List, %5:List) Unifier 140 rewrites: 0 A --> j(%8:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%9:List, %10:List) I --> %5:List U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> %4:List Z --> f(%2:Elt, %9:List) Y --> 1 S --> f(%10:List, %5:List) Unifier 141 rewrites: 0 A --> j(%8:List, f(%6:List, %7:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%9:List, %10:List) I --> %5:List U --> j(%8:List, f(%1:List, %2:Elt, %3:List)) V --> %6:List W --> %7:List X --> %4:List Z --> 1 Y --> f(%2:Elt, %9:List) S --> f(%10:List, %5:List) Unifier 142 rewrites: 0 A --> j(%10:List, f(%8:List, %9:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %8:List W --> %9:List X --> %4:List Z --> f(%2:Elt, j(%5:List, %6:List)) Y --> 1 S --> %7:List Unifier 143 rewrites: 0 A --> j(%10:List, f(%8:List, %9:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %8:List W --> %9:List X --> %4:List Z --> 1 Y --> f(%2:Elt, j(%5:List, %6:List)) S --> %7:List Unifier 144 rewrites: 0 A --> j(%10:List, f(%8:List, %9:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %8:List W --> %9:List X --> %4:List Z --> %2:Elt Y --> 1 S --> f(j(%5:List, %6:List), %7:List) Unifier 145 rewrites: 0 A --> j(%10:List, f(%8:List, %9:List)) B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> j(%10:List, f(%1:List, %2:Elt, %3:List)) V --> %8:List W --> %9:List X --> %4:List Z --> 1 Y --> %2:Elt S --> f(j(%5:List, %6:List), %7:List) Unifier 146 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%12:List, %7:List) D --> %3:List H --> %4:List G --> %5:List I --> f(%11:List, j(%8:List, %9:List), %10:List) U --> %6:List V --> f(%1:List, %2:Elt, %12:List) W --> %7:List X --> f(%3:List, %2:Elt, j(%4:List, %5:List), %11:List) Z --> %8:List Y --> %9:List S --> %10:List Unifier 147 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%11:List, j(%8:List, %9:List), %10:List) U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt, j(%5:List, %6:List), %11:List) Z --> %8:List Y --> %9:List S --> %10:List Unifier 148 rewrites: 0 A --> %6:List B --> f(%7:List, %12:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> f(%11:List, j(%8:List, %9:List), %10:List) U --> %6:List V --> %7:List W --> f(%12:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt, j(%4:List, %5:List), %11:List) Z --> %8:List Y --> %9:List S --> %10:List Unifier 149 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%11:List, j(%8:List, %9:List), %10:List) U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt, j(%5:List, %6:List), %11:List) Z --> %8:List Y --> %9:List S --> %10:List Unifier 150 rewrites: 0 A --> %4:List B --> %1:List E --> %2:Elt C --> f(%10:List, %5:List) D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> f(%9:List, %6:List) U --> %4:List V --> f(%1:List, %2:Elt, %10:List) W --> %5:List X --> f(%3:List, %2:Elt, %7:List) Z --> f(%8:List, %9:List) Y --> 1 S --> %6:List Unifier 151 rewrites: 0 A --> %4:List B --> %1:List E --> %2:Elt C --> f(%10:List, %5:List) D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> f(%9:List, %6:List) U --> %4:List V --> f(%1:List, %2:Elt, %10:List) W --> %5:List X --> f(%3:List, %2:Elt, %7:List) Z --> 1 Y --> f(%8:List, %9:List) S --> %6:List Unifier 152 rewrites: 0 A --> %4:List B --> %1:List E --> %2:Elt C --> f(%10:List, %5:List) D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> f(%9:List, %6:List) U --> %4:List V --> f(%1:List, %2:Elt, %10:List) W --> %5:List X --> f(%3:List, %2:Elt, %7:List) Z --> f(%8:List, %9:List) Y --> 1 S --> %6:List Unifier 153 rewrites: 0 A --> %4:List B --> %1:List E --> %2:Elt C --> f(%10:List, %5:List) D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> f(%9:List, %6:List) U --> %4:List V --> f(%1:List, %2:Elt, %10:List) W --> %5:List X --> f(%3:List, %2:Elt, %7:List) Z --> 1 Y --> f(%8:List, %9:List) S --> %6:List Unifier 154 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%7:List, %8:List) G --> 1 I --> f(%9:List, %6:List) U --> %5:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt, %7:List) Z --> f(%8:List, %9:List) Y --> 1 S --> %6:List Unifier 155 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%7:List, %8:List) G --> 1 I --> f(%9:List, %6:List) U --> %5:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt, %7:List) Z --> 1 Y --> f(%8:List, %9:List) S --> %6:List Unifier 156 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%7:List, %8:List) I --> f(%9:List, %6:List) U --> %5:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt, %7:List) Z --> f(%8:List, %9:List) Y --> 1 S --> %6:List Unifier 157 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%7:List, %8:List) I --> f(%9:List, %6:List) U --> %5:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt, %7:List) Z --> 1 Y --> f(%8:List, %9:List) S --> %6:List Unifier 158 rewrites: 0 A --> %4:List B --> f(%5:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> f(%9:List, %6:List) U --> %4:List V --> %5:List W --> f(%10:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt, %7:List) Z --> f(%8:List, %9:List) Y --> 1 S --> %6:List Unifier 159 rewrites: 0 A --> %4:List B --> f(%5:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> f(%9:List, %6:List) U --> %4:List V --> %5:List W --> f(%10:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt, %7:List) Z --> 1 Y --> f(%8:List, %9:List) S --> %6:List Unifier 160 rewrites: 0 A --> %4:List B --> f(%5:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> f(%9:List, %6:List) U --> %4:List V --> %5:List W --> f(%10:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt, %7:List) Z --> f(%8:List, %9:List) Y --> 1 S --> %6:List Unifier 161 rewrites: 0 A --> %4:List B --> f(%5:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> f(%9:List, %6:List) U --> %4:List V --> %5:List W --> f(%10:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt, %7:List) Z --> 1 Y --> f(%8:List, %9:List) S --> %6:List Unifier 162 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%7:List, %8:List) G --> 1 I --> f(%9:List, %6:List) U --> %5:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt, %7:List) Z --> f(%8:List, %9:List) Y --> 1 S --> %6:List Unifier 163 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%7:List, %8:List) G --> 1 I --> f(%9:List, %6:List) U --> %5:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt, %7:List) Z --> 1 Y --> f(%8:List, %9:List) S --> %6:List Unifier 164 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%7:List, %8:List) I --> f(%9:List, %6:List) U --> %5:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt, %7:List) Z --> f(%8:List, %9:List) Y --> 1 S --> %6:List Unifier 165 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%7:List, %8:List) I --> f(%9:List, %6:List) U --> %5:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt, %7:List) Z --> 1 Y --> f(%8:List, %9:List) S --> %6:List Unifier 166 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%11:List, %6:List) D --> %3:List H --> f(%9:List, j(%7:List, %8:List), %10:List) G --> 1 I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %11:List) W --> %6:List X --> f(%3:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> f(%10:List, %4:List) Unifier 167 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%11:List, %6:List) D --> %3:List H --> 1 G --> f(%9:List, j(%7:List, %8:List), %10:List) I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %11:List) W --> %6:List X --> f(%3:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> f(%10:List, %4:List) Unifier 168 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%9:List, j(%7:List, %8:List), %10:List) G --> 1 I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> f(%10:List, %5:List) Unifier 169 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%9:List, j(%7:List, %8:List), %10:List) I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> f(%10:List, %5:List) Unifier 170 rewrites: 0 A --> %5:List B --> f(%6:List, %11:List) E --> %1:Elt C --> %2:List D --> %3:List H --> f(%9:List, j(%7:List, %8:List), %10:List) G --> 1 I --> %4:List U --> %5:List V --> %6:List W --> f(%11:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt, %9:List) Z --> %7:List Y --> %8:List S --> f(%10:List, %4:List) Unifier 171 rewrites: 0 A --> %5:List B --> f(%6:List, %11:List) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(%9:List, j(%7:List, %8:List), %10:List) I --> %4:List U --> %5:List V --> %6:List W --> f(%11:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt, %9:List) Z --> %7:List Y --> %8:List S --> f(%10:List, %4:List) Unifier 172 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%9:List, j(%7:List, %8:List), %10:List) G --> 1 I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> f(%10:List, %5:List) Unifier 173 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%9:List, j(%7:List, %8:List), %10:List) I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> f(%10:List, %5:List) Unifier 174 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%10:List, %6:List) D --> %3:List H --> f(%9:List, j(%7:List, %8:List)) G --> 1 I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %10:List) W --> %6:List X --> f(%3:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> %4:List Unifier 175 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%10:List, %6:List) D --> %3:List H --> 1 G --> f(%9:List, j(%7:List, %8:List)) I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %10:List) W --> %6:List X --> f(%3:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> %4:List Unifier 176 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%9:List, j(%7:List, %8:List)) G --> 1 I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> %5:List Unifier 177 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%9:List, j(%7:List, %8:List)) I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> %5:List Unifier 178 rewrites: 0 A --> %5:List B --> f(%6:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> f(%9:List, j(%7:List, %8:List)) G --> 1 I --> %4:List U --> %5:List V --> %6:List W --> f(%10:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt, %9:List) Z --> %7:List Y --> %8:List S --> %4:List Unifier 179 rewrites: 0 A --> %5:List B --> f(%6:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(%9:List, j(%7:List, %8:List)) I --> %4:List U --> %5:List V --> %6:List W --> f(%10:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt, %9:List) Z --> %7:List Y --> %8:List S --> %4:List Unifier 180 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%9:List, j(%7:List, %8:List)) G --> 1 I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> %5:List Unifier 181 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%9:List, j(%7:List, %8:List)) I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt, %9:List) Z --> %7:List Y --> %8:List S --> %5:List Unifier 182 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%11:List, %7:List) D --> %3:List H --> %4:List G --> %5:List I --> f(j(%8:List, %9:List), %10:List) U --> %6:List V --> f(%1:List, %2:Elt, %11:List) W --> %7:List X --> f(%3:List, %2:Elt, j(%4:List, %5:List)) Z --> %8:List Y --> %9:List S --> %10:List Unifier 183 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(j(%8:List, %9:List), %10:List) U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt, j(%5:List, %6:List)) Z --> %8:List Y --> %9:List S --> %10:List Unifier 184 rewrites: 0 A --> %6:List B --> f(%7:List, %11:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> f(j(%8:List, %9:List), %10:List) U --> %6:List V --> %7:List W --> f(%11:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt, j(%4:List, %5:List)) Z --> %8:List Y --> %9:List S --> %10:List Unifier 185 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(j(%8:List, %9:List), %10:List) U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt, j(%5:List, %6:List)) Z --> %8:List Y --> %9:List S --> %10:List Unifier 186 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %7:List) D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %8:List) U --> %6:List V --> f(%1:List, %2:Elt, %10:List) W --> %7:List X --> f(%3:List, %2:Elt) Z --> f(j(%4:List, %5:List), %9:List) Y --> 1 S --> %8:List Unifier 187 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %7:List) D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %8:List) U --> %6:List V --> f(%1:List, %2:Elt, %10:List) W --> %7:List X --> f(%3:List, %2:Elt) Z --> 1 Y --> f(j(%4:List, %5:List), %9:List) S --> %8:List Unifier 188 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%9:List, %8:List) U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt) Z --> f(j(%5:List, %6:List), %9:List) Y --> 1 S --> %8:List Unifier 189 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%9:List, %8:List) U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt) Z --> 1 Y --> f(j(%5:List, %6:List), %9:List) S --> %8:List Unifier 190 rewrites: 0 A --> %6:List B --> f(%7:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %8:List) U --> %6:List V --> %7:List W --> f(%10:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt) Z --> f(j(%4:List, %5:List), %9:List) Y --> 1 S --> %8:List Unifier 191 rewrites: 0 A --> %6:List B --> f(%7:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %8:List) U --> %6:List V --> %7:List W --> f(%10:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt) Z --> 1 Y --> f(j(%4:List, %5:List), %9:List) S --> %8:List Unifier 192 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%9:List, %8:List) U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt) Z --> f(j(%5:List, %6:List), %9:List) Y --> 1 S --> %8:List Unifier 193 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%9:List, %8:List) U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt) Z --> 1 Y --> f(j(%5:List, %6:List), %9:List) S --> %8:List Unifier 194 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%10:List, %6:List) D --> %3:List H --> f(j(%7:List, %8:List), %9:List) G --> 1 I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %10:List) W --> %6:List X --> f(%3:List, %2:Elt) Z --> %7:List Y --> %8:List S --> f(%9:List, %4:List) Unifier 195 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%10:List, %6:List) D --> %3:List H --> 1 G --> f(j(%7:List, %8:List), %9:List) I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %10:List) W --> %6:List X --> f(%3:List, %2:Elt) Z --> %7:List Y --> %8:List S --> f(%9:List, %4:List) Unifier 196 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(j(%7:List, %8:List), %9:List) G --> 1 I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt) Z --> %7:List Y --> %8:List S --> f(%9:List, %5:List) Unifier 197 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(j(%7:List, %8:List), %9:List) I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt) Z --> %7:List Y --> %8:List S --> f(%9:List, %5:List) Unifier 198 rewrites: 0 A --> %5:List B --> f(%6:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> f(j(%7:List, %8:List), %9:List) G --> 1 I --> %4:List U --> %5:List V --> %6:List W --> f(%10:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt) Z --> %7:List Y --> %8:List S --> f(%9:List, %4:List) Unifier 199 rewrites: 0 A --> %5:List B --> f(%6:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(j(%7:List, %8:List), %9:List) I --> %4:List U --> %5:List V --> %6:List W --> f(%10:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt) Z --> %7:List Y --> %8:List S --> f(%9:List, %4:List) Unifier 200 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(j(%7:List, %8:List), %9:List) G --> 1 I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt) Z --> %7:List Y --> %8:List S --> f(%9:List, %5:List) Unifier 201 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(j(%7:List, %8:List), %9:List) I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt) Z --> %7:List Y --> %8:List S --> f(%9:List, %5:List) Unifier 202 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%7:List, %6:List) D --> %3:List H --> j(%8:List, %10:List) G --> j(%9:List, %11:List) I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %7:List) W --> %6:List X --> f(%3:List, %2:Elt) Z --> j(%8:List, %9:List) Y --> j(%10:List, %11:List) S --> %4:List Unifier 203 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> j(%7:List, %9:List) G --> j(%8:List, %10:List) I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> f(%4:List, %2:Elt) Z --> j(%7:List, %8:List) Y --> j(%9:List, %10:List) S --> %5:List Unifier 204 rewrites: 0 A --> %5:List B --> f(%6:List, %7:List) E --> %1:Elt C --> %2:List D --> %3:List H --> j(%8:List, %10:List) G --> j(%9:List, %11:List) I --> %4:List U --> %5:List V --> %6:List W --> f(%7:List, %1:Elt, %2:List) X --> f(%3:List, %1:Elt) Z --> j(%8:List, %9:List) Y --> j(%10:List, %11:List) S --> %4:List Unifier 205 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> j(%7:List, %9:List) G --> j(%8:List, %10:List) I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> f(%4:List, %2:Elt) Z --> j(%7:List, %8:List) Y --> j(%9:List, %10:List) S --> %5:List Unifier 206 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%11:List, %6:List) D --> f(%7:List, %9:List) H --> %3:List G --> %4:List I --> f(%10:List, %8:List) U --> %5:List V --> f(%1:List, %2:Elt, %11:List) W --> %6:List X --> %7:List Z --> f(%9:List, %2:Elt, j(%3:List, %4:List), %10:List) Y --> 1 S --> %8:List Unifier 207 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%11:List, %6:List) D --> f(%7:List, %9:List) H --> %3:List G --> %4:List I --> f(%10:List, %8:List) U --> %5:List V --> f(%1:List, %2:Elt, %11:List) W --> %6:List X --> %7:List Z --> 1 Y --> f(%9:List, %2:Elt, j(%3:List, %4:List), %10:List) S --> %8:List Unifier 208 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%7:List, %9:List) H --> %4:List G --> %5:List I --> f(%10:List, %8:List) U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %7:List Z --> f(%9:List, %2:Elt, j(%4:List, %5:List), %10:List) Y --> 1 S --> %8:List Unifier 209 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%7:List, %9:List) H --> %4:List G --> %5:List I --> f(%10:List, %8:List) U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %7:List Z --> 1 Y --> f(%9:List, %2:Elt, j(%4:List, %5:List), %10:List) S --> %8:List Unifier 210 rewrites: 0 A --> %5:List B --> f(%6:List, %11:List) E --> %1:Elt C --> %2:List D --> f(%7:List, %9:List) H --> %3:List G --> %4:List I --> f(%10:List, %8:List) U --> %5:List V --> %6:List W --> f(%11:List, %1:Elt, %2:List) X --> %7:List Z --> f(%9:List, %1:Elt, j(%3:List, %4:List), %10:List) Y --> 1 S --> %8:List Unifier 211 rewrites: 0 A --> %5:List B --> f(%6:List, %11:List) E --> %1:Elt C --> %2:List D --> f(%7:List, %9:List) H --> %3:List G --> %4:List I --> f(%10:List, %8:List) U --> %5:List V --> %6:List W --> f(%11:List, %1:Elt, %2:List) X --> %7:List Z --> 1 Y --> f(%9:List, %1:Elt, j(%3:List, %4:List), %10:List) S --> %8:List Unifier 212 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%7:List, %9:List) H --> %4:List G --> %5:List I --> f(%10:List, %8:List) U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %7:List Z --> f(%9:List, %2:Elt, j(%4:List, %5:List), %10:List) Y --> 1 S --> %8:List Unifier 213 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%7:List, %9:List) H --> %4:List G --> %5:List I --> f(%10:List, %8:List) U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %7:List Z --> 1 Y --> f(%9:List, %2:Elt, j(%4:List, %5:List), %10:List) S --> %8:List Unifier 214 rewrites: 0 A --> %4:List B --> %1:List E --> %2:Elt C --> f(%10:List, %5:List) D --> f(%6:List, %7:List) H --> f(%8:List, %9:List) G --> 1 I --> %3:List U --> %4:List V --> f(%1:List, %2:Elt, %10:List) W --> %5:List X --> %6:List Z --> f(%7:List, %2:Elt, %8:List) Y --> 1 S --> f(%9:List, %3:List) Unifier 215 rewrites: 0 A --> %4:List B --> %1:List E --> %2:Elt C --> f(%10:List, %5:List) D --> f(%6:List, %7:List) H --> f(%8:List, %9:List) G --> 1 I --> %3:List U --> %4:List V --> f(%1:List, %2:Elt, %10:List) W --> %5:List X --> %6:List Z --> 1 Y --> f(%7:List, %2:Elt, %8:List) S --> f(%9:List, %3:List) Unifier 216 rewrites: 0 A --> %4:List B --> %1:List E --> %2:Elt C --> f(%10:List, %5:List) D --> f(%6:List, %7:List) H --> 1 G --> f(%8:List, %9:List) I --> %3:List U --> %4:List V --> f(%1:List, %2:Elt, %10:List) W --> %5:List X --> %6:List Z --> f(%7:List, %2:Elt, %8:List) Y --> 1 S --> f(%9:List, %3:List) Unifier 217 rewrites: 0 A --> %4:List B --> %1:List E --> %2:Elt C --> f(%10:List, %5:List) D --> f(%6:List, %7:List) H --> 1 G --> f(%8:List, %9:List) I --> %3:List U --> %4:List V --> f(%1:List, %2:Elt, %10:List) W --> %5:List X --> %6:List Z --> 1 Y --> f(%7:List, %2:Elt, %8:List) S --> f(%9:List, %3:List) Unifier 218 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%6:List, %7:List) H --> f(%8:List, %9:List) G --> 1 I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %6:List Z --> f(%7:List, %2:Elt, %8:List) Y --> 1 S --> f(%9:List, %4:List) Unifier 219 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%6:List, %7:List) H --> f(%8:List, %9:List) G --> 1 I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %6:List Z --> 1 Y --> f(%7:List, %2:Elt, %8:List) S --> f(%9:List, %4:List) Unifier 220 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%6:List, %7:List) H --> 1 G --> f(%8:List, %9:List) I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %6:List Z --> f(%7:List, %2:Elt, %8:List) Y --> 1 S --> f(%9:List, %4:List) Unifier 221 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%6:List, %7:List) H --> 1 G --> f(%8:List, %9:List) I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %6:List Z --> 1 Y --> f(%7:List, %2:Elt, %8:List) S --> f(%9:List, %4:List) Unifier 222 rewrites: 0 A --> %4:List B --> f(%5:List, %10:List) E --> %1:Elt C --> %2:List D --> f(%6:List, %7:List) H --> f(%8:List, %9:List) G --> 1 I --> %3:List U --> %4:List V --> %5:List W --> f(%10:List, %1:Elt, %2:List) X --> %6:List Z --> f(%7:List, %1:Elt, %8:List) Y --> 1 S --> f(%9:List, %3:List) Unifier 223 rewrites: 0 A --> %4:List B --> f(%5:List, %10:List) E --> %1:Elt C --> %2:List D --> f(%6:List, %7:List) H --> f(%8:List, %9:List) G --> 1 I --> %3:List U --> %4:List V --> %5:List W --> f(%10:List, %1:Elt, %2:List) X --> %6:List Z --> 1 Y --> f(%7:List, %1:Elt, %8:List) S --> f(%9:List, %3:List) Unifier 224 rewrites: 0 A --> %4:List B --> f(%5:List, %10:List) E --> %1:Elt C --> %2:List D --> f(%6:List, %7:List) H --> 1 G --> f(%8:List, %9:List) I --> %3:List U --> %4:List V --> %5:List W --> f(%10:List, %1:Elt, %2:List) X --> %6:List Z --> f(%7:List, %1:Elt, %8:List) Y --> 1 S --> f(%9:List, %3:List) Unifier 225 rewrites: 0 A --> %4:List B --> f(%5:List, %10:List) E --> %1:Elt C --> %2:List D --> f(%6:List, %7:List) H --> 1 G --> f(%8:List, %9:List) I --> %3:List U --> %4:List V --> %5:List W --> f(%10:List, %1:Elt, %2:List) X --> %6:List Z --> 1 Y --> f(%7:List, %1:Elt, %8:List) S --> f(%9:List, %3:List) Unifier 226 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%6:List, %7:List) H --> f(%8:List, %9:List) G --> 1 I --> %4:List U --> %5:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %6:List Z --> f(%7:List, %2:Elt, %8:List) Y --> 1 S --> f(%9:List, %4:List) Unifier 227 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%6:List, %7:List) H --> f(%8:List, %9:List) G --> 1 I --> %4:List U --> %5:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %6:List Z --> 1 Y --> f(%7:List, %2:Elt, %8:List) S --> f(%9:List, %4:List) Unifier 228 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%6:List, %7:List) H --> 1 G --> f(%8:List, %9:List) I --> %4:List U --> %5:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %6:List Z --> f(%7:List, %2:Elt, %8:List) Y --> 1 S --> f(%9:List, %4:List) Unifier 229 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%6:List, %7:List) H --> 1 G --> f(%8:List, %9:List) I --> %4:List U --> %5:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %6:List Z --> 1 Y --> f(%7:List, %2:Elt, %8:List) S --> f(%9:List, %4:List) Unifier 230 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %7:List) D --> f(%8:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt, %10:List) W --> %7:List X --> %8:List Z --> f(%9:List, %2:Elt, j(%3:List, %4:List)) Y --> 1 S --> %5:List Unifier 231 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %7:List) D --> f(%8:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt, %10:List) W --> %7:List X --> %8:List Z --> 1 Y --> f(%9:List, %2:Elt, j(%3:List, %4:List)) S --> %5:List Unifier 232 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %9:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %8:List Z --> f(%9:List, %2:Elt, j(%4:List, %5:List)) Y --> 1 S --> %6:List Unifier 233 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %9:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %8:List Z --> 1 Y --> f(%9:List, %2:Elt, j(%4:List, %5:List)) S --> %6:List Unifier 234 rewrites: 0 A --> %6:List B --> f(%7:List, %10:List) E --> %1:Elt C --> %2:List D --> f(%8:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%10:List, %1:Elt, %2:List) X --> %8:List Z --> f(%9:List, %1:Elt, j(%3:List, %4:List)) Y --> 1 S --> %5:List Unifier 235 rewrites: 0 A --> %6:List B --> f(%7:List, %10:List) E --> %1:Elt C --> %2:List D --> f(%8:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%10:List, %1:Elt, %2:List) X --> %8:List Z --> 1 Y --> f(%9:List, %1:Elt, j(%3:List, %4:List)) S --> %5:List Unifier 236 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %9:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %8:List Z --> f(%9:List, %2:Elt, j(%4:List, %5:List)) Y --> 1 S --> %6:List Unifier 237 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %9:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %8:List Z --> 1 Y --> f(%9:List, %2:Elt, j(%4:List, %5:List)) S --> %6:List Unifier 238 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %7:List) D --> f(%8:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt, %10:List) W --> %7:List X --> %8:List Z --> f(%9:List, %2:Elt) Y --> 1 S --> f(j(%3:List, %4:List), %5:List) Unifier 239 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %7:List) D --> f(%8:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt, %10:List) W --> %7:List X --> %8:List Z --> 1 Y --> f(%9:List, %2:Elt) S --> f(j(%3:List, %4:List), %5:List) Unifier 240 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %9:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %8:List Z --> f(%9:List, %2:Elt) Y --> 1 S --> f(j(%4:List, %5:List), %6:List) Unifier 241 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %9:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %8:List Z --> 1 Y --> f(%9:List, %2:Elt) S --> f(j(%4:List, %5:List), %6:List) Unifier 242 rewrites: 0 A --> %6:List B --> f(%7:List, %10:List) E --> %1:Elt C --> %2:List D --> f(%8:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%10:List, %1:Elt, %2:List) X --> %8:List Z --> f(%9:List, %1:Elt) Y --> 1 S --> f(j(%3:List, %4:List), %5:List) Unifier 243 rewrites: 0 A --> %6:List B --> f(%7:List, %10:List) E --> %1:Elt C --> %2:List D --> f(%8:List, %9:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%10:List, %1:Elt, %2:List) X --> %8:List Z --> 1 Y --> f(%9:List, %1:Elt) S --> f(j(%3:List, %4:List), %5:List) Unifier 244 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %9:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %8:List Z --> f(%9:List, %2:Elt) Y --> 1 S --> f(j(%4:List, %5:List), %6:List) Unifier 245 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, %9:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %8:List Z --> 1 Y --> f(%9:List, %2:Elt) S --> f(j(%4:List, %5:List), %6:List) Unifier 246 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%12:List, %7:List) D --> f(%8:List, j(%9:List, %10:List), %11:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt, %12:List) W --> %7:List X --> %8:List Z --> %9:List Y --> %10:List S --> f(%11:List, %2:Elt, j(%3:List, %4:List), %5:List) Unifier 247 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, j(%9:List, %10:List), %11:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %8:List Z --> %9:List Y --> %10:List S --> f(%11:List, %2:Elt, j(%4:List, %5:List), %6:List) Unifier 248 rewrites: 0 A --> %6:List B --> f(%7:List, %12:List) E --> %1:Elt C --> %2:List D --> f(%8:List, j(%9:List, %10:List), %11:List) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%12:List, %1:Elt, %2:List) X --> %8:List Z --> %9:List Y --> %10:List S --> f(%11:List, %1:Elt, j(%3:List, %4:List), %5:List) Unifier 249 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, j(%9:List, %10:List), %11:List) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %8:List Z --> %9:List Y --> %10:List S --> f(%11:List, %2:Elt, j(%4:List, %5:List), %6:List) Unifier 250 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%11:List, %7:List) D --> f(%8:List, j(%9:List, %10:List)) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt, %11:List) W --> %7:List X --> %8:List Z --> %9:List Y --> %10:List S --> f(%2:Elt, j(%3:List, %4:List), %5:List) Unifier 251 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, j(%9:List, %10:List)) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %8:List Z --> %9:List Y --> %10:List S --> f(%2:Elt, j(%4:List, %5:List), %6:List) Unifier 252 rewrites: 0 A --> %6:List B --> f(%7:List, %11:List) E --> %1:Elt C --> %2:List D --> f(%8:List, j(%9:List, %10:List)) H --> %3:List G --> %4:List I --> %5:List U --> %6:List V --> %7:List W --> f(%11:List, %1:Elt, %2:List) X --> %8:List Z --> %9:List Y --> %10:List S --> f(%1:Elt, j(%3:List, %4:List), %5:List) Unifier 253 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> f(%8:List, j(%9:List, %10:List)) H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %8:List Z --> %9:List Y --> %10:List S --> f(%2:Elt, j(%4:List, %5:List), %6:List) Unifier 254 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %7:List) D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %8:List) U --> %6:List V --> f(%1:List, %2:Elt, %10:List) W --> %7:List X --> %3:List Z --> f(%2:Elt, j(%4:List, %5:List), %9:List) Y --> 1 S --> %8:List Unifier 255 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> f(%10:List, %7:List) D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %8:List) U --> %6:List V --> f(%1:List, %2:Elt, %10:List) W --> %7:List X --> %3:List Z --> 1 Y --> f(%2:Elt, j(%4:List, %5:List), %9:List) S --> %8:List Unifier 256 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%9:List, %8:List) U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %4:List Z --> f(%2:Elt, j(%5:List, %6:List), %9:List) Y --> 1 S --> %8:List Unifier 257 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%9:List, %8:List) U --> %7:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %4:List Z --> 1 Y --> f(%2:Elt, j(%5:List, %6:List), %9:List) S --> %8:List Unifier 258 rewrites: 0 A --> %6:List B --> f(%7:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %8:List) U --> %6:List V --> %7:List W --> f(%10:List, %1:Elt, %2:List) X --> %3:List Z --> f(%1:Elt, j(%4:List, %5:List), %9:List) Y --> 1 S --> %8:List Unifier 259 rewrites: 0 A --> %6:List B --> f(%7:List, %10:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> f(%9:List, %8:List) U --> %6:List V --> %7:List W --> f(%10:List, %1:Elt, %2:List) X --> %3:List Z --> 1 Y --> f(%1:Elt, j(%4:List, %5:List), %9:List) S --> %8:List Unifier 260 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%9:List, %8:List) U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %4:List Z --> f(%2:Elt, j(%5:List, %6:List), %9:List) Y --> 1 S --> %8:List Unifier 261 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> f(%9:List, %8:List) U --> %7:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %4:List Z --> 1 Y --> f(%2:Elt, j(%5:List, %6:List), %9:List) S --> %8:List Unifier 262 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%9:List, %6:List) D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %9:List) W --> %6:List X --> %3:List Z --> f(%2:Elt, %7:List) Y --> 1 S --> f(%8:List, %4:List) Unifier 263 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%9:List, %6:List) D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %9:List) W --> %6:List X --> %3:List Z --> 1 Y --> f(%2:Elt, %7:List) S --> f(%8:List, %4:List) Unifier 264 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%9:List, %6:List) D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %9:List) W --> %6:List X --> %3:List Z --> f(%2:Elt, %7:List) Y --> 1 S --> f(%8:List, %4:List) Unifier 265 rewrites: 0 A --> %5:List B --> %1:List E --> %2:Elt C --> f(%9:List, %6:List) D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> %4:List U --> %5:List V --> f(%1:List, %2:Elt, %9:List) W --> %6:List X --> %3:List Z --> 1 Y --> f(%2:Elt, %7:List) S --> f(%8:List, %4:List) Unifier 266 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%7:List, %8:List) G --> 1 I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %4:List Z --> f(%2:Elt, %7:List) Y --> 1 S --> f(%8:List, %5:List) Unifier 267 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%7:List, %8:List) G --> 1 I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %4:List Z --> 1 Y --> f(%2:Elt, %7:List) S --> f(%8:List, %5:List) Unifier 268 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%7:List, %8:List) I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %4:List Z --> f(%2:Elt, %7:List) Y --> 1 S --> f(%8:List, %5:List) Unifier 269 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%7:List, %8:List) I --> %5:List U --> %6:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %4:List Z --> 1 Y --> f(%2:Elt, %7:List) S --> f(%8:List, %5:List) Unifier 270 rewrites: 0 A --> %5:List B --> f(%6:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> %4:List U --> %5:List V --> %6:List W --> f(%9:List, %1:Elt, %2:List) X --> %3:List Z --> f(%1:Elt, %7:List) Y --> 1 S --> f(%8:List, %4:List) Unifier 271 rewrites: 0 A --> %5:List B --> f(%6:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> f(%7:List, %8:List) G --> 1 I --> %4:List U --> %5:List V --> %6:List W --> f(%9:List, %1:Elt, %2:List) X --> %3:List Z --> 1 Y --> f(%1:Elt, %7:List) S --> f(%8:List, %4:List) Unifier 272 rewrites: 0 A --> %5:List B --> f(%6:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> %4:List U --> %5:List V --> %6:List W --> f(%9:List, %1:Elt, %2:List) X --> %3:List Z --> f(%1:Elt, %7:List) Y --> 1 S --> f(%8:List, %4:List) Unifier 273 rewrites: 0 A --> %5:List B --> f(%6:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> 1 G --> f(%7:List, %8:List) I --> %4:List U --> %5:List V --> %6:List W --> f(%9:List, %1:Elt, %2:List) X --> %3:List Z --> 1 Y --> f(%1:Elt, %7:List) S --> f(%8:List, %4:List) Unifier 274 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%7:List, %8:List) G --> 1 I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %4:List Z --> f(%2:Elt, %7:List) Y --> 1 S --> f(%8:List, %5:List) Unifier 275 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> f(%7:List, %8:List) G --> 1 I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %4:List Z --> 1 Y --> f(%2:Elt, %7:List) S --> f(%8:List, %5:List) Unifier 276 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%7:List, %8:List) I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %4:List Z --> f(%2:Elt, %7:List) Y --> 1 S --> f(%8:List, %5:List) Unifier 277 rewrites: 0 A --> %6:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> 1 G --> f(%7:List, %8:List) I --> %5:List U --> %6:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %4:List Z --> 1 Y --> f(%2:Elt, %7:List) S --> f(%8:List, %5:List) Unifier 278 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%9:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%1:List, %2:Elt, %9:List) W --> %8:List X --> %3:List Z --> f(%2:Elt, j(%4:List, %5:List)) Y --> 1 S --> %6:List Unifier 279 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%9:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%1:List, %2:Elt, %9:List) W --> %8:List X --> %3:List Z --> 1 Y --> f(%2:Elt, j(%4:List, %5:List)) S --> %6:List Unifier 280 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %4:List Z --> f(%2:Elt, j(%5:List, %6:List)) Y --> 1 S --> %7:List Unifier 281 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %4:List Z --> 1 Y --> f(%2:Elt, j(%5:List, %6:List)) S --> %7:List Unifier 282 rewrites: 0 A --> %7:List B --> f(%8:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %8:List W --> f(%9:List, %1:Elt, %2:List) X --> %3:List Z --> f(%1:Elt, j(%4:List, %5:List)) Y --> 1 S --> %6:List Unifier 283 rewrites: 0 A --> %7:List B --> f(%8:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %8:List W --> f(%9:List, %1:Elt, %2:List) X --> %3:List Z --> 1 Y --> f(%1:Elt, j(%4:List, %5:List)) S --> %6:List Unifier 284 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %4:List Z --> f(%2:Elt, j(%5:List, %6:List)) Y --> 1 S --> %7:List Unifier 285 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %4:List Z --> 1 Y --> f(%2:Elt, j(%5:List, %6:List)) S --> %7:List Unifier 286 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%9:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%1:List, %2:Elt, %9:List) W --> %8:List X --> %3:List Z --> %2:Elt Y --> 1 S --> f(j(%4:List, %5:List), %6:List) Unifier 287 rewrites: 0 A --> %7:List B --> %1:List E --> %2:Elt C --> f(%9:List, %8:List) D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> f(%1:List, %2:Elt, %9:List) W --> %8:List X --> %3:List Z --> 1 Y --> %2:Elt S --> f(j(%4:List, %5:List), %6:List) Unifier 288 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %4:List Z --> %2:Elt Y --> 1 S --> f(j(%5:List, %6:List), %7:List) Unifier 289 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> f(%1:List, %2:Elt) W --> %3:List X --> %4:List Z --> 1 Y --> %2:Elt S --> f(j(%5:List, %6:List), %7:List) Unifier 290 rewrites: 0 A --> %7:List B --> f(%8:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %8:List W --> f(%9:List, %1:Elt, %2:List) X --> %3:List Z --> %1:Elt Y --> 1 S --> f(j(%4:List, %5:List), %6:List) Unifier 291 rewrites: 0 A --> %7:List B --> f(%8:List, %9:List) E --> %1:Elt C --> %2:List D --> %3:List H --> %4:List G --> %5:List I --> %6:List U --> %7:List V --> %8:List W --> f(%9:List, %1:Elt, %2:List) X --> %3:List Z --> 1 Y --> %1:Elt S --> f(j(%4:List, %5:List), %6:List) Unifier 292 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %4:List Z --> %2:Elt Y --> 1 S --> f(j(%5:List, %6:List), %7:List) Unifier 293 rewrites: 0 A --> %8:List B --> %1:List E --> %2:Elt C --> %3:List D --> %4:List H --> %5:List G --> %6:List I --> %7:List U --> %8:List V --> %1:List W --> f(%2:Elt, %3:List) X --> %4:List Z --> 1 Y --> %2:Elt S --> f(j(%5:List, %6:List), %7:List) No more unifiers. rewrites: 0 Bye. Maude-Maude3.5.1/tests/ResolvedBugs/variantUnifyJune20200000775000175000017510000000041415036121435022360 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/variantUnifyJune2020.maude -no-banner -no-advise \ > variantUnifyJune2020.out 2>&1 diff $srcdir/variantUnifyJune2020.expected variantUnifyJune2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/upTheoryJanuary2023.maude0000664000175000017510000000034515036121435023325 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for automatic imports being included in upModule() of theories. *** fth FOO is sort Foo . endfth show desugared FOO . red in META-LEVEL : upModule('FOO, false) . Maude-Maude3.5.1/tests/ResolvedBugs/upTheoryJanuary2023.expected0000664000175000017510000000033615036121435024033 0ustar nileshnileshfth FOO is sort Foo . endfth ========================================== reduce in META-LEVEL : upModule('FOO, false) . rewrites: 1 result FTheory: fth 'FOO is nil sorts 'Foo . none none none none endfth Bye. Maude-Maude3.5.1/tests/ResolvedBugs/upTheoryJanuary20230000775000175000017510000000041015036121435022227 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/upTheoryJanuary2023.maude -no-banner -no-advise \ > upTheoryJanuary2023.out 2>&1 diff $srcdir/upTheoryJanuary2023.expected upTheoryJanuary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/uninitIterExtSeptember2021.maude0000664000175000017510000000041515036121435024632 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug in handling of extension information for iter symbols. *** mod UNINITIALIZED-BUG is protecting NAT . vars N M : Nat . crl [rwc] : s N => M if N => M [nonexec] . endm srew 3 using rwc{idle} . Maude-Maude3.5.1/tests/ResolvedBugs/uninitIterExtSeptember2021.expected0000664000175000017510000000025415036121435025341 0ustar nileshnilesh========================================== srewrite in UNINITIALIZED-BUG : 3 using rwc{idle} . Solution 1 rewrites: 1 result NzNat: 2 No more solutions. rewrites: 3 Bye. Maude-Maude3.5.1/tests/ResolvedBugs/uninitIterExtSeptember20210000775000175000017510000000044415036121435023545 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/uninitIterExtSeptember2021.maude -no-banner -no-advise \ > uninitIterExtSeptember2021.out 2>&1 diff $srcdir/uninitIterExtSeptember2021.expected uninitIterExtSeptember2021.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/unificationMar2013.maude0000664000175000017510000000200115036121435023112 0ustar nileshnileshset show timing off . fmod FOO is sort Foo . op f : Foo -> Foo . vars X Y Z : Foo . endfm unify X =? f(f(Y)) /\ Y =? X /\ Y =? f(X) . unify X =? f(Y) /\ Y =? f(f(X)) /\ X =? Y . fmod FOO2 is sort Foo . op a : -> Foo . op f : Foo Foo -> Foo [assoc comm] . op g : Foo -> Foo . vars A X Y : Foo . endfm unify f(a, A) =? f(a, X) /\ f(a, Y) =? f(a, X) /\ f(a, g(A)) =? f(a, g(X)) /\ f(a, g(Y)) =? f(a, g(X)) . unify f(a, Y) =? f(a, X) /\ f(a, g(A)) =? f(a, g(X)) /\ f(a, g(Y)) =? f(a, g(X)) . fmod FOO3 is sort Foo . op a : -> Foo . op f : Foo Foo -> Foo [assoc comm] . op g : Foo -> Foo . vars A B C D X Y Z : Foo . endfm unify f(a, X) =? f(a, g(X)) /\ f(a, X) =? f(a, g(g(X))) . unify Y =? X /\ f(a, X) =? f(a, g(Y)) /\ f(a, X) =? f(a, g(g(Y))) . fmod FOO4 is sort Foo . op f : Foo Foo -> Foo [assoc comm] . ops a b c d e : -> Foo . vars W X Y Z : Foo . endfm unify f(a, Y) =? f(a, X) . unify f(X, a) =? f(X, a) . unify f(a, b) =? f(a, b) . unify f(X, Y) =? f(X, Y) . Maude-Maude3.5.1/tests/ResolvedBugs/unificationMar2013.expected0000664000175000017510000000245715036121435023637 0ustar nileshnilesh========================================== unify in FOO : X =? f(f(Y)) /\ Y =? X /\ Y =? f(X) . No unifier. ========================================== unify in FOO : X =? f(Y) /\ Y =? f(f(X)) /\ X =? Y . No unifier. ========================================== unify in FOO2 : f(a, A) =? f(a, X) /\ f(a, Y) =? f(a, X) /\ f(a, g(A)) =? f(a, g(X)) /\ f(a, g(Y)) =? f(a, g(X)) . Unifier 1 A --> #1:Foo X --> #1:Foo Y --> #1:Foo ========================================== unify in FOO2 : f(a, Y) =? f(a, X) /\ f(a, g(A)) =? f(a, g(X)) /\ f(a, g(Y)) =? f(a, g(X)) . Unifier 1 Y --> #1:Foo X --> #1:Foo A --> #1:Foo ========================================== unify in FOO3 : f(a, X) =? f(a, g(X)) /\ f(a, X) =? f(a, g(g(X))) . No unifier. ========================================== unify in FOO3 : Y =? X /\ f(a, X) =? f(a, g(Y)) /\ f(a, X) =? f(a, g(g(Y))) . No unifier. ========================================== unify in FOO4 : f(a, Y) =? f(a, X) . Unifier 1 Y --> #1:Foo X --> #1:Foo ========================================== unify in FOO4 : f(X, a) =? f(X, a) . Unifier 1 X --> #1:Foo ========================================== unify in FOO4 : f(a, b) =? f(a, b) . Unifier 1 empty substitution ========================================== unify in FOO4 : f(X, Y) =? f(X, Y) . Unifier 1 X --> #1:Foo Y --> #2:Foo Bye. Maude-Maude3.5.1/tests/ResolvedBugs/unificationMar20130000775000175000017510000000040415036121435022030 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/unificationMar2013.maude -no-banner -no-advise \ > unificationMar2013.out 2>&1 diff $srcdir/unificationMar2013.expected unificationMar2013.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/theoryViewWrongWarningFebruary2023.maude0000664000175000017510000000035615036121435026366 0ustar nileshnilesh*** *** Test for wrong warning for a bad theory-view. *** fmod M is sort Foo . endfm fth T is inc M . op a : -> Foo . endfth fth T2 is inc BOOL . sort Foo . op b : -> Foo . endfth view V from T to T2 is op a to b . endv Maude-Maude3.5.1/tests/ResolvedBugs/theoryViewWrongWarningFebruary2023.expected0000664000175000017510000000024415036121435027070 0ustar nileshnileshWarning: , line 20 (view V): implicit mapping of sort Foo that was declared in a module to sort Foo from the target theory is not allowed. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/theoryViewWrongWarningFebruary20230000775000175000017510000000050415036121435025272 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/theoryViewWrongWarningFebruary2023.maude -no-banner -no-advise \ > theoryViewWrongWarningFebruary2023.out 2>&1 diff $srcdir/theoryViewWrongWarningFebruary2023.expected theoryViewWrongWarningFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/theoryViewOpToTermFebruary2023.maude0000664000175000017510000000056615036121435025460 0ustar nileshnilesh*** *** Test that op to term mappings work in theory-views. *** fth T is sort Foo . op f : Foo -> Foo . endfth fth T2 is sort Bar . op g : Bar -> Bar . endfth view V from T to T2 is sort Foo to Bar . var X : Foo . op f(X) to term g(X) . endv fmod M{X :: T} is var X : X$Foo . eq f(X) = f(X) . endfm fmod M2{Y :: T2} is inc M{V}{Y} . endfm show all . Maude-Maude3.5.1/tests/ResolvedBugs/theoryViewOpToTermFebruary2023.expected0000664000175000017510000000275115036121435026164 0ustar nileshnileshfmod M2{Y :: T2} is sorts Y$Bar Bool . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op g : Y$Bar -> Y$Bar . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq g(X:Y$Bar) = g(X:Y$Bar) . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/theoryViewOpToTermFebruary20230000775000175000017510000000046415036121435024366 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/theoryViewOpToTermFebruary2023.maude -no-banner -no-advise \ > theoryViewOpToTermFebruary2023.out 2>&1 diff $srcdir/theoryViewOpToTermFebruary2023.expected theoryViewOpToTermFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/stripperCollectorSwitchMay2023.maude0000664000175000017510000000115615036121435025525 0ustar nileshnileshset show timing off . *** *** Crafted example to illustrate bug if variables are sorted after the stripper and *** collector variables have been determined and they switch places, causing match failure. *** fmod FOO is pr NAT . sorts Set Elt . subsort Elt < Set . var S : Set . var E : Elt . var N : Nat . op dummy : Set -> Set . eq dummy(S) = S . op z : -> Elt . op p_ : Elt -> Elt . op g : Nat Set -> Set . eq g(s N, E) = f(g(N, p E), E) . op f : Set Set -> Set [assoc comm] . op h : Set -> Bool . ceq h(f(S, E)) = true if E = z . endfm red h(g(7, z)) . red h(g(8, z)) . red h(g(20, z)) . Maude-Maude3.5.1/tests/ResolvedBugs/stripperCollectorSwitchMay2023.expected0000664000175000017510000000047115036121435026232 0ustar nileshnilesh========================================== reduce in FOO : h(g(7, z)) . rewrites: 8 result Bool: true ========================================== reduce in FOO : h(g(8, z)) . rewrites: 9 result Bool: true ========================================== reduce in FOO : h(g(20, z)) . rewrites: 21 result Bool: true Bye. Maude-Maude3.5.1/tests/ResolvedBugs/stripperCollectorSwitchMay20230000775000175000017510000000045115036121435024433 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/stripperCollectorSwitchMay2023.maude -no-banner \ > stripperCollectorSwitchMay2023.out 2>&1 diff $srcdir/stripperCollectorSwitchMay2023.expected stripperCollectorSwitchMay2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/stringToRatConversionMarch2024.maude0000664000175000017510000000031015036121435025446 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug where certain strings did not convert. *** select CONVERSION . red rat("-0", 10) . red rat("0/1", 10) . red rat("-0/1", 10) . Maude-Maude3.5.1/tests/ResolvedBugs/stringToRatConversionMarch2024.expected0000664000175000017510000000051715036121435026165 0ustar nileshnilesh========================================== reduce in CONVERSION : rat("-0", 10) . rewrites: 1 result Zero: 0 ========================================== reduce in CONVERSION : rat("0/1", 10) . rewrites: 1 result Zero: 0 ========================================== reduce in CONVERSION : rat("-0/1", 10) . rewrites: 1 result Zero: 0 Bye. Maude-Maude3.5.1/tests/ResolvedBugs/stringToRatConversionMarch20240000775000175000017510000000046415036121435024371 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/stringToRatConversionMarch2024.maude -no-banner -no-advise \ > stringToRatConversionMarch2024.out 2>&1 diff $srcdir/stringToRatConversionMarch2024.expected stringToRatConversionMarch2024.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/stratToExprNotValidMay2025.maude0000664000175000017510000000156115036121435024566 0ustar nileshnilesh*** *** Test for strat to expr mappings that do not satisfy the requirements: *** either the strategy is not well-formed (unbound variables), the are *** repeated variables in the left-hand side, or non-variable terms. *** *** Maude should show an warning and invalidate the view, not an internal error. *** sth F is sort Elt . op 0 : -> Elt . strat f : Elt @ Elt . endsth sth G is sort Elt . strat g : Elt Elt @ Elt . endsth view NatF1 from F to NAT is sort Elt to Nat . strat f(N:Elt) to expr match M:Nat s.t. M:Nat = J:Nat . endv view NatF2 from F to NAT is sort Elt to Nat . strat f(0) to expr idle . endv view NatG from G to NAT is sort Elt to Nat . strat g(N:Elt, N:Elt) to expr idle . endv smod PARAM-F{X :: F} is endsm smod PARAM-G{X :: F} is endsm smod MAIN is protecting PARAM-F{NatF1} . protecting PARAM-F{NatF2} . protecting PARAM-G{NatG} . endsm Maude-Maude3.5.1/tests/ResolvedBugs/stratToExprNotValidMay2025.expected0000664000175000017510000000140415036121435025270 0ustar nileshnileshWarning: , line 22 (view NatF1): variable J:Nat is used before it is bound in condition of test strategy. Warning: , line 27 (view NatF2): lhs of strategy mapping has non-variable argument 0. Warning: , line 32 (view NatG): using the same variable base name N for two left hand side variables in an strategy mapping is not allowed. Warning: , line 42 (smod MAIN): unusable view NatF1. Warning: , line 43 (smod MAIN): unusable view NatF2. Warning: , line 44 (smod MAIN): unusable view NatG. Warning: , line 41 (smod MAIN): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/stratToExprNotValidMay20250000775000175000017510000000044415036121435023476 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/stratToExprNotValidMay2025.maude -no-banner -no-advise \ > stratToExprNotValidMay2025.out 2>&1 diff $srcdir/stratToExprNotValidMay2025.expected stratToExprNotValidMay2025.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/staleViewJune2018.maude0000664000175000017510000000152215036121435022743 0ustar nileshnileshset show timing off . set show advisories off . *** Check that we don't look the mapping for _<_ fmod FOO is op _+_ : Bool Bool -> Bool [prec 10] . op p_ : Bool -> Bool [prec 20] . endfm view V from STRICT-TOTAL-ORDER to FOO is sort Elt to Bool . op X:Elt < Y:Elt to term p X:Bool + Y:Bool . endv show view V . fmod FOO is op _+_ : Bool Bool -> Bool [prec 20] . op p_ : Bool -> Bool [prec 10] . endfm show view V . *** Check the same issue at the metalevel. fmod FOO is op _+_ : Bool Bool -> Bool [prec 10] . op p_ : Bool -> Bool [prec 20] . endfm view V from STRICT-TOTAL-ORDER to FOO is sort Elt to Bool . op X:Elt < Y:Elt to term p X:Bool + Y:Bool . endv red in META-LEVEL : upView('V) . fmod FOO is op _+_ : Bool Bool -> Bool [prec 20] . op p_ : Bool -> Bool [prec 10] . endfm red in META-LEVEL : upView('V) . Maude-Maude3.5.1/tests/ResolvedBugs/staleViewJune2018.expected0000664000175000017510000000132715036121435023454 0ustar nileshnileshview V from STRICT-TOTAL-ORDER to FOO is sort Elt to Bool . op X:Elt < Y:Elt to term p X:Bool + Y:Bool . endv view V from STRICT-TOTAL-ORDER to FOO is sort Elt to Bool . op X:Elt < Y:Elt to term p X:Bool + Y:Bool . endv ========================================== reduce in META-LEVEL : upView('V) . rewrites: 1 result View: view 'V from 'STRICT-TOTAL-ORDER to 'FOO is sort 'Elt to 'Bool . op '_<_['X:Elt, 'Y:Elt] to term 'p_['_+_['X:Bool, 'Y:Bool]] . none endv ========================================== reduce in META-LEVEL : upView('V) . rewrites: 1 result View: view 'V from 'STRICT-TOTAL-ORDER to 'FOO is sort 'Elt to 'Bool . op '_<_['X:Elt, 'Y:Elt] to term '_+_['p_['X:Bool], 'Y:Bool] . none endv Bye. Maude-Maude3.5.1/tests/ResolvedBugs/staleViewJune20180000775000175000017510000000040015036121435021646 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/staleViewJune2018.maude -no-banner -no-advise \ > staleViewJune2018.out 2>&1 diff $srcdir/staleViewJune2018.expected staleViewJune2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/spuriousAdvisoryRenamingCaptureJanuary2023.maude0000664000175000017510000000041515036121435030123 0ustar nileshnilesh*** *** Test for spurious advisory about mapping capturing an operator from a parameter. *** fth T is sort S . op f : S -> S . endfth fmod M{X :: T} is sort V{X} . op f : V{X} -> V{X} . endfm fmod N{X :: T} is inc M{X} * (op f : V{X} -> V{X} to g) . endfm Maude-Maude3.5.1/tests/ResolvedBugs/spuriousAdvisoryRenamingCaptureJanuary2023.expected0000664000175000017510000000000515036121435030624 0ustar nileshnileshBye. Maude-Maude3.5.1/tests/ResolvedBugs/spuriousAdvisoryRenamingCaptureJanuary20230000775000175000017510000000053115036121435027033 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/spuriousAdvisoryRenamingCaptureJanuary2023.maude -no-banner \ > spuriousAdvisoryRenamingCaptureJanuary2023.out 2>&1 diff $srcdir/spuriousAdvisoryRenamingCaptureJanuary2023.expected spuriousAdvisoryRenamingCaptureJanuary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/specificOpMappingPrintFebruary2023.maude0000664000175000017510000000027315036121435026271 0ustar nileshnilesh*** *** Test that specific op maps print correctly. *** mod FOO is sorts Foo Bar . op f : Foo -> Bar . endm mod BAR is inc FOO * (op f : Foo -> Bar to g) . endm show desugared . Maude-Maude3.5.1/tests/ResolvedBugs/specificOpMappingPrintFebruary2023.expected0000664000175000017510000000013115036121435026770 0ustar nileshnileshmod BAR is including BOOL . including FOO * (op f : [Foo] -> [Bar] to g) . endm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/specificOpMappingPrintFebruary20230000775000175000017510000000050415036121435025177 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/specificOpMappingPrintFebruary2023.maude -no-banner -no-advise \ > specificOpMappingPrintFebruary2023.out 2>&1 diff $srcdir/specificOpMappingPrintFebruary2023.expected specificOpMappingPrintFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/sortCollapseMay2020.maude0000664000175000017510000000046215036121435023272 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug that we weren't warning about a collapse *** up the sort hierarchy for declarations at the kind level. *** fmod FOO is sort Foo . op f : Foo [Foo] -> Foo [id: e] . op e : -> Foo . endfm parse f(e, X:[Foo]) . red f(e, X:[Foo]) . Maude-Maude3.5.1/tests/ResolvedBugs/sortCollapseMay2020.expected0000664000175000017510000000045215036121435023777 0ustar nileshnileshWarning: sort declarations for operator f with left identity e can cause collapse from sort Foo to [Foo] (collapsing to a larger or incomparable sort is illegal). Foo: f(e, X:[Foo]) ========================================== reduce in FOO : X:[Foo] . rewrites: 0 result [Foo]: X:[Foo] Bye. Maude-Maude3.5.1/tests/ResolvedBugs/sortCollapseMay20200000775000175000017510000000041015036121435022174 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/sortCollapseMay2020.maude -no-banner -no-advise \ > sortCollapseMay2020.out 2>&1 diff $srcdir/sortCollapseMay2020.expected sortCollapseMay2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/smodStrategyNameJanuary2023.maude0000664000175000017510000000034715036121435024776 0ustar nileshnilesh*** *** Test for bad strategy name in advisory. *** sth T is sorts Prop State . strat expand : Prop @ State . endsth smod M{X :: T} is endsm smod TEST{X :: T} is inc M{X} * (strat expand : Prop @ State to expand') . endsm Maude-Maude3.5.1/tests/ResolvedBugs/smodStrategyNameJanuary2023.expected0000664000175000017510000000014515036121435025500 0ustar nileshnileshAdvisory: Ignoring a specific strat mapping because strategy expand comes from a parameter. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/smodStrategyNameJanuary20230000775000175000017510000000043515036121435023705 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/smodStrategyNameJanuary2023.maude -no-banner \ > smodStrategyNameJanuary2023.out 2>&1 diff $srcdir/smodStrategyNameJanuary2023.expected smodStrategyNameJanuary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/showModuleJune2018.maude0000664000175000017510000000227315036121435023132 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that showModule message returns imports of non-flattened modules. *** load metaInterpreter mod TEST is pr META-INTERPRETER . op FOO : -> Module . eq FOO = ( fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none eq 'a.Foo = 'b.Foo [none] . endfm ). op BAR : -> Module . eq BAR = ( fmod 'BAR is including 'FOO . sorts none . none none none none endfm ). op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, FOO) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, BAR) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > showModule(Y, X, 'BAR, false) . endm erew <> < me : User | state: 1 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/ResolvedBugs/showModuleJune2018.expected0000664000175000017510000000051415036121435023634 0ustar nileshnilesh========================================== erewrite in TEST : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | state: 4 > showingModule(me, interpreter(0), fmod 'BAR is including 'FOO . sorts none . none none none none endfm) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/showModuleJune20180000775000175000017510000000040415036121435022035 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/showModuleJune2018.maude -no-banner -no-advise \ > showModuleJune2018.out 2>&1 diff $srcdir/showModuleJune2018.expected showModuleJune2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/showDesugaredFebruary2023.maude0000664000175000017510000000013015036121435024450 0ustar nileshnilesh*** *** Test for []s in import with bound parameter. *** show desugared LIST-AND-SET . Maude-Maude3.5.1/tests/ResolvedBugs/showDesugaredFebruary2023.expected0000664000175000017510000000172615036121435025172 0ustar nileshnileshfmod LIST-AND-SET{X :: TRIV} is protecting LIST{X} . protecting SET{X} . op makeSet : List{X} -> Set{X} . op makeSet : NeList{X} -> NeSet{X} . op $makeSet : List{X} Set{X} -> Set{X} . op $makeSet : NeList{X} Set{X} -> NeSet{X} . op $makeSet : List{X} NeSet{X} -> NeSet{X} . op filter : List{X} Set{X} -> List{X} . op $filter : List{X} Set{X} List{X} -> List{X} . op filterOut : List{X} Set{X} -> List{X} . op $filterOut : List{X} Set{X} List{X} -> List{X} . var E : X$Elt . var A : List{X} . var L : List{X} . var S : Set{X} . eq makeSet(L) = $makeSet(L, empty) . eq $makeSet(nil, S) = S . eq $makeSet(E L, S) = $makeSet(L, (S, E)) . eq filter(L, S) = $filter(L, S, nil) . eq $filter(nil, S, A) = A . eq $filter(E L, S, A) = $filter(L, S, if E in S then A E else A fi) . eq filterOut(L, S) = $filterOut(L, S, nil) . eq $filterOut(nil, S, A) = A . eq $filterOut(E L, S, A) = $filterOut(L, S, if E in S then A else A E fi) . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/showDesugaredFebruary20230000775000175000017510000000042515036121435023370 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/showDesugaredFebruary2023.maude -no-banner \ > showDesugaredFebruary2023.out 2>&1 diff $srcdir/showDesugaredFebruary2023.expected showDesugaredFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/renamingInstantiationMarch2023.maude0000664000175000017510000000077415036121435025502 0ustar nileshnilesh*** *** Test that renamings involving parameterized constants are instantiated correctly. *** fmod FOO{X :: TRIV} is sort Foo{X} . op f{X} : -> Foo{X} . endfm fmod BAR{X :: TRIV} is pr FOO{X} * (op f{X} to g) . eq g = g . endfm fmod TEST is inc BAR{Nat} . endfm show all . omod FOO{X :: TRIV} is class Foo{X} . endom omod BAR{X :: TRIV} is inc FOO{X} * (class Foo{X} to Bar{X}) . op className : -> Cid . eq className = Bar{X} . endom omod TEST is inc BAR{Nat} . endom show all . Maude-Maude3.5.1/tests/ResolvedBugs/renamingInstantiationMarch2023.expected0000664000175000017510000003136115036121435026204 0ustar nileshnileshfmod TEST is sorts Bool Zero NzNat Nat Foo{Nat} . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op g : -> Foo{Nat} . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq g = g . endfm mod TEST is sorts Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration Zero NzNat Nat Bar{Nat} . subsort Attribute < AttributeSet . subsort Bar{Nat} < Cid . subsorts Object Msg Portal < Configuration . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op Bar{Nat} : -> Bar{Nat} [ctor] . op className : -> Cid . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . eq className = Bar{Nat} . endm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/renamingInstantiationMarch20230000775000175000017510000000046415036121435024407 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/renamingInstantiationMarch2023.maude -no-banner -no-advise \ > renamingInstantiationMarch2023.out 2>&1 diff $srcdir/renamingInstantiationMarch2023.expected renamingInstantiationMarch2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/redBlackTooFewSubjectsApril2023.maude0000664000175000017510000000135315036121435025502 0ustar nileshnileshset show timing off . *** *** Test red-black ACU stripper-collector full matcher when 1 or 0 subjects are left. *** fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . var S : Set . op h : Set -> Set . ceq h(f(N, S)) = h(S) if N > 0 . ceq h(f(0, N, S)) = 0 if N > 0 . endfm red h(f(g(7), 0)) . fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . var S : Set . op h : Set -> Set . ceq h(f(N, S)) = h(S) if N > 0 . ceq h(f(0, 0, N, S)) = 0 if N > 0 . endfm red h(f(g(7), 0)) . Maude-Maude3.5.1/tests/ResolvedBugs/redBlackTooFewSubjectsApril2023.expected0000664000175000017510000000034315036121435026206 0ustar nileshnilesh========================================== reduce in FOO : h(f(0, g(7))) . rewrites: 30 result Set: h(f(0, 0)) ========================================== reduce in FOO : h(f(0, g(7))) . rewrites: 30 result Set: h(f(0, 0)) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/redBlackTooFewSubjectsApril20230000775000175000017510000000047015036121435024412 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/redBlackTooFewSubjectsApril2023.maude -no-banner -no-advise \ > redBlackTooFewSubjectsApril2023.out 2>&1 diff $srcdir/redBlackTooFewSubjectsApril2023.expected redBlackTooFewSubjectsApril2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/redBlackNonLinearApril2023.maude0000664000175000017510000000067315036121435024465 0ustar nileshnileshset show timing off . *** *** Test that red-black ACU stripper-collector full matcher isn't run on nonlinear patterns. *** fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . var S : Set . op h : Set -> Set . ceq h(f(N, N, S)) = S if N > 0 . endfm red h(f(2, g(6))) . red h(f(2, g(7))) . red h(f(2, g(20))) . Maude-Maude3.5.1/tests/ResolvedBugs/redBlackNonLinearApril2023.expected0000664000175000017510000000065115036121435025167 0ustar nileshnilesh========================================== reduce in FOO : h(f(2, g(6))) . rewrites: 9 result Set: f(0, 1, 3, 4, 5, 6) ========================================== reduce in FOO : h(f(2, g(7))) . rewrites: 10 result Set: f(0, 1, 3, 4, 5, 6, 7) ========================================== reduce in FOO : h(f(2, g(20))) . rewrites: 23 result Set: f(0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/redBlackNonLinearApril20230000775000175000017510000000044415036121435023372 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/redBlackNonLinearApril2023.maude -no-banner -no-advise \ > redBlackNonLinearApril2023.out 2>&1 diff $srcdir/redBlackNonLinearApril2023.expected redBlackNonLinearApril2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/redBlackNGA_April2023.maude0000664000175000017510000000140315036121435023334 0ustar nileshnileshset show timing off . *** *** Test that red-black ACU stripper-collector full matcher isn't run if there is an non-ground alien. *** fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . var S : Set . var M : Nat . op h : Set -> Set . op i : Nat -> Nat . ceq h(f(N, S, i(M))) = 0 if N > 0 . endfm red h(g(7)) . red h(g(8)) . fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . var S : Set . var M : Nat . op h : Set -> Set . op i : Nat -> Nat . ceq h(f(N, S, i(M))) = M if N > 0 . endfm red h(g(8)) . Maude-Maude3.5.1/tests/ResolvedBugs/redBlackNGA_April2023.expected0000664000175000017510000000057115036121435024047 0ustar nileshnilesh========================================== reduce in FOO : h(g(7)) . rewrites: 8 result Set: h(f(0, 1, 2, 3, 4, 5, 6, 7)) ========================================== reduce in FOO : h(g(8)) . rewrites: 9 result Set: h(f(0, 1, 2, 3, 4, 5, 6, 7, 8)) ========================================== reduce in FOO : h(g(8)) . rewrites: 9 result Set: h(f(0, 1, 2, 3, 4, 5, 6, 7, 8)) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/redBlackNGA_April20230000775000175000017510000000042015036121435022243 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/redBlackNGA_April2023.maude -no-banner -no-advise \ > redBlackNGA_April2023.out 2>&1 diff $srcdir/redBlackNGA_April2023.expected redBlackNGA_April2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/quotedTokenMarch2023.maude0000664000175000017510000000044115036121435023426 0ustar nileshnileshset show timing off . *** *** Test that starting special symbol with a " works correctly. *** fmod FOO is pr NAT . op "s" : Nat -> Nat [iter] . op "f"g : Nat -> Nat [iter] . endfm red "X":Nat . red "X:Y":NzNat . red "X:Y"Z:NzNat . red "X":[Nat] . red "s"^42(0) . red "f"g^2(0) . Maude-Maude3.5.1/tests/ResolvedBugs/quotedTokenMarch2023.expected0000664000175000017510000000120715036121435024135 0ustar nileshnilesh========================================== reduce in FOO : "X":Nat . rewrites: 0 result Nat: "X":Nat ========================================== reduce in FOO : "X:Y":NzNat . rewrites: 0 result NzNat: "X:Y":NzNat ========================================== reduce in FOO : "X:Y"Z:NzNat . rewrites: 0 result NzNat: "X:Y"Z:NzNat ========================================== reduce in FOO : "X":[Nat] . rewrites: 0 result [Nat]: "X":[Nat] ========================================== reduce in FOO : "s"^42(0) . rewrites: 0 result Nat: "s"^42(0) ========================================== reduce in FOO : "f"g^2(0) . rewrites: 0 result Nat: "f"g^2(0) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/quotedTokenMarch20230000775000175000017510000000041415036121435022337 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/quotedTokenMarch2023.maude -no-banner -no-advise \ > quotedTokenMarch2023.out 2>&1 diff $srcdir/quotedTokenMarch2023.expected quotedTokenMarch2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/pseudoParametersMarch2023.maude0000664000175000017510000000723115036121435024453 0ustar nileshnilesh*** *** Test for capture of pseudo-parameters by actual parameters. *** *** FOO has a pseudo parameter X fmod FOO is sort Foo{X} . endfm *** can't import it into a module with parameter X fmod BAR{X :: TRIV} is inc FOO . endfm *** if we rename the sort with the pseudo-parameter it works fmod BAR{X :: TRIV} is inc FOO * (sort Foo{X} to Foo{Y}) . endfm *** OK fmod BAR{Y :: TRIV} is inc FOO . endfm *** but if we change the actual parameter we cannnot construct BAR{X} fmod BAZ{X :: TRIV} is inc BAR{X} . endfm *** also if we rename the pseudo-parameter we cannot construct BAR{Y} * (sort Foo{X} to Foo{Y}) fmod BAZ{Y :: TRIV} is inc BAR{Y} * (sort Foo{X} to Foo{Y}) . endfm *** also if we change both fmod BAZ{Z :: TRIV} is inc BAR{Z} * (sort Foo{X} to Foo{Z}) . endfm *** example from actual release notes 1 fmod FOO is sort Foo{X} . endfm fmod BAR{X :: TRIV} is inc FOO . op a : -> Foo{X} . endfm fmod BAZ{Y :: TRIV} is inc BAR{Y} . endfm *** example from actual release notes 2 fmod FOO{Y :: TRIV} is sort Foo{X} . endfm fmod BAR{X :: TRIV} is inc FOO{X} . sort Bar{X} . subsort Foo{X} < Bar{X} . endfm fmod BAZ{Z :: TRIV} is inc BAR{Z} . endfm *** example from actual release notes 3 fmod FOO{Y :: TRIV} is sort Foo{X} . endfm view V{X :: TRIV} from TRIV to FOO{X} is sort Elt to Foo{X} . endv fmod BAR{Z :: TRIV} is inc SET{V{Z}} . endfm *** example from actual release notes 4 fmod M{X :: TRIV} is sort S{X} . endfm view V{X :: TRIV} from TRIV to M{X} is sort Elt to S{X} . endv fmod FOO{Y :: TRIV} is sort Foo{X} . endfm fmod BAR{X :: TRIV} is inc FOO{V{X}} . op a : -> Foo{X} . endfm fmod BAZ is inc BAR{Nat} . endfm *** example from actual release notes 5 fmod M{X :: TRIV} is sort S{X} . endfm view V{X :: TRIV} from TRIV to M{X} is sort Elt to S{X} . endv fmod M2{X :: TRIV} is sort S2{X} . endfm view V2{X :: TRIV} from TRIV to M2{X} is sort Elt to S2{X} . endv fmod FOO{Y :: TRIV} is sort Foo{X} . endfm fmod BAR{X :: TRIV} is inc FOO{V{V2{X}}} . op a : -> Foo{X} . endfm fmod BAZ is inc BAR{Nat} . endfm *** original example fmod FOO{X :: TRIV} is sort Foo{X,Y} . endfm fmod BAR{X :: TRIV, Y :: TRIV} is inc FOO{X} . sort Bar{X,Y} . subsort Bar{X,Y} < Foo{X,Y} . endfm fmod BAZ is inc BAR{Nat, Nat} . endfm show all . *** follow up example where pseudo-parameter is a module-view fmod NAT-SET is inc SET{Nat} . endfm fmod CONFUSE{Nat :: TRIV} is inc NAT-SET . op a : -> Set{Nat} . endfm fmod TEST is inc CONFUSE{String} . endfm *** renaming example fmod M{X :: TRIV} is inc NAT * (sort Nat to Nat{X}) . endfm *** Paco's example fmod NAT-SET is sort S{X} . endfm fmod CONFUSE{X :: TRIV} is inc NAT-SET . op a : -> S{X} . endfm view V from TRIV to STRING is sort Elt to String . endv fmod TEST is inc CONFUSE{V} . endfm *** examples (5) from draft release notes fmod FOO is sort Foo{X} . endfm fmod BAR{X :: TRIV} is inc FOO . sort Bar{X} . subsort Bar{X} < Foo{X} . endfm fmod BAZ{Y :: TRIV} is inc BAR{Y} . endfm fmod BAZ is inc BAR{Nat} . endfm *** examples (6) from draft release notes fth T is sort Elt . op c{X} : -> Elt . endfth fmod FOO{X :: T} is eq c{X} = c{X} . endfm fmod BAR{Y :: T} is inc FOO{Y} . endfm show all . fmod M is sort Quux . op d{X} : -> Quux . endfm view V from T to M is sort Elt to Quux . op c{X} to d{X} . endv fmod BAR is inc FOO{V} . endfm show all . *** examples (7) from draft release notes fmod M is sort Quux . op c{X} : -> Quux . endfm fmod FOO{X :: TRIV} is inc M . eq c{X} = c{X} . endfm fmod BAR{Y :: TRIV} is inc FOO{Y} . endfm show all . fmod BAR is inc FOO{Nat} . endfm Maude-Maude3.5.1/tests/ResolvedBugs/pseudoParametersMarch2023.expected0000664000175000017510000003635315036121435025170 0ustar nileshnileshWarning: , line 12 (fmod BAR): importation of fmod FOO by fmod BAR not allowed because the pseudo-parameter X of fmod FOO would be captured by an actual parameter of fmod BAR. Warning: In module instantiation BAR{[X]}, parameter X clashes with a pseudo-parameter of BAR. Warning: , line 26 (fmod BAZ): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: : importation of fmod FOO * (sort Foo{X} to Foo{Y}) by fmod BAR{[Y]} * (sort Foo{X} to Foo{Y}) not allowed because the pseudo-parameter Y of fmod FOO * (sort Foo{X} to Foo{Y}) would be captured by an actual parameter of fmod BAR{[Y]} * (sort Foo{X} to Foo{Y}). Warning: : importation of fmod FOO * (sort Foo{X} to Foo{Z}) by fmod BAR{[Z]} * (sort Foo{X} to Foo{Z}) not allowed because the pseudo-parameter Z of fmod FOO * (sort Foo{X} to Foo{Z}) would be captured by an actual parameter of fmod BAR{[Z]} * (sort Foo{X} to Foo{Z}). Warning: , line 47 (fmod BAR): importation of fmod FOO by fmod BAR not allowed because the pseudo-parameter X of fmod FOO would be captured by an actual parameter of fmod BAR. Warning: , line 48 (fmod BAR): undeclared sort Foo{X}. Warning: In module instantiation FOO{[X]}, parameter X clashes with a pseudo-parameter of FOO. Warning: , line 61 (fmod BAR): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 68 (fmod BAZ): unable to use module BAR due to unpatchable errors. Warning: , line 67 (fmod BAZ): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: In module instantiation FOO{[X]}, parameter X clashes with a pseudo-parameter of FOO. Warning: , line 82 (fmod BAR): unusable view V. Warning: , line 81 (fmod BAR): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: In module instantiation FOO{V{[X]}}, argument view V{[X]} has a bound parameter X that clashes with a pseudo-parameter of FOO. Warning: , line 99 (fmod BAR): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 105 (fmod BAZ): unable to use module BAR due to unpatchable errors. Warning: , line 104 (fmod BAZ): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: In module instantiation FOO{V{V2{[X]}}}, argument view V{V2{[X]}} has a bound parameter X that clashes with a pseudo-parameter of FOO. Warning: , line 130 (fmod BAR): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 136 (fmod BAZ): unable to use module BAR due to unpatchable errors. Warning: , line 135 (fmod BAZ): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 146 (fmod BAR): importation of fmod FOO{[X]} by fmod BAR not allowed because the pseudo-parameter Y of fmod FOO{[X]} would be captured by an actual parameter of fmod BAR. Warning: , line 148 (fmod BAR): undeclared sort Foo{X,Y}. fmod BAZ is sorts Bool Zero NzNat Nat Bar{Nat,Nat} Foo{Nat,Nat} . subsorts Zero NzNat < Nat . subsort Bar{Nat,Nat} < Foo{Nat,Nat} . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm Warning: , line 164 (fmod CONFUSE): importation of fmod NAT-SET by fmod CONFUSE not allowed because the pseudo-parameter Nat of fmod NAT-SET would be captured by an actual parameter of fmod CONFUSE. Warning: , line 165 (fmod CONFUSE): undeclared sort Set{Nat}. Warning: , line 175 (fmod M): importation of fmod NAT * (sort Nat to Nat{X}) by fmod M not allowed because the pseudo-parameter X of fmod NAT * (sort Nat to Nat{X}) would be captured by an actual parameter of fmod M. Warning: , line 185 (fmod CONFUSE): importation of fmod NAT-SET by fmod CONFUSE not allowed because the pseudo-parameter X of fmod NAT-SET would be captured by an actual parameter of fmod CONFUSE. Warning: , line 186 (fmod CONFUSE): undeclared sort S{X}. Warning: , line 204 (fmod BAR): importation of fmod FOO by fmod BAR not allowed because the pseudo-parameter X of fmod FOO would be captured by an actual parameter of fmod BAR. Warning: , line 206 (fmod BAR): undeclared sort Foo{X}. fmod BAR{Y :: T} is sorts Y$Elt Bool . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op c{X} : -> Y$Elt . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq c{X} = c{X} . endfm fmod BAR is sorts Bool Quux . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op d{X} : -> Quux . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq d{X} = d{X} . endfm Warning: , line 258 (fmod FOO): importation of fmod M by fmod FOO not allowed because the pseudo-parameter X of fmod M would be captured by an actual parameter of fmod FOO. Warning: , line 259 (fmod FOO): bad token c. Warning: , line 259 (fmod FOO): no parse for statement eq c {X} = c {X} . fmod BAR{Y :: TRIV} is sorts Y$Elt Bool . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/pseudoParametersMarch20230000775000175000017510000000044015036121435023357 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/pseudoParametersMarch2023.maude -no-banner -no-advise \ > pseudoParametersMarch2023.out 2>&1 diff $srcdir/pseudoParametersMarch2023.expected pseudoParametersMarch2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/pseudoParameterTheoryConstantMarch2023.maude0000664000175000017510000000033515036121435027173 0ustar nileshnilesh*** *** Test for instantiation of pseudo-parameters in constants. *** fth T is sort Elt . op c{X} : -> Elt . endfth fmod FOO{X :: T} is eq c{X} = c{X} . endfm fmod BAR{Y :: T} is inc FOO{Y} . endfm show all . Maude-Maude3.5.1/tests/ResolvedBugs/pseudoParameterTheoryConstantMarch2023.expected0000664000175000017510000000273215036121435027704 0ustar nileshnileshfmod BAR{Y :: T} is sorts Y$Elt Bool . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op c{X} : -> Y$Elt . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq c{X} = c{X} . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/pseudoParameterTheoryConstantMarch20230000775000175000017510000000052415036121435026104 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/pseudoParameterTheoryConstantMarch2023.maude -no-banner -no-advise \ > pseudoParameterTheoryConstantMarch2023.out 2>&1 diff $srcdir/pseudoParameterTheoryConstantMarch2023.expected pseudoParameterTheoryConstantMarch2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/polymorphicParsingBugsNovember2020.maude0000664000175000017510000000054015036121435026356 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for failure to parse polymorphic operators using *** flattened assoc or iter syntax. *** fmod POLY-ASSOC is op f : Poly Poly -> Poly [assoc poly (1 2 0)] . endfm red f(X:Bool, Y:Bool, Z:Bool) . fmod POLY-ITER is op f : Poly -> Poly [iter poly (1 0) ] . endfm red f^12345(X:Bool) . Maude-Maude3.5.1/tests/ResolvedBugs/polymorphicParsingBugsNovember2020.expected0000664000175000017510000000042615036121435027067 0ustar nileshnilesh========================================== reduce in POLY-ASSOC : f(X:Bool, Y:Bool, Z:Bool) . rewrites: 0 result [Bool]: f(X:Bool, Y:Bool, Z:Bool) ========================================== reduce in POLY-ITER : f^12345(X:Bool) . rewrites: 0 result [Bool]: f^12345(X:Bool) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/polymorphicParsingBugsNovember20200000775000175000017510000000050415036121435025267 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/polymorphicParsingBugsNovember2020.maude -no-banner -no-advise \ > polymorphicParsingBugsNovember2020.out 2>&1 diff $srcdir/polymorphicParsingBugsNovember2020.expected polymorphicParsingBugsNovember2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/polymorphicOverloadMay2019.maude0000664000175000017510000000234515036121435024673 0ustar nileshnileshset show timing off . set show advisories off . *** polymorphic overloading from two parameter theories (now illegal) fmod COMMON is sort Common . endfm fth T1 is inc COMMON . op g : Universal Common -> Universal [poly (1 0)] . endfth fth T2 is inc COMMON . op g : Universal -> Common [poly (1)] . endfth fmod M{X :: T1, Y :: T2} is sort Dummy{X,Y} . eq g(A:Dummy{X,Y}) = g(A:Dummy{X,Y}) . *** just to track g endfm fmod M2 is inc COMMON . op h : Universal Common -> Universal [poly (1 0)] . endfm view V2 from T1 to M2 is op g to h . endv fmod M3 is inc COMMON . op not-h : Universal -> Common [poly (1)] . endfm view V3 from T2 to M3 is op g to not-h . endv fmod TEST is inc M{V2,V3} . endfm show all . *** polymorphic overloading between parameter theory and parameterized module (now illegal) fth T1 is sort Common . op g : Universal Common -> Universal [poly (1 0)] . endfth fmod M{X :: T1} is op g : Universal -> X$Common [poly (1)] . eq g(A:X$Common) = g(A:X$Common) . *** just to track g endfm fmod M2 is sort Real . op h : Universal Real -> Universal [poly (1 0)] . endfm view V2 from T1 to M2 is sort Common to Real . op g to h . endv fmod TEST is inc M{V2} . endfm show all . Maude-Maude3.5.1/tests/ResolvedBugs/polymorphicOverloadMay2019.expected0000664000175000017510000000242515036121435025400 0ustar nileshnileshWarning: , line 20 (fmod M): parameterized module M has multiple polymorphic operators with name g. Warning: , line 20 (fmod M): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 44 (fmod TEST): unable to use module M due to unpatchable errors. Warning: , line 43 (fmod TEST): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 43 (fmod TEST): module TEST is unusable due to unpatchable errors. Warning: , line 56 (fmod M): parameterized module M has multiple polymorphic operators with name g. Warning: , line 56 (fmod M): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 72 (fmod TEST): unable to use module M due to unpatchable errors. Warning: , line 71 (fmod TEST): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 71 (fmod TEST): module TEST is unusable due to unpatchable errors. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/polymorphicOverloadMay20190000775000175000017510000000044415036121435023602 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/polymorphicOverloadMay2019.maude -no-banner -no-advise \ > polymorphicOverloadMay2019.out 2>&1 diff $srcdir/polymorphicOverloadMay2019.expected polymorphicOverloadMay2019.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/physArgIndexOct2018.maude0000664000175000017510000000162015036121435023230 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that we are not confusing nominal and physical *** argument indices for AC(U) terms with arguments having *** multiplicity > 1. *** mod VENDING-MACHINE is sorts Coin Item Place Marking . subsorts Coin Item < Place < Marking . op __ : Marking Marking -> Marking [ctor assoc comm id: null] . op null : -> Marking [ctor] . op $ : -> Coin [ctor format (r! o)] . op q : -> Coin [ctor format (r! o)] . op a : -> Item [ctor format (b! o)] . op c : -> Item [ctor format (b! o)] . rl [buy-c] : $ => c . rl [buy-a] : $ => a q . rl [change]: q q q q => $ . endm *** bad extra results srewrite in VENDING-MACHINE : $ $ $ using all . *** runaway execution search $ $ $ =>! a a M:Marking . mod FOO is sort Foo . op __ : Foo Foo -> Foo [assoc comm] . ops a b c : -> Foo . rl b => c . endm *** runaway execution rew a a b . Maude-Maude3.5.1/tests/ResolvedBugs/physArgIndexOct2018.expected0000664000175000017510000000112615036121435023737 0ustar nileshnilesh========================================== srewrite in VENDING-MACHINE : $ $ $ using all . Solution 1 rewrites: 1 result Marking: $ $ c Solution 2 rewrites: 2 result Marking: $ $ q a No more solutions. rewrites: 2 ========================================== search in VENDING-MACHINE : $ $ $ =>! a a M:Marking . Solution 1 (state 8) states: 10 rewrites: 12 M:Marking --> q q c Solution 2 (state 9) states: 10 rewrites: 12 M:Marking --> q q q a No more solutions. states: 10 rewrites: 12 ========================================== rewrite in FOO : a a b . rewrites: 1 result Foo: a a c Bye. Maude-Maude3.5.1/tests/ResolvedBugs/physArgIndexOct20180000775000175000017510000000041015036121435022135 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/physArgIndexOct2018.maude -no-banner -no-advise \ > physArgIndexOct2018.out 2>&1 diff $srcdir/physArgIndexOct2018.expected physArgIndexOct2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/parserJune2018.maude0000664000175000017510000000035515036121435022277 0ustar nileshnileshset show advisories off . *** Make sure syntax error is reported in the correct place (after b). fmod FOO is sort Foo . op a_ : Foo -> Foo [prec 1 gather(e)] . op b_ : Foo -> Foo [prec 1] . op c : -> Foo . endfm parse a b c . Maude-Maude3.5.1/tests/ResolvedBugs/parserJune2018.expected0000664000175000017510000000020615036121435023000 0ustar nileshnileshWarning: , line 12: didn't expect token b: a b <---*HERE* Warning: , line 12: no parse for term. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/parserJune20180000775000175000017510000000036415036121435021210 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parserJune2018.maude -no-banner -no-advise \ > parserJune2018.out 2>&1 diff $srcdir/parserJune2018.expected parserJune2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/parameterizedPolymorphicConstantMarch2023.maude0000664000175000017510000000035115036121435027720 0ustar nileshnilesh*** *** Check that parameter changes work for polymorphic constants. *** fmod FOO{X :: TRIV} is op c{X} : -> Universal [poly (0)] . endfm fmod BAR{Y :: TRIV} is inc FOO{Y} . op b : -> Bool . eq b = c{Y} . endfm show all . Maude-Maude3.5.1/tests/ResolvedBugs/parameterizedPolymorphicConstantMarch2023.expected0000664000175000017510000000277415036121435030441 0ustar nileshnileshfmod BAR{Y :: TRIV} is sorts Y$Elt Bool . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op c{Y} : -> Universal [poly (0)] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op b : -> Bool . eq b = c{Y} . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/parameterizedPolymorphicConstantMarch20230000775000175000017510000000054015036121435026631 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parameterizedPolymorphicConstantMarch2023.maude -no-banner -no-advise \ > parameterizedPolymorphicConstantMarch2023.out 2>&1 diff $srcdir/parameterizedPolymorphicConstantMarch2023.expected parameterizedPolymorphicConstantMarch2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/parameterizedConstantsMarch2023.maude0000664000175000017510000000027615036121435025663 0ustar nileshnilesh*** *** Test that declaring multiple parameterized constants in one ops declaration prints correctly. *** fmod FOO is sort Bar . ops (m{X}) (n{X}) (p{X,X}) : -> Bar . endfm show mod . Maude-Maude3.5.1/tests/ResolvedBugs/parameterizedConstantsMarch2023.expected0000664000175000017510000000011415036121435026360 0ustar nileshnileshfmod FOO is sort Bar . ops (m{X}) (n{X}) (p{X,X}) : -> Bar . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/parameterizedConstantsMarch20230000775000175000017510000000047015036121435024570 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parameterizedConstantsMarch2023.maude -no-banner -no-advise \ > parameterizedConstantsMarch2023.out 2>&1 diff $srcdir/parameterizedConstantsMarch2023.expected parameterizedConstantsMarch2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/parameterTheoryMay2019.maude0000664000175000017510000000145215036121435024003 0ustar nileshnileshset show timing off . set show advisories off . *** check number of sorts from parameter theory set include BOOL off . fmod FOO{P :: TRIV} is op a : -> P$Elt . endfm fmod BAR{Q :: TRIV} is inc FOO{Q} * (sort Q$Elt to Bad{Q}) . endfm show all . *** check number of operators from parameter theory set include BOOL off . fth T is sort Elt . op 0 : -> Elt . endfth fmod FOO{P :: T} is op a : -> P$Elt . eq a = 0 . endfm fmod BAR{Q :: T} is inc FOO{Q} * (op 0 to 1) . endfm show all . *** check number of polymorphic operators from parameter theory set include BOOL off . fth T is sort Elt . op f : Poly -> Elt [poly (1)] . endfth fmod FOO{P :: T} is op a : -> P$Elt . op b : -> P$Elt . eq f(a) = b . endfm fmod BAR{Q :: T} is inc FOO{Q} * (op f to g) . endfm show all . Maude-Maude3.5.1/tests/ResolvedBugs/parameterTheoryMay2019.expected0000664000175000017510000000045515036121435024513 0ustar nileshnileshfmod BAR{Q :: TRIV} is sort Q$Elt . op a : -> Q$Elt . endfm fmod BAR{Q :: T} is sort Q$Elt . op 0 : -> Q$Elt . op a : -> Q$Elt . eq a = 0 . endfm fmod BAR{Q :: T} is sort Q$Elt . op f : Universal -> Q$Elt [poly (1)] . op a : -> Q$Elt . op b : -> Q$Elt . eq f(a) = b . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/parameterTheoryMay20190000775000175000017510000000042415036121435022712 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parameterTheoryMay2019.maude -no-banner -no-advise \ > parameterTheoryMay2019.out 2>&1 diff $srcdir/parameterTheoryMay2019.expected parameterTheoryMay2019.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/parameterTheoryCopyMay2019.maude0000664000175000017510000000043315036121435024634 0ustar nileshnileshset show timing off . set show advisories off . *** trick parameter copy into failing fmod FOO is sort Z$Elt . *** nasty endfm fth TRIV' is inc FOO . sort Elt . endfth fmod BAR{Y :: TRIV'} is sort Bar{Y} . endfm fmod BAZ{Z :: TRIV'} is inc BAR{Z} . endfm show all . Maude-Maude3.5.1/tests/ResolvedBugs/parameterTheoryCopyMay2019.expected0000664000175000017510000000100115036121435025332 0ustar nileshnileshWarning: : sort Z$Elt has been imported from both , line 12 (fth TRIV') and , line 7 (fmod FOO). Since it is imported from both a module and a theory, this renders theory Z :: TRIV' unusable. Warning: , line 19 (fmod BAZ): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 19 (fmod BAZ): module BAZ is unusable due to unpatchable errors. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/parameterTheoryCopyMay20190000775000175000017510000000044415036121435023547 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parameterTheoryCopyMay2019.maude -no-banner -no-advise \ > parameterTheoryCopyMay2019.out 2>&1 diff $srcdir/parameterTheoryCopyMay2019.expected parameterTheoryCopyMay2019.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/orphanedViewInstantiationFebruary2023.maude0000664000175000017510000000027715036121435027060 0ustar nileshnilesh*** *** Test that orphaned view instantiation is garbage collected. *** fmod FOO is inc LIST{Set{Nat}} . endfm show modules . show views . fmod FOO is endfm show modules . show views . Maude-Maude3.5.1/tests/ResolvedBugs/orphanedViewInstantiationFebruary2023.expected0000664000175000017510000003122315036121435027561 0ustar nileshnileshfmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fmod FOO fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Nat} fmod LIST{Set{Nat}} view Bool view Nat view Int view Rat view Float view String view Qid view TRIV view STRICT-WEAK-ORDER view STRICT-TOTAL-ORDER view Nat< view Int< view Rat< view Float< view String< view TOTAL-PREORDER view TOTAL-ORDER view Nat<= view Int<= view Rat<= view Float<= view String<= view DEFAULT view Nat0 view Int0 view Rat0 view Float0 view String0 view Qid0 view List view WeaklySortableList view SortableList view WeaklySortableList' view SortableList' view Set view List* view Set* view Map view Array view Set{Nat} fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fmod FOO fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) view Bool view Nat view Int view Rat view Float view String view Qid view TRIV view STRICT-WEAK-ORDER view STRICT-TOTAL-ORDER view Nat< view Int< view Rat< view Float< view String< view TOTAL-PREORDER view TOTAL-ORDER view Nat<= view Int<= view Rat<= view Float<= view String<= view DEFAULT view Nat0 view Int0 view Rat0 view Float0 view String0 view Qid0 view List view WeaklySortableList view SortableList view WeaklySortableList' view SortableList' view Set view List* view Set* view Map view Array Bye. Maude-Maude3.5.1/tests/ResolvedBugs/orphanedViewInstantiationFebruary20230000775000175000017510000000052015036121435025760 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/orphanedViewInstantiationFebruary2023.maude -no-banner -no-advise \ > orphanedViewInstantiationFebruary2023.out 2>&1 diff $srcdir/orphanedViewInstantiationFebruary2023.expected orphanedViewInstantiationFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/opRenamingParseErrorMarch2023.maude0000664000175000017510000000032715036121435025233 0ustar nileshnilesh*** *** Test that an op renaming using the sort "to" parses correctly. *** fmod FOO is sorts Foo to . op f : Foo to -> Foo . endfm fmod BAR is inc FOO * (op f : Foo to -> Foo to g) . endfm show desugared . Maude-Maude3.5.1/tests/ResolvedBugs/opRenamingParseErrorMarch2023.expected0000664000175000017510000000014015036121435025732 0ustar nileshnileshfmod BAR is including BOOL . including FOO * (op f : [Foo] [to] -> [Foo] to g) . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/opRenamingParseErrorMarch20230000775000175000017510000000046015036121435024142 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/opRenamingParseErrorMarch2023.maude -no-banner -no-advise \ > opRenamingParseErrorMarch2023.out 2>&1 diff $srcdir/opRenamingParseErrorMarch2023.expected opRenamingParseErrorMarch2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/objectMessageOct2018.maude0000664000175000017510000000110415036121435023373 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that object-message rewriting fake rewrites are ignored *** by trace/break/profile code. *** mod FOO is inc CONFIGURATION . op User : -> Cid . ops me other : -> Oid . op no-op : Oid Oid -> Msg [msg] . vars X Y : Oid . var AS : AttributeSet . rl < X : User | AS > no-op(X, Y) => < X : User | AS > . endm set break on . break select __ . set trace on . set trace whole on . set profile on . frew < me : User | none > no-op(me, other) . *** we expect a single break to debugger resume . show profile . Maude-Maude3.5.1/tests/ResolvedBugs/objectMessageOct2018.expected0000664000175000017510000000077015036121435024111 0ustar nileshnilesh========================================== frewrite in FOO : no-op(me, other) < me : User | none > . break on symbol: __ *********** rule rl no-op(X, Y) < X : User | AS > => < X : User | AS > . X --> me Y --> other AS --> (none).AttributeSet Old: no-op(me, other) < me : User | none > no-op(me, other) < me : User | none > ---> < me : User | none > New: < me : User | none > rewrites: 1 result Object: < me : User | none > rl no-op(X, Y) < X : User | AS > => < X : User | AS > . rewrites: 1 (100%) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/objectMessageOct20180000775000175000017510000000041415036121435022307 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/objectMessageOct2018.maude -no-banner -no-advise \ > objectMessageOct2018.out 2>&1 diff $srcdir/objectMessageOct2018.expected objectMessageOct2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/moduleViewBadWarningFebruary2023.maude0000664000175000017510000000031515036121435025726 0ustar nileshnilesh*** *** Test for bad warning for a good module-view. *** fmod M is sort Foo . op a : -> Foo . endfm fth T is inc M . op c : -> Foo . endfth view V from T to M is op c to a . endv show view . Maude-Maude3.5.1/tests/ResolvedBugs/moduleViewBadWarningFebruary2023.expected0000664000175000017510000000005615036121435026436 0ustar nileshnileshview V from T to M is op c to a . endv Bye. Maude-Maude3.5.1/tests/ResolvedBugs/moduleViewBadWarningFebruary20230000775000175000017510000000047415036121435024645 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/moduleViewBadWarningFebruary2023.maude -no-banner -no-advise \ > moduleViewBadWarningFebruary2023.out 2>&1 diff $srcdir/moduleViewBadWarningFebruary2023.expected moduleViewBadWarningFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/moduleSumMay2019.maude0000664000175000017510000000032015036121435022573 0ustar nileshnileshset show timing off . set show advisories off . *** check for summand commutation fmod FOO is pr NAT + QID . endfm show mod . *** check for memory leak fmod FOO is pr NAT + FLOAT + . endfm show mod . Maude-Maude3.5.1/tests/ResolvedBugs/moduleSumMay2019.expected0000664000175000017510000000026315036121435023307 0ustar nileshnileshfmod FOO is protecting NAT + QID . endfm Warning: , line 13 (fmod FOO): missing module expression after +. fmod FOO is protecting NAT + FLOAT . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/moduleSumMay20190000775000175000017510000000037415036121435021515 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/moduleSumMay2019.maude -no-banner -no-advise \ > moduleSumMay2019.out 2>&1 diff $srcdir/moduleSumMay2019.expected moduleSumMay2019.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/moduleOrphanedByViewFebruary2023.maude0000664000175000017510000000050015036121435025741 0ustar nileshnilesh*** *** Test that a module orphaned by the replacement of a view that depended on in is immediately garbage collected. *** view V from TRIV + TRIV * (sort Elt to Elt2) to NAT + FLOAT is sort Elt to Nat . sort Elt2 to Float . endv show modules . view V from TRIV to NAT is sort Elt to Nat . endv show modules . Maude-Maude3.5.1/tests/ResolvedBugs/moduleOrphanedByViewFebruary2023.expected0000664000175000017510000002727115036121435026465 0ustar nileshnileshfmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) fth TRIV * (sort Elt to Elt2) fth TRIV + TRIV * (sort Elt to Elt2) fmod NAT + FLOAT fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/moduleOrphanedByViewFebruary20230000775000175000017510000000047415036121435024664 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/moduleOrphanedByViewFebruary2023.maude -no-banner -no-advise \ > moduleOrphanedByViewFebruary2023.out 2>&1 diff $srcdir/moduleOrphanedByViewFebruary2023.expected moduleOrphanedByViewFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/metaParseStrategyApril2020.maude0000664000175000017510000000025515036121435024605 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test metaParseStrategy() on top(all). *** red in META-LEVEL : metaParseStrategy(['NAT], none, 'top '`( 'all '`)) . Maude-Maude3.5.1/tests/ResolvedBugs/metaParseStrategyApril2020.expected0000664000175000017510000000024215036121435025307 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaParseStrategy(['NAT], none, 'top '`( 'all '`)) . rewrites: 2 result Strategy: top(all) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/metaParseStrategyApril20200000775000175000017510000000044415036121435023516 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaParseStrategyApril2020.maude -no-banner -no-advise \ > metaParseStrategyApril2020.out 2>&1 diff $srcdir/metaParseStrategyApril2020.expected metaParseStrategyApril2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/metaNarrowingApplyMarch2023.maude0000664000175000017510000001470615036121435024760 0ustar nileshnileshset show timing off . *** *** Test for corruption of narrowing context because of shared VariableDagNodes *** after renaming variables. *** *** Provided by Santiago Escobar, Julia Sapina and Raúl López Rueda *** *** With the original version, 3.3beta returned an incorrect context in the result. load smt.maude reduce in META-LEVEL : metaNarrowingApply(mod 'DAM-CONTROLLER-TEST is including 'BOOLEAN . protecting 'REAL-INTEGER . protecting 'BOOL . protecting 'META-TERM . sorts 'Aperture ; 'BoolT ; 'DamState ; 'Spillway ; 'SpillwayId ; 'Spillways ; 'State ; 'Success ; 'Real? . subsort 'Spillway < 'Spillways . subsort 'Real < 'Real? . op 'success : nil -> 'Success [ctor] . op 'tt : nil -> 'BoolT [ctor] . op 's3 : nil -> 'SpillwayId [ctor] . op 's2 : nil -> 'SpillwayId [ctor] . op 's1 : nil -> 'SpillwayId [ctor] . op 'outflow : 'Spillways -> 'Real? [none] . op 'open3 : nil -> 'Aperture [ctor] . op 'open2 : nil -> 'Aperture [ctor] . op 'open1 : nil -> 'Aperture [ctor] . op 'empty : nil -> 'Spillways [ctor] . op 'close : nil -> 'Aperture [ctor] . op 'aperture : 'Aperture -> 'Real? [none] . op '`{_;_;_;_`} : 'Spillways 'Real 'Real 'Bool -> 'State [none] . op '`[_`,_`] : 'SpillwayId 'Aperture -> 'Spillway [ctor] . op '_|_ : 'Universal 'BoolT -> 'Universal [ctor poly(1 0)] . op '__ : 'Spillways 'Spillways -> 'Spillways [assoc comm ctor id('empty.Spillways)] . op '_>>_ : 'Boolean 'Universal -> 'Universal [ctor poly(2 0)] . op '_=>>_ : '`[Success`] 'Universal -> 'Universal [ctor strat(1 0) frozen(2) poly(2 0)] . op '_==:==_ : 'Universal 'Universal -> 'Success [ctor poly(1 2)] . op '_=:=_ : 'Universal 'Universal -> 'BoolT [ctor poly(1 2)] . none eq 'aperture['open2.Aperture] = '400/1.Real [variant] . eq 'aperture['open3.Aperture] = '1200/1.Real [variant] . eq 'aperture['open1.Aperture] = '200/1.Real [variant] . eq 'aperture['close.Aperture] = '0/1.Real [variant] . eq '_|_['X:Real,'tt.BoolT] = 'X:Real [variant] . eq '_=:=_['X:Real,'X:Real] = 'tt.BoolT [variant] . eq '_|_['X:Real?,'tt.BoolT] = 'X:Real? [variant] . eq '_=:=_['X:Real?,'X:Real?] = 'tt.BoolT [variant] . *** Remove this and everything works rl '`{_;_;_;_`}['SC:Spillways,'V1:Real,'T:Real,'false.Bool] => '_>>_['_and_[ '_and_['_===_['V2:Real,'_-_['_+_['V1:Real,'_*_['INFLOW:Real,'DTIME:Real]], '_*_['Y:Real,'DTIME:Real]]],'_>_['INFLOW:Real,'0/1.Real]],'_>_['DTIME:Real, '0/1.Real]],'_=>>_['_==:==_['outflow['SC:Spillways],'Y:Real],'`{_;_;_;_`}[ 'SC:Spillways,'V2:Real,'_+_['T:Real,'DTIME:Real],'true.Bool]]] [nonexec narrowing label('volume)] . rl '_|_['outflow['__['SC:Spillways,'`[_`,_`]['S:SpillwayId,'O:Aperture]]], '_=:=_['aperture['O:Aperture],'X:Real]] => '_+_['X:Real,'outflow[ 'SC:Spillways]] [nonexec narrowing label('outflow-recursive)] . endm, '_=>>_[ '_==:==_['outflow['__['`[_`,_`]['s1.SpillwayId,'$22:Aperture],'`[_`,_`]['s2.SpillwayId,'$23:Aperture],'`[_`,_`]['s3.SpillwayId,'$24:Aperture]]],'$1:Real], '`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId,'$25:Aperture],'`[_`,_`]['s2.SpillwayId,'$26:Aperture],'`[_`,_`]['s3.SpillwayId,'$27:Aperture]],'$28:Real,'_+_['$29:Real,'$30:Real],'false.Bool] ], *** Remove these irreducibility terms and everything works ('`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId,'$8:Aperture],'`[_`,_`]['s2.SpillwayId,'$9:Aperture],'`[_`,_`]['s3.SpillwayId,'$10:Aperture]],'$11:Real,'$12:Real,'false.Bool], '`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId,'$25:Aperture],'`[_`,_`]['s2.SpillwayId,'$26:Aperture],'`[_`,_`]['s3.SpillwayId,'$27:Aperture]],'$28:Real,'_+_['$29:Real,'$30:Real],'true.Bool]) --- empty , '%, none, 1) . *** With the first rule removed, 3.3beta crashed on Linux. reduce in META-LEVEL : metaNarrowingApply(mod 'DAM-CONTROLLER-TEST is including 'BOOLEAN . protecting 'REAL-INTEGER . protecting 'BOOL . protecting 'META-TERM . sorts 'Aperture ; 'BoolT ; 'DamState ; 'Spillway ; 'SpillwayId ; 'Spillways ; 'State ; 'Success ; 'Real? . subsort 'Spillway < 'Spillways . subsort 'Real < 'Real? . op 'success : nil -> 'Success [ctor] . op 'tt : nil -> 'BoolT [ctor] . op 's3 : nil -> 'SpillwayId [ctor] . op 's2 : nil -> 'SpillwayId [ctor] . op 's1 : nil -> 'SpillwayId [ctor] . op 'outflow : 'Spillways -> 'Real? [none] . op 'open3 : nil -> 'Aperture [ctor] . op 'open2 : nil -> 'Aperture [ctor] . op 'open1 : nil -> 'Aperture [ctor] . op 'empty : nil -> 'Spillways [ctor] . op 'close : nil -> 'Aperture [ctor] . op 'aperture : 'Aperture -> 'Real? [none] . op '`{_;_;_;_`} : 'Spillways 'Real 'Real 'Bool -> 'State [none] . op '`[_`,_`] : 'SpillwayId 'Aperture -> 'Spillway [ctor] . op '_|_ : 'Universal 'BoolT -> 'Universal [ctor poly(1 0)] . op '__ : 'Spillways 'Spillways -> 'Spillways [assoc comm ctor id('empty.Spillways)] . op '_>>_ : 'Boolean 'Universal -> 'Universal [ctor poly(2 0)] . op '_=>>_ : '`[Success`] 'Universal -> 'Universal [ctor strat(1 0) frozen(2) poly(2 0)] . op '_==:==_ : 'Universal 'Universal -> 'Success [ctor poly(1 2)] . op '_=:=_ : 'Universal 'Universal -> 'BoolT [ctor poly(1 2)] . none eq 'aperture['open2.Aperture] = '400/1.Real [variant] . eq 'aperture['open3.Aperture] = '1200/1.Real [variant] . eq 'aperture['open1.Aperture] = '200/1.Real [variant] . eq 'aperture['close.Aperture] = '0/1.Real [variant] . eq '_|_['X:Real,'tt.BoolT] = 'X:Real [variant] . eq '_=:=_['X:Real,'X:Real] = 'tt.BoolT [variant] . eq '_|_['X:Real?,'tt.BoolT] = 'X:Real? [variant] . eq '_=:=_['X:Real?,'X:Real?] = 'tt.BoolT [variant] . rl '_|_['outflow['__['SC:Spillways,'`[_`,_`]['S:SpillwayId,'O:Aperture]]], '_=:=_['aperture['O:Aperture],'X:Real]] => '_+_['X:Real,'outflow[ 'SC:Spillways]] [nonexec narrowing label('outflow-recursive)] . endm, '_=>>_[ '_==:==_['outflow['__['`[_`,_`]['s1.SpillwayId,'$22:Aperture],'`[_`,_`]['s2.SpillwayId,'$23:Aperture],'`[_`,_`]['s3.SpillwayId,'$24:Aperture]]],'$1:Real], '`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId,'$25:Aperture],'`[_`,_`]['s2.SpillwayId,'$26:Aperture],'`[_`,_`]['s3.SpillwayId,'$27:Aperture]],'$28:Real,'_+_['$29:Real,'$30:Real],'false.Bool] ], *** Remove these irreducibility terms and everything works ('`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId,'$8:Aperture],'`[_`,_`]['s2.SpillwayId,'$9:Aperture],'`[_`,_`]['s3.SpillwayId,'$10:Aperture]],'$11:Real,'$12:Real,'false.Bool], '`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId,'$25:Aperture],'`[_`,_`]['s2.SpillwayId,'$26:Aperture],'`[_`,_`]['s3.SpillwayId,'$27:Aperture]],'$28:Real,'_+_['$29:Real,'$30:Real],'true.Bool]) --- empty , '%, none, 1) . Maude-Maude3.5.1/tests/ResolvedBugs/metaNarrowingApplyMarch2023.expected0000664000175000017510000002127615036121435025466 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaNarrowingApply(mod 'DAM-CONTROLLER-TEST is including 'BOOLEAN . protecting 'REAL-INTEGER . protecting 'BOOL . protecting 'META-TERM . sorts 'Aperture ; 'BoolT ; 'DamState ; 'Spillway ; 'SpillwayId ; 'Spillways ; 'State ; 'Real? ; 'Success . subsort 'Real < 'Real? . subsort 'Spillway < 'Spillways . ((((((((((((((((((op '_=:=_ : 'Universal 'Universal -> 'BoolT [ctor poly(1 2)] . op '_==:==_ : 'Universal 'Universal -> 'Success [ctor poly(1 2)] .) op '_=>>_ : '`[Success`] 'Universal -> 'Universal [ctor strat(1 0) frozen(2) poly(2 0)] .) op '_>>_ : 'Boolean 'Universal -> 'Universal [ctor poly(2 0)] .) op '__ : 'Spillways 'Spillways -> 'Spillways [assoc comm ctor id( 'empty.Spillways)] .) op '_|_ : 'Universal 'BoolT -> 'Universal [ctor poly(1 0)] .) op '`[_`,_`] : 'SpillwayId 'Aperture -> 'Spillway [ctor] .) op '`{_;_;_;_`} : 'Spillways 'Real 'Real 'Bool -> 'State [none] .) op 'aperture : 'Aperture -> 'Real? [none] .) op 'close : nil -> 'Aperture [ctor] .) op 'empty : nil -> 'Spillways [ctor] .) op 'open1 : nil -> 'Aperture [ctor] .) op 'open2 : nil -> 'Aperture [ctor] .) op 'open3 : nil -> 'Aperture [ctor] .) op 'outflow : 'Spillways -> 'Real? [none] .) op 's1 : nil -> 'SpillwayId [ctor] .) op 's2 : nil -> 'SpillwayId [ctor] .) op 's3 : nil -> 'SpillwayId [ctor] .) op 'tt : nil -> 'BoolT [ctor] .) op 'success : nil -> 'Success [ctor] . none ((((((eq '_=:=_['X:Real?, 'X:Real?] = 'tt.BoolT [variant] . eq '_|_['X:Real?, 'tt.BoolT] = 'X:Real? [variant] .) eq '_=:=_['X:Real, 'X:Real] = 'tt.BoolT [variant] .) eq '_|_['X:Real, 'tt.BoolT] = 'X:Real [variant] .) eq 'aperture['close.Aperture] = '0/1.Real [variant] .) eq 'aperture['open1.Aperture] = '200/1.Real [variant] .) eq 'aperture['open3.Aperture] = '1200/1.Real [variant] .) eq 'aperture['open2.Aperture] = '400/1.Real [variant] . rl '_|_['outflow['__['SC:Spillways, '`[_`,_`]['S:SpillwayId, 'O:Aperture]]], '_=:=_['aperture['O:Aperture], 'X:Real]] => '_+_['X:Real, 'outflow[ 'SC:Spillways]] [nonexec narrowing label('outflow-recursive)] . rl '`{_;_;_;_`}['SC:Spillways, 'V1:Real, 'T:Real, 'false.Bool] => '_>>_[ '_and_['_and_['_===_['V2:Real, '_-_['_+_['V1:Real, '_*_['INFLOW:Real, 'DTIME:Real]], '_*_['Y:Real, 'DTIME:Real]]], '_>_['INFLOW:Real, '0/1.Real]], '_>_['DTIME:Real, '0/1.Real]], '_=>>_['_==:==_['outflow[ 'SC:Spillways], 'Y:Real], '`{_;_;_;_`}['SC:Spillways, 'V2:Real, '_+_[ 'T:Real, 'DTIME:Real], 'true.Bool]]] [nonexec narrowing label('volume)] . endm, '_=>>_['_==:==_['outflow['__['`[_`,_`]['s1.SpillwayId, '$22:Aperture], '`[_`,_`]['s2.SpillwayId, '$23:Aperture], '`[_`,_`]['s3.SpillwayId, '$24:Aperture]]], '$1:Real], '`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId, '$25:Aperture], '`[_`,_`]['s2.SpillwayId, '$26:Aperture], '`[_`,_`][ 's3.SpillwayId, '$27:Aperture]], '$28:Real, '_+_['$29:Real, '$30:Real], 'false.Bool]], ('`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId, '$8:Aperture], '`[_`,_`]['s2.SpillwayId, '$9:Aperture], '`[_`,_`]['s3.SpillwayId, '$10:Aperture]], '$11:Real, '$12:Real, 'false.Bool], '`{_;_;_;_`}['__[ '`[_`,_`]['s1.SpillwayId, '$25:Aperture], '`[_`,_`]['s2.SpillwayId, '$26:Aperture], '`[_`,_`]['s3.SpillwayId, '$27:Aperture]], '$28:Real, '_+_[ '$29:Real, '$30:Real], 'true.Bool]), '%, none, 1) . rewrites: 14 result NarrowingApplyResult: { '_=>>_['_==:==_['_+_['0/1.Real, 'outflow['__['`[_`,_`]['s2.SpillwayId, '@1:Aperture], '`[_`,_`]['s3.SpillwayId, '@2:Aperture]]]], '@3:Real], '`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId, '@4:Aperture], '`[_`,_`][ 's2.SpillwayId, '@5:Aperture], '`[_`,_`]['s3.SpillwayId, '@6:Aperture]], '@7:Real, '_+_['@8:Real, '@9:Real], 'false.Bool]], '`[State`], '_=>>_['_==:==_[[], '$1:Real], '`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId, '$25:Aperture], '`[_`,_`]['s2.SpillwayId, '$26:Aperture], '`[_`,_`][ 's3.SpillwayId, '$27:Aperture]], '$28:Real, '_+_['$29:Real, '$30:Real], 'false.Bool]], 'outflow-recursive, '$1:Real <- '@3:Real ; '$22:Aperture <- 'close.Aperture ; '$23:Aperture <- '@1:Aperture ; '$24:Aperture <- '@2:Aperture ; '$25:Aperture <- '@4:Aperture ; '$26:Aperture <- '@5:Aperture ; '$27:Aperture <- '@6:Aperture ; '$28:Real <- '@7:Real ; '$29:Real <- '@8:Real ; '$30:Real <- '@9:Real, 'O:Aperture <- 'close.Aperture ; 'S:SpillwayId <- 's1.SpillwayId ; 'SC:Spillways <- '__['`[_`,_`]['s2.SpillwayId, '@1:Aperture], '`[_`,_`][ 's3.SpillwayId, '@2:Aperture]] ; 'X:Real <- '0/1.Real, '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(mod 'DAM-CONTROLLER-TEST is including 'BOOLEAN . protecting 'REAL-INTEGER . protecting 'BOOL . protecting 'META-TERM . sorts 'Aperture ; 'BoolT ; 'DamState ; 'Spillway ; 'SpillwayId ; 'Spillways ; 'State ; 'Real? ; 'Success . subsort 'Real < 'Real? . subsort 'Spillway < 'Spillways . ((((((((((((((((((op '_=:=_ : 'Universal 'Universal -> 'BoolT [ctor poly(1 2)] . op '_==:==_ : 'Universal 'Universal -> 'Success [ctor poly(1 2)] .) op '_=>>_ : '`[Success`] 'Universal -> 'Universal [ctor strat(1 0) frozen(2) poly(2 0)] .) op '_>>_ : 'Boolean 'Universal -> 'Universal [ctor poly(2 0)] .) op '__ : 'Spillways 'Spillways -> 'Spillways [assoc comm ctor id( 'empty.Spillways)] .) op '_|_ : 'Universal 'BoolT -> 'Universal [ctor poly(1 0)] .) op '`[_`,_`] : 'SpillwayId 'Aperture -> 'Spillway [ctor] .) op '`{_;_;_;_`} : 'Spillways 'Real 'Real 'Bool -> 'State [none] .) op 'aperture : 'Aperture -> 'Real? [none] .) op 'close : nil -> 'Aperture [ctor] .) op 'empty : nil -> 'Spillways [ctor] .) op 'open1 : nil -> 'Aperture [ctor] .) op 'open2 : nil -> 'Aperture [ctor] .) op 'open3 : nil -> 'Aperture [ctor] .) op 'outflow : 'Spillways -> 'Real? [none] .) op 's1 : nil -> 'SpillwayId [ctor] .) op 's2 : nil -> 'SpillwayId [ctor] .) op 's3 : nil -> 'SpillwayId [ctor] .) op 'tt : nil -> 'BoolT [ctor] .) op 'success : nil -> 'Success [ctor] . none ((((((eq '_=:=_['X:Real?, 'X:Real?] = 'tt.BoolT [variant] . eq '_|_['X:Real?, 'tt.BoolT] = 'X:Real? [variant] .) eq '_=:=_['X:Real, 'X:Real] = 'tt.BoolT [variant] .) eq '_|_['X:Real, 'tt.BoolT] = 'X:Real [variant] .) eq 'aperture['close.Aperture] = '0/1.Real [variant] .) eq 'aperture['open1.Aperture] = '200/1.Real [variant] .) eq 'aperture['open3.Aperture] = '1200/1.Real [variant] .) eq 'aperture['open2.Aperture] = '400/1.Real [variant] . rl '_|_['outflow['__['SC:Spillways, '`[_`,_`]['S:SpillwayId, 'O:Aperture]]], '_=:=_['aperture['O:Aperture], 'X:Real]] => '_+_['X:Real, 'outflow[ 'SC:Spillways]] [nonexec narrowing label('outflow-recursive)] . endm, '_=>>_['_==:==_['outflow['__['`[_`,_`]['s1.SpillwayId, '$22:Aperture], '`[_`,_`]['s2.SpillwayId, '$23:Aperture], '`[_`,_`]['s3.SpillwayId, '$24:Aperture]]], '$1:Real], '`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId, '$25:Aperture], '`[_`,_`]['s2.SpillwayId, '$26:Aperture], '`[_`,_`][ 's3.SpillwayId, '$27:Aperture]], '$28:Real, '_+_['$29:Real, '$30:Real], 'false.Bool]], ('`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId, '$8:Aperture], '`[_`,_`]['s2.SpillwayId, '$9:Aperture], '`[_`,_`]['s3.SpillwayId, '$10:Aperture]], '$11:Real, '$12:Real, 'false.Bool], '`{_;_;_;_`}['__[ '`[_`,_`]['s1.SpillwayId, '$25:Aperture], '`[_`,_`]['s2.SpillwayId, '$26:Aperture], '`[_`,_`]['s3.SpillwayId, '$27:Aperture]], '$28:Real, '_+_[ '$29:Real, '$30:Real], 'true.Bool]), '%, none, 1) . rewrites: 14 result NarrowingApplyResult: { '_=>>_['_==:==_['_+_['0/1.Real, 'outflow['__['`[_`,_`]['s1.SpillwayId, '@1:Aperture], '`[_`,_`]['s3.SpillwayId, '@2:Aperture]]]], '@3:Real], '`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId, '@4:Aperture], '`[_`,_`][ 's2.SpillwayId, '@5:Aperture], '`[_`,_`]['s3.SpillwayId, '@6:Aperture]], '@7:Real, '_+_['@8:Real, '@9:Real], 'false.Bool]], '`[State`], '_=>>_['_==:==_[[], '$1:Real], '`{_;_;_;_`}['__['`[_`,_`]['s1.SpillwayId, '$25:Aperture], '`[_`,_`]['s2.SpillwayId, '$26:Aperture], '`[_`,_`][ 's3.SpillwayId, '$27:Aperture]], '$28:Real, '_+_['$29:Real, '$30:Real], 'false.Bool]], 'outflow-recursive, '$1:Real <- '@3:Real ; '$22:Aperture <- '@1:Aperture ; '$23:Aperture <- 'close.Aperture ; '$24:Aperture <- '@2:Aperture ; '$25:Aperture <- '@4:Aperture ; '$26:Aperture <- '@5:Aperture ; '$27:Aperture <- '@6:Aperture ; '$28:Real <- '@7:Real ; '$29:Real <- '@8:Real ; '$30:Real <- '@9:Real, 'O:Aperture <- 'close.Aperture ; 'S:SpillwayId <- 's2.SpillwayId ; 'SC:Spillways <- '__['`[_`,_`]['s1.SpillwayId, '@1:Aperture], '`[_`,_`][ 's3.SpillwayId, '@2:Aperture]] ; 'X:Real <- '0/1.Real, '@ } Bye. Maude-Maude3.5.1/tests/ResolvedBugs/metaNarrowingApplyMarch20230000775000175000017510000000045015036121435023660 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaNarrowingApplyMarch2023.maude -no-banner -no-advise \ > metaNarrowingApplyMarch2023.out 2>&1 diff $srcdir/metaNarrowingApplyMarch2023.expected metaNarrowingApplyMarch2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/metaModuleCacheJune2018.maude0000664000175000017510000000244515036121435024025 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that the meta-interpreter doesn't use the meta-module cache. *** fmod FOO is sort Foo . ops a b : -> Foo . eq a = b . endfm load metaInterpreter mod TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op state:_ : Nat -> Attribute . vars X Y Z : Oid . rl < X : User | state: 0 > createdInterpreter(X, Y, Z) => < X : User | state: 1 > insertModule(Z, X, foo) . rl < X : User | state: 1 > insertedModule(X, Y) => < X : User | state: 2 > insertModule(Y, X, bar) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > reduceTerm(Y, X, 'BAR, 'a.Foo) . op foo : -> Module . eq foo = ( fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . none eq 'a.Foo = 'c.Foo [none] . endfm ) . op bar : -> Module . eq bar = ( fmod 'BAR is protecting 'FOO . sorts none . none none none none endfm ) . endm *** correct result erew <> < me : User | state: 0 > createInterpreter(interpreterManager, me, none) . *** put a fmod BAR with same meta-syntax but different semantics in cache red metaReduce(bar, 'a.Foo) . *** wrong result erew <> < me : User | state: 0 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/ResolvedBugs/metaModuleCacheJune2018.expected0000664000175000017510000000122315036121435024524 0ustar nileshnilesh========================================== erewrite in TEST : <> < me : User | state: 0 > createInterpreter( interpreterManager, me, none) . rewrites: 6 result Configuration: <> < me : User | state: 3 > reducedTerm(me, interpreter( 0), 1, 'c.Foo, 'Foo) ========================================== reduce in TEST : metaReduce(bar, 'a.Foo) . rewrites: 3 result ResultPair: {'b.Foo, 'Foo} ========================================== erewrite in TEST : <> < me : User | state: 0 > createInterpreter( interpreterManager, me, none) . rewrites: 6 result Configuration: <> < me : User | state: 3 > reducedTerm(me, interpreter( 0), 1, 'c.Foo, 'Foo) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/metaModuleCacheJune20180000775000175000017510000000043015036121435022726 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaModuleCacheJune2018.maude -no-banner -no-advise \ > metaModuleCacheJune2018.out 2>&1 diff $srcdir/metaModuleCacheJune2018.expected metaModuleCacheJune2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/metaIntRewriteJune2018.maude0000664000175000017510000000173515036121435023751 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that the meta-interpreter resets the next rule to try at each rewriteTerm() message. *** load metaInterpreter mod FOO is sort Foo . ops a b c : -> Foo . rl a => b . rl a => c . endm mod TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . vars X Y Z : Oid . var T : Term . var S : Sort . var A : AttributeSet . var N : Nat . op prev:_ : Term -> Attribute [ctor] . rl < X : User | A > createdInterpreter(X, Y, Z) => < X : User | A > insertModule(Z, X, upModule('FOO, true)) . rl < X : User | A > insertedModule(X, Y) => < X : User | A > rewriteTerm(Y, X, unbounded, 'FOO, 'a.Foo) . rl < X : User | none > rewroteTerm(X, Y, N, T, S) => < X : User | prev: T > rewriteTerm(Y, X, unbounded, 'FOO, 'a.Foo) . endm *** second rewriteTerm returns different result from first. erew <> < me : User | none > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/ResolvedBugs/metaIntRewriteJune2018.expected0000664000175000017510000000041115036121435024445 0ustar nileshnilesh========================================== erewrite in TEST : <> < me : User | none > createInterpreter( interpreterManager, me, none) . rewrites: 6 result Configuration: <> < me : User | prev: 'b.Foo > rewroteTerm(me, interpreter(0), 1, 'b.Foo, 'Foo) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/metaIntRewriteJune20180000775000175000017510000000042415036121435022654 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntRewriteJune2018.maude -no-banner -no-advise \ > metaIntRewriteJune2018.out 2>&1 diff $srcdir/metaIntRewriteJune2018.expected metaIntRewriteJune2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/metaIntMatchOct2018.maude0000664000175000017510000000352015036121435023202 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that mb applications and eq rewrites for the initial *** sort computations in the subject are not counted twice for *** metaMatch()/metaXmatch()/getMatch()/getXmatch(). *** fmod MATCH is sorts Foo Bar . subsorts Foo < Bar . op f : Bar Bar -> Bar [comm] . ops g h : Foo -> Foo . ops a b c d e : -> Foo . vars X Y : Bar . var Z : Foo . cmb f(X, Y) : Foo if h(X) = g(Y) . eq h(a) = b . eq g(c) = b . eq h(c) = d . eq g(a) = d . endfm set trace on . set show breakdown on . red in META-LEVEL : metaMatch(['MATCH], 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, 0) . red in META-LEVEL : metaXmatch(['MATCH], 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, 0, unbounded, 0) . load metaInterpreter mod MATCH-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('MATCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS > getMatch(Y, X, 'MATCH, 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, N) . endm erew in MATCH-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, none) . mod XMATCH-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('MATCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS > getXmatch(Y, X, 'MATCH, 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, 0, unbounded, N) . endm erew in XMATCH-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/ResolvedBugs/metaIntMatchOct2018.expected0000664000175000017510000002475315036121435023723 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaMatch(['MATCH], 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, 0) . *********** equation eq [Q:Qid] = sth Q:Qid is including Q:Qid . sorts none . none none none none none none none endsth . Q:Qid --> 'MATCH ['MATCH] ---> sth 'MATCH is including 'MATCH . sorts none . none none none none none none none endsth *********** trial #1 cmb f(X:Bar, Y:Bar) : Foo if h(X:Bar) = g(Y:Bar) . X:Bar --> a Y:Bar --> c *********** solving condition fragment h(X:Bar) = g(Y:Bar) *********** equation eq h(a) = b . empty substitution h(a) ---> b *********** equation eq g(c) = b . empty substitution g(c) ---> b *********** success for condition fragment h(X:Bar) = g(Y:Bar) X:Bar --> a Y:Bar --> c *********** success #1 *********** membership axiom cmb f(X:Bar, Y:Bar) : Foo if h(X:Bar) = g(Y:Bar) . X:Bar --> a Y:Bar --> c Bar: f(a, c) becomes Foo *********** equation (built-in equation for symbol metaMatch) metaMatch(sth 'MATCH is including 'MATCH . sorts none . none none none none none none none endsth, 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, 0) ---> 'Z:Foo <- 'f['a.Foo, 'c.Foo] rewrites: 5 mb applications: 1 equational rewrites: 4 rule rewrites: 0 variant narrowing steps: 0 narrowing steps: 0 result Assignment: 'Z:Foo <- 'f['a.Foo, 'c.Foo] ========================================== reduce in META-LEVEL : metaXmatch(['MATCH], 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, 0, unbounded, 0) . *********** equation eq [Q:Qid] = sth Q:Qid is including Q:Qid . sorts none . none none none none none none none endsth . Q:Qid --> 'MATCH ['MATCH] ---> sth 'MATCH is including 'MATCH . sorts none . none none none none none none none endsth *********** trial #1 cmb f(X:Bar, Y:Bar) : Foo if h(X:Bar) = g(Y:Bar) . X:Bar --> a Y:Bar --> c *********** solving condition fragment h(X:Bar) = g(Y:Bar) *********** equation eq h(a) = b . empty substitution h(a) ---> b *********** equation eq g(c) = b . empty substitution g(c) ---> b *********** success for condition fragment h(X:Bar) = g(Y:Bar) X:Bar --> a Y:Bar --> c *********** success #1 *********** membership axiom cmb f(X:Bar, Y:Bar) : Foo if h(X:Bar) = g(Y:Bar) . X:Bar --> a Y:Bar --> c Bar: f(a, c) becomes Foo *********** equation (built-in equation for symbol metaXmatch) metaXmatch(sth 'MATCH is including 'MATCH . sorts none . none none none none none none none endsth, 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, 0, unbounded, 0) ---> { 'Z:Foo <- 'f['a.Foo, 'c.Foo], []} rewrites: 5 mb applications: 1 equational rewrites: 4 rule rewrites: 0 variant narrowing steps: 0 narrowing steps: 0 result MatchPair: { 'Z:Foo <- 'f['a.Foo, 'c.Foo], []} ========================================== erewrite in MATCH-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, none) . *********** rule rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('MATCH, true)) . X --> me AS --> soln: 0 Y --> interpreterManager Z --> interpreter(0) < me : User | soln: 0 > createdInterpreter(me, interpreterManager, interpreter( 0)) ---> < me : User | soln: 0 > insertModule(interpreter(0), me, upModule('MATCH, true)) *********** equation (built-in equation for symbol upModule) upModule('MATCH, true) ---> fmod 'MATCH is nil sorts 'Bool ; 'Foo ; 'Bar . subsort 'Foo < 'Bar . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [poly(1 2) prec(51) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '_=/=_ : 'Universal 'Universal -> 'Bool [poly(1 2) prec(51) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op '_and_ : 'Bool 'Bool -> 'Bool [prec(55) assoc comm] . op '_or_ : 'Bool 'Bool -> 'Bool [prec(59) assoc comm] . op '_xor_ : 'Bool 'Bool -> 'Bool [prec(57) assoc comm] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op 'f : 'Bar 'Bar -> 'Bar [comm] . op 'g : 'Foo -> 'Foo [none] . op 'h : 'Foo -> 'Foo [none] . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'd : nil -> 'Foo [none] . op 'e : nil -> 'Foo [none] . cmb 'f['X:Bar, 'Y:Bar] : 'Foo if 'h['X:Bar] = 'g['Y:Bar] [none] . eq 'h['a.Foo] = 'b.Foo [none] . eq 'g['c.Foo] = 'b.Foo [none] . eq 'h['c.Foo] = 'd.Foo [none] . eq 'g['a.Foo] = 'd.Foo [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . endfm *********** rule rl insertedModule(X, Y) < X : User | AS, soln: N > => < X : User | AS > getMatch(Y, X, 'MATCH, 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, N) . X --> me Y --> interpreter(0) AS --> (none).AttributeSet N --> 0 insertedModule(me, interpreter(0)) < me : User | soln: 0 > ---> < me : User | none > getMatch(interpreter(0), me, 'MATCH, 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, 0) *********** trial #1 cmb f(X:Bar, Y:Bar) : Foo if h(X:Bar) = g(Y:Bar) . X:Bar --> a Y:Bar --> c *********** solving condition fragment h(X:Bar) = g(Y:Bar) *********** equation eq h(a) = b . empty substitution h(a) ---> b *********** equation eq g(c) = b . empty substitution g(c) ---> b *********** success for condition fragment h(X:Bar) = g(Y:Bar) X:Bar --> a Y:Bar --> c *********** success #1 *********** membership axiom cmb f(X:Bar, Y:Bar) : Foo if h(X:Bar) = g(Y:Bar) . X:Bar --> a Y:Bar --> c Bar: f(a, c) becomes Foo rewrites: 6 mb applications: 1 equational rewrites: 3 rule rewrites: 2 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | none > gotMatch(me, interpreter(0), 3, 'Z:Foo <- 'f['a.Foo, 'c.Foo]) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, none) . *********** rule rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('MATCH, true)) . X --> me AS --> soln: 0 Y --> interpreterManager Z --> interpreter(0) < me : User | soln: 0 > createdInterpreter(me, interpreterManager, interpreter( 0)) ---> < me : User | soln: 0 > insertModule(interpreter(0), me, upModule('MATCH, true)) *********** equation (built-in equation for symbol upModule) upModule('MATCH, true) ---> fmod 'MATCH is nil sorts 'Bool ; 'Foo ; 'Bar . subsort 'Foo < 'Bar . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [poly(1 2) prec(51) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '_=/=_ : 'Universal 'Universal -> 'Bool [poly(1 2) prec(51) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op '_and_ : 'Bool 'Bool -> 'Bool [prec(55) assoc comm] . op '_or_ : 'Bool 'Bool -> 'Bool [prec(59) assoc comm] . op '_xor_ : 'Bool 'Bool -> 'Bool [prec(57) assoc comm] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op 'f : 'Bar 'Bar -> 'Bar [comm] . op 'g : 'Foo -> 'Foo [none] . op 'h : 'Foo -> 'Foo [none] . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'd : nil -> 'Foo [none] . op 'e : nil -> 'Foo [none] . cmb 'f['X:Bar, 'Y:Bar] : 'Foo if 'h['X:Bar] = 'g['Y:Bar] [none] . eq 'h['a.Foo] = 'b.Foo [none] . eq 'g['c.Foo] = 'b.Foo [none] . eq 'h['c.Foo] = 'd.Foo [none] . eq 'g['a.Foo] = 'd.Foo [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . endfm *********** rule rl insertedModule(X, Y) < X : User | AS, soln: N > => < X : User | AS > getXmatch(Y, X, 'MATCH, 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, 0, unbounded, N) . X --> me Y --> interpreter(0) AS --> (none).AttributeSet N --> 0 insertedModule(me, interpreter(0)) < me : User | soln: 0 > ---> < me : User | none > getXmatch(interpreter(0), me, 'MATCH, 'Z:Foo, 'f['a.Foo, 'c.Foo], nil, 0, unbounded, 0) *********** trial #1 cmb f(X:Bar, Y:Bar) : Foo if h(X:Bar) = g(Y:Bar) . X:Bar --> a Y:Bar --> c *********** solving condition fragment h(X:Bar) = g(Y:Bar) *********** equation eq h(a) = b . empty substitution h(a) ---> b *********** equation eq g(c) = b . empty substitution g(c) ---> b *********** success for condition fragment h(X:Bar) = g(Y:Bar) X:Bar --> a Y:Bar --> c *********** success #1 *********** membership axiom cmb f(X:Bar, Y:Bar) : Foo if h(X:Bar) = g(Y:Bar) . X:Bar --> a Y:Bar --> c Bar: f(a, c) becomes Foo rewrites: 6 mb applications: 1 equational rewrites: 3 rule rewrites: 2 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | none > gotXmatch(me, interpreter(0), 3, 'Z:Foo <- 'f['a.Foo, 'c.Foo], []) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/metaIntMatchOct20180000775000175000017510000000041015036121435022106 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntMatchOct2018.maude -no-banner -no-advise \ > metaIntMatchOct2018.out 2>&1 diff $srcdir/metaIntMatchOct2018.expected metaIntMatchOct2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/metaIntImportJune2018.maude0000664000175000017510000000234115036121435023574 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that the meta-interpreter gets imports from itself and not the object level interpreter. *** fmod FOO is sort Foo . ops a b : -> Foo . eq a = b . endfm load metaInterpreter mod TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op state:_ : Nat -> Attribute . vars X Y Z : Oid . rl < X : User | state: 0 > createdInterpreter(X, Y, Z) => < X : User | state: 1 > insertModule(Z, X, foo) . rl < X : User | state: 1 > insertedModule(X, Y) => < X : User | state: 2 > insertModule(Y, X, upModule('META-LEVEL, true)) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > reduceTerm(Y, X, 'META-LEVEL, 'metaReduce[upTerm(bar) , upTerm('a.Foo)]) . op foo : -> Module . eq foo = ( fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . none eq 'a.Foo = 'c.Foo [none] . endfm ) . op bar : -> Module . eq bar = ( fmod 'BAR is protecting 'FOO . sorts none . none none none none endfm ) . endm *** expecting ''c.Foo.Constant but get ''b.Foo.Constant erew <> < me : User | state: 0 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/ResolvedBugs/metaIntImportJune2018.expected0000664000175000017510000000046315036121435024305 0ustar nileshnilesh========================================== erewrite in TEST : <> < me : User | state: 0 > createInterpreter( interpreterManager, me, none) . rewrites: 11 result Configuration: <> < me : User | state: 3 > reducedTerm(me, interpreter( 0), 2, '`{_`,_`}[''c.Foo.Constant, ''Foo.Sort], 'ResultPair) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/metaIntImportJune20180000775000175000017510000000042015036121435022501 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntImportJune2018.maude -no-banner -no-advise \ > metaIntImportJune2018.out 2>&1 diff $srcdir/metaIntImportJune2018.expected metaIntImportJune2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/metaIntAscentJune2018.maude0000664000175000017510000000232715036121435023543 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that the meta-interpreter ascent functions get module imports from from the *** meta-interpreter and not the object level interpreter. *** set include BOOL off . fmod FOO is sort ObjectLevelFoo . endfm load metaInterpreter mod TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op state:_ : Nat -> Attribute . op foo : -> Module . eq foo = ( fmod 'FOO is nil sorts 'MetaLevelFoo . none none none none endfm) . vars X Y Z : Oid . rl < X : User | state: 0 > createdInterpreter(X, Y, Z) => < X : User | state: 1 > insertModule(Z, X, foo) . rl < X : User | state: 1 > insertedModule(X, Y) => < X : User | state: 2 > insertModule(Y, X, upModule('META-LEVEL, true)) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > reduceTerm(Y, X, 'META-LEVEL, 'upModule[''FOO.Qid, 'true.Bool]) . op foo : -> Module . eq foo = ( fmod 'FOO is nil sorts 'MetaLevelFoo . none none none none endfm) . endm *** expecting meta-meta-module to contain sort MetaLevelFoo but get ObjectLevelFoo erew <> < me : User | state: 0 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/ResolvedBugs/metaIntAscentJune2018.expected0000664000175000017510000000064615036121435024253 0ustar nileshnilesh========================================== erewrite in TEST : <> < me : User | state: 0 > createInterpreter( interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | state: 3 > reducedTerm(me, interpreter( 0), 1, 'fmod_is_sorts_.____endfm[''FOO.Sort, 'nil.ImportList, ''MetaLevelFoo.Sort, 'none.SubsortDeclSet, 'none.OpDeclSet, 'none.MembAxSet, 'none.EquationSet], 'FModule) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/metaIntAscentJune20180000775000175000017510000000042015036121435022444 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntAscentJune2018.maude -no-banner -no-advise \ > metaIntAscentJune2018.out 2>&1 diff $srcdir/metaIntAscentJune2018.expected metaIntAscentJune2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/metaAutoOoIncludeFebruary2023.maude0000664000175000017510000000027415036121435025236 0ustar nileshnileshset show timing off . *** *** Test that auto object-oriented includes show up in the unflattened result of upModule(). *** oth FOO is endoth red in META-LEVEL : upModule('FOO, false) . Maude-Maude3.5.1/tests/ResolvedBugs/metaAutoOoIncludeFebruary2023.expected0000664000175000017510000000033315036121435025740 0ustar nileshnilesh========================================== reduce in META-LEVEL : upModule('FOO, false) . rewrites: 1 result STheory: th 'FOO is including 'CONFIGURATION . sorts none . none none none none none endth Bye. Maude-Maude3.5.1/tests/ResolvedBugs/metaAutoOoIncludeFebruary20230000775000175000017510000000046015036121435024144 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaAutoOoIncludeFebruary2023.maude -no-banner -no-advise \ > metaAutoOoIncludeFebruary2023.out 2>&1 diff $srcdir/metaAutoOoIncludeFebruary2023.expected metaAutoOoIncludeFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/metaApplyNov2018.maude0000664000175000017510000000116515036121435022600 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that mb applications and eq rewrites for the initial *** reduction of the subject are not counted twice for *** metaApply()/metaXapply() *** mod APPLY is sorts Foo Bar . subsort Foo < Bar . ops a c : -> Bar . op b : -> Foo . op f : Foo Foo -> Foo [comm] . eq a = c . mb c : Foo . rl f(X:Foo, Y:Foo) => X:Foo [label k] . endm set trace on . set show breakdown on . red in META-LEVEL : metaApply(['APPLY], 'f['a.Foo, 'b.Foo], 'k, 'Y:Foo <- 'b.Foo, 0) . red in META-LEVEL : metaXapply(['APPLY], 'f['a.Foo, 'b.Foo], 'k, 'Y:Foo <- 'b.Foo, 0, 0, 0) . Maude-Maude3.5.1/tests/ResolvedBugs/metaApplyNov2018.expected0000664000175000017510000000440215036121435023303 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaApply(['APPLY], 'f['a.Foo, 'b.Foo], 'k, 'Y:Foo <- 'b.Foo, 0) . *********** equation eq [Q:Qid] = sth Q:Qid is including Q:Qid . sorts none . none none none none none none none endsth . Q:Qid --> 'APPLY ['APPLY] ---> sth 'APPLY is including 'APPLY . sorts none . none none none none none none none endsth *********** equation eq a = c . empty substitution a ---> c *********** membership axiom mb c : Foo . empty substitution Bar: c becomes Foo *********** rule rl [k] : f(X:Foo, Y:Foo) => X:Foo . X:Foo --> c Y:Foo --> b f(c, b) ---> c *********** equation (built-in equation for symbol metaApply) metaApply(sth 'APPLY is including 'APPLY . sorts none . none none none none none none none endsth, 'f['a.Foo, 'b.Foo], 'k, 'Y:Foo <- 'b.Foo, 0) ---> {'c.Foo, 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'b.Foo} rewrites: 5 mb applications: 1 equational rewrites: 3 rule rewrites: 1 variant narrowing steps: 0 narrowing steps: 0 result ResultTriple: {'c.Foo, 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'b.Foo} ========================================== reduce in META-LEVEL : metaXapply(['APPLY], 'f['a.Foo, 'b.Foo], 'k, 'Y:Foo <- 'b.Foo, 0, 0, 0) . *********** equation eq [Q:Qid] = sth Q:Qid is including Q:Qid . sorts none . none none none none none none none endsth . Q:Qid --> 'APPLY ['APPLY] ---> sth 'APPLY is including 'APPLY . sorts none . none none none none none none none endsth *********** equation eq a = c . empty substitution a ---> c *********** membership axiom mb c : Foo . empty substitution Bar: c becomes Foo *********** rule rl [k] : f(X:Foo, Y:Foo) => X:Foo . X:Foo --> c Y:Foo --> b f(c, b) ---> c *********** equation (built-in equation for symbol metaXapply) metaXapply(sth 'APPLY is including 'APPLY . sorts none . none none none none none none none endsth, 'f['a.Foo, 'b.Foo], 'k, 'Y:Foo <- 'b.Foo, 0, 0, 0) ---> {'c.Foo, 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'b.Foo, []} rewrites: 5 mb applications: 1 equational rewrites: 3 rule rewrites: 1 variant narrowing steps: 0 narrowing steps: 0 result Result4Tuple: {'c.Foo, 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'b.Foo, []} Bye. Maude-Maude3.5.1/tests/ResolvedBugs/metaApplyNov20180000775000175000017510000000037415036121435021512 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaApplyNov2018.maude -no-banner -no-advise \ > metaApplyNov2018.out 2>&1 diff $srcdir/metaApplyNov2018.expected metaApplyNov2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/loopModeStateAugust2021.maude0000664000175000017510000000030215036121435024113 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug where we tried to restart loop mode with state left over from some other command. *** search 0 =>* 0 . (restart loop mode) Maude-Maude3.5.1/tests/ResolvedBugs/loopModeStateAugust2021.expected0000664000175000017510000000032415036121435024625 0ustar nileshnilesh========================================== search in CONVERSION : 0 =>* 0 . Solution 1 (state 0) states: 1 rewrites: 0 empty substitution No more solutions. states: 1 rewrites: 0 Warning: no loop state. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/loopModeStateAugust20210000775000175000017510000000043015036121435023026 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/loopModeStateAugust2021.maude -no-banner -no-advise \ > loopModeStateAugust2021.out 2>&1 diff $srcdir/loopModeStateAugust2021.expected loopModeStateAugust2021.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/kindNameDecember2022.maude0000664000175000017510000000035415036121435023330 0ustar nileshnileshset show advisories off . *** *** Test for bug where kinds were printed incorrectly from premodules. *** fmod FOO{X :: TRIV} is sorts S{X} T{X} . subsort X$Elt < S{X} T{X} . op f : [S{X},T{X}] -> [S{X},T{X}] . endfm show mod . Maude-Maude3.5.1/tests/ResolvedBugs/kindNameDecember2022.expected0000664000175000017510000000017315036121435024035 0ustar nileshnileshfmod FOO{X :: TRIV} is sorts S{X} T{X} . subsorts X$Elt < S{X} T{X} . op f : [S{X},T{X}] -> [S{X},T{X}] . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/kindNameDecember20220000775000175000017510000000041415036121435022236 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/kindNameDecember2022.maude -no-banner -no-advise \ > kindNameDecember2022.out 2>&1 diff $srcdir/kindNameDecember2022.expected kindNameDecember2022.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/irredUnifyFeb2021.maude0000664000175000017510000000130015036121435022677 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug irredundant unification where destructive updating *** of unifiers having the same structure but different sorts caused *** corruption of unification filter and irredundant unifiers lost *** to spurious subsumptions. *** fmod ASSOC-LIST is sorts Elt Pair Triple List . subsort Elt Pair Triple < List . op __ : List List -> List [assoc] . op __ : Elt Elt -> Pair [assoc] . op __ : Elt Pair -> Triple [assoc] . op __ : Pair Elt -> Triple [assoc] . op rev : List -> List . vars A B C X Y Z : List . vars P Q R : Pair . vars E F G : Elt . vars S T U V : Triple . endfm unify S T =? A B . irred unify S T =? A B . Maude-Maude3.5.1/tests/ResolvedBugs/irredUnifyFeb2021.expected0000664000175000017510000000175315036121435023421 0ustar nileshnilesh========================================== unify in ASSOC-LIST : S T =? A B . Unifier 1 S --> #2:Elt #3:Pair T --> #1:Triple A --> #2:Elt B --> #3:Pair #1:Triple Unifier 2 S --> #2:Pair #3:Elt T --> #1:Triple A --> #2:Pair B --> #3:Elt #1:Triple Unifier 3 S --> #1:Triple T --> #3:Pair #2:Elt A --> #1:Triple #3:Pair B --> #2:Elt Unifier 4 S --> #1:Triple T --> #3:Elt #2:Pair A --> #1:Triple #3:Elt B --> #2:Pair Unifier 5 S --> #1:Triple T --> #2:Triple A --> #1:Triple B --> #2:Triple ========================================== irredundant unify in ASSOC-LIST : S T =? A B . Unifier 1 S --> #2:Elt #3:Pair T --> #1:Triple A --> #2:Elt B --> #3:Pair #1:Triple Unifier 2 S --> #2:Pair #3:Elt T --> #1:Triple A --> #2:Pair B --> #3:Elt #1:Triple Unifier 3 S --> #1:Triple T --> #3:Pair #2:Elt A --> #1:Triple #3:Pair B --> #2:Elt Unifier 4 S --> #1:Triple T --> #3:Elt #2:Pair A --> #1:Triple #3:Elt B --> #2:Pair Unifier 5 S --> #1:Triple T --> #2:Triple A --> #1:Triple B --> #2:Triple Bye. Maude-Maude3.5.1/tests/ResolvedBugs/irredUnifyFeb20210000775000175000017510000000040015036121435021610 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/irredUnifyFeb2021.maude -no-banner -no-advise \ > irredUnifyFeb2021.out 2>&1 diff $srcdir/irredUnifyFeb2021.expected irredUnifyFeb2021.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/invalidStrategyDefinitionJune2025.maude0000664000175000017510000000163315036121435026163 0ustar nileshnileshset show timing off . *** *** Test for strategy to expression mapping that instantiate the *** left-hand side of a strategy definition to a expression other *** than a call (not valid), to a call (valid) and to a call with *** less variables. *** sth STRIV is including TRIV . strat st1 @ Elt . strat st2 @ Elt . strat st3 : Elt @ Elt . endsth smod WRONG{X :: STRIV} is sd st1 := idle . sd st2 := fail . csd st3(E:X$Elt) := idle if E:X$Elt = E:X$Elt . endsm smod SBOOL is protecting BOOL . strat sb2 @ Bool . strat sb3 : Bool @ Bool . endsm view Match from STRIV to SBOOL is sort Elt to Bool . strat st1 to expr match true . *** yields ill-formed definition strat st2 to expr sb2 . *** yields valid definition var X : Elt . strat st3(X) to expr sb3(true) . *** yields unbound variables endv smod MAIN is including WRONG{Match} . endsm srew true using sb2 . srew false using sb3(true) . show sds . Maude-Maude3.5.1/tests/ResolvedBugs/invalidStrategyDefinitionJune2025.expected0000664000175000017510000000126615036121435026673 0ustar nileshnileshWarning: , line 37 (smod MAIN): left-hand side of strategy definition sd st1 := idle . would be instantiated to match true by a strategy to expression mapping. The definition would be ill-formed and thus it cannot be used. Warning: , line 20 (smod WRONG): variable E:Bool is used before it is bound in strategy definition: csd sb3(true) := idle if E:Bool = E:Bool . ========================================== srewrite in MAIN : true using sb2 . No solution. rewrites: 0 ========================================== srewrite in MAIN : false using sb3(true) . No solution. rewrites: 0 sd sb2 := fail . csd sb3(true) := idle if E:Bool = E:Bool . Bye. Maude-Maude3.5.1/tests/ResolvedBugs/invalidStrategyDefinitionJune20250000775000175000017510000000050015036121435025064 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/invalidStrategyDefinitionJune2025.maude -no-banner -no-advise \ > invalidStrategyDefinitionJune2025.out 2>&1 diff $srcdir/invalidStrategyDefinitionJune2025.expected invalidStrategyDefinitionJune2025.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/instantiationJuly2019.maude0000664000175000017510000000070015036121435023704 0ustar nileshnileshset show timing off . set show advisories off . fth FOO is sort Small . op a : -> Small . endfth fmod BAR{X :: FOO} is sort Big . subsort X$Small < Big . op f : Big -> Bool . eq f(a) = true . endfm fmod BAZ is sort Baz . op b : -> Baz . endfm *** make op a to b . *** incorrectly specialize to op a : -> Small to b . view V from FOO to BAZ is sort Small to Baz . op a to b . endv fmod TEST is inc BAR{V} . endfm red b . Maude-Maude3.5.1/tests/ResolvedBugs/instantiationJuly2019.expected0000664000175000017510000000013715036121435024416 0ustar nileshnilesh========================================== reduce in TEST : b . rewrites: 0 result Baz: b Bye. Maude-Maude3.5.1/tests/ResolvedBugs/instantiationJuly20190000775000175000017510000000042015036121435022614 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/instantiationJuly2019.maude -no-banner -no-advise \ > instantiationJuly2019.out 2>&1 diff $srcdir/instantiationJuly2019.expected instantiationJuly2019.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/instantiatedViewInternalNameOctober2022.maude0000664000175000017510000000110615036121435027305 0ustar nileshnileshset show advisories off . *** *** Test for bug in the internal name of a multiply instantiated view which *** becomes visible because parameterized sorts instantiated with this view *** appear to be different from the same sorts created by the parser. *** fmod FOO{X :: STRICT-WEAK-ORDER} is protecting LIST{Set{STRICT-WEAK-ORDER}{X}} . op a : -> NeList{Set{STRICT-WEAK-ORDER}{X}} . endfm show kinds . fmod BAR is protecting LIST{Set{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Int<}} . op a : -> NeList{Set{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Int<}} . endfm show kinds . Maude-Maude3.5.1/tests/ResolvedBugs/instantiatedViewInternalNameOctober2022.expected0000664000175000017510000000107115036121435030014 0ustar nileshnilesh[Bool]: 1 Bool [List{Set{STRICT-WEAK-ORDER}{X}}]: 1 List{Set{STRICT-WEAK-ORDER}{X}} 2 NeList{Set{STRICT-WEAK-ORDER}{X}} 3 Set{STRICT-WEAK-ORDER}{X} 4 NeSet{STRICT-WEAK-ORDER}{X} 5 X$Elt [Nat]: 1 Nat 2 Zero 3 NzNat [Bool]: 1 Bool [List{Set{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Int<}}]: 1 List{Set{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Int<}} 2 NeList{Set{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Int<}} 3 Set{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Int<} 4 NeSet{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Int<} 5 Int 6 NzInt 7 Nat 8 Zero 9 NzNat Bye. Maude-Maude3.5.1/tests/ResolvedBugs/instantiatedViewInternalNameOctober20220000775000175000017510000000053015036121435026216 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/instantiatedViewInternalNameOctober2022.maude -no-banner -no-advise \ > instantiatedViewInternalNameOctober2022.out 2>&1 diff $srcdir/instantiatedViewInternalNameOctober2022.expected instantiatedViewInternalNameOctober2022.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/identityUnificationSeptember2020.maude0000664000175000017510000000050315036121435026036 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug in U/Ul/Ur unification where theory purification code *** assumed the operator was commutative. *** fmod U-TEST is sort Foo . op 1 : -> Foo . op f : Foo Foo -> Foo [id: 1] . op g : Foo -> Foo . vars X Y Z : Foo . endfm unify X =? f(g(Z), Y) . Maude-Maude3.5.1/tests/ResolvedBugs/identityUnificationSeptember2020.expected0000664000175000017510000000030415036121435026543 0ustar nileshnilesh========================================== unify in U-TEST : X =? f(g(Z), Y) . Unifier 1 X --> g(#1:Foo) Z --> #1:Foo Y --> 1 Unifier 2 X --> f(g(#1:Foo), #2:Foo) Z --> #1:Foo Y --> #2:Foo Bye. Maude-Maude3.5.1/tests/ResolvedBugs/identityUnificationSeptember20200000775000175000017510000000047415036121435024756 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/identityUnificationSeptember2020.maude -no-banner -no-advise \ > identityUnificationSeptember2020.out 2>&1 diff $srcdir/identityUnificationSeptember2020.expected identityUnificationSeptember2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/identityUnificationMay2020.maude0000664000175000017510000000064315036121435024643 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug in C/U/Ul/Ur unification where original *** rather than representative variable was used. *** fmod FOO is sort Small Foo . subsort Small < Foo . op 1 : -> Foo . op f : Foo Foo -> Foo [id: 1] . op g : Foo -> Foo . vars X Y Z : Foo . var S : Small . endfm unify Z =? f(X, Y) /\ g(Z) =? g(S) . variant unify Z =? f(X, Y) /\ g(Z) =? g(S) . Maude-Maude3.5.1/tests/ResolvedBugs/identityUnificationMay2020.expected0000664000175000017510000000076615036121435025357 0ustar nileshnilesh========================================== unify in FOO : Z =? f(X, Y) /\ g(Z) =? g(S) . Unifier 1 Z --> #1:Small X --> 1 Y --> #1:Small S --> #1:Small Unifier 2 Z --> #1:Small X --> #1:Small Y --> 1 S --> #1:Small ========================================== variant unify in FOO : Z =? f(X, Y) /\ g(Z) =? g(S) . Unifier 1 rewrites: 0 Z --> %1:Small X --> 1 Y --> %1:Small S --> %1:Small Unifier 2 rewrites: 0 Z --> %1:Small X --> %1:Small Y --> 1 S --> %1:Small No more unifiers. rewrites: 0 Bye. Maude-Maude3.5.1/tests/ResolvedBugs/identityUnificationMay20200000775000175000017510000000044415036121435023553 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/identityUnificationMay2020.maude -no-banner -no-advise \ > identityUnificationMay2020.out 2>&1 diff $srcdir/identityUnificationMay2020.expected identityUnificationMay2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/generatedByFebruary2023.maude0000664000175000017510000000024115036121435024100 0ustar nileshnilesh*** *** Test that generated-by is recognized as ending the previous mixfix statement. *** fmod FOO is eq 5 = 1 . generated-by NAT . endfm show desugared . Maude-Maude3.5.1/tests/ResolvedBugs/generatedByFebruary2023.expected0000664000175000017510000000011415036121435024605 0ustar nileshnileshfmod FOO is including BOOL . generated-by NAT . eq 5 = 1 . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/generatedByFebruary20230000775000175000017510000000043015036121435023011 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/generatedByFebruary2023.maude -no-banner -no-advise \ > generatedByFebruary2023.out 2>&1 diff $srcdir/generatedByFebruary2023.expected generatedByFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/fragmentBufferJune2025.maude0000664000175000017510000000075715036121435023744 0ustar nileshnilesh*** *** We used to clear the sort fragment buffer after we finished recognizing *** a sort, but in the case of an error it would be left uncleared and cause *** spurious errors. *** fmod FOO is *** ] is not allowed in sort names and causes the parsing of the structured *** sort to fail with a bison syntax error. sort s{]} . endfm fmod BAR is *** The tokens s { stashed in the uncleared fragment buffer ended up prepended *** on to Bar. sort Bar . op c : -> Bar . endfm show sorts . Maude-Maude3.5.1/tests/ResolvedBugs/fragmentBufferJune2025.expected0000664000175000017510000000013015036121435024433 0ustar nileshnileshWarning: , line 10 (fmod FOO): syntax error sort Bool . sort Bar . Bye. Maude-Maude3.5.1/tests/ResolvedBugs/fragmentBufferJune20250000775000175000017510000000042415036121435022644 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/fragmentBufferJune2025.maude -no-banner -no-advise \ > fragmentBufferJune2025.out 2>&1 diff $srcdir/fragmentBufferJune2025.expected fragmentBufferJune2025.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/filteredVariantUnifyJune2023.maude0000664000175000017510000000143115036121435025131 0ustar nileshnileshset show timing off . *** *** Bug reported by UberPyro on github: *** https://github.com/SRI-CSL/Maude/issues/11 *** Code used with permission. *** fmod SUB-STACK is sorts Nat Stk . op 0 : -> Nat [ctor] . op s : Nat -> Nat [ctor] . subsort Nat < Stk . op emp : -> Stk . op mk : Nat -> Stk [ctor] . op _*_ : Stk Stk -> Stk [ctor assoc id: emp] . op _+_ : Stk Stk -> Stk [ctor assoc comm] . vars X Y : [Stk] . eq [sub] : (X * Y) + X = X [variant] . endfm variant unify in SUB-STACK : R:Stk =? S:Stk + T:Stk . *** OK filtered variant unify in SUB-STACK : R:Stk =? S:Stk + T:Stk . *** failed to terminate because we weren't tracking the accumulated substitution *** when computing variant subsumption - reducibility considerations are critical *** for pruning branches Maude-Maude3.5.1/tests/ResolvedBugs/filteredVariantUnifyJune2023.expected0000664000175000017510000000152015036121435025636 0ustar nileshnilesh========================================== variant unify in SUB-STACK : R:Stk =? S:Stk + T:Stk . Unifier 1 rewrites: 4 R:Stk --> %1:Stk + %2:Stk S:Stk --> %1:Stk T:Stk --> %2:Stk Unifier 2 rewrites: 4 R:Stk --> #1:Stk + #2:Stk S:Stk --> #2:Stk + (#1:Stk + #2:Stk) * #3:Stk T:Stk --> #1:Stk Unifier 3 rewrites: 4 R:Stk --> #1:Stk + #2:Stk S:Stk --> #1:Stk T:Stk --> #2:Stk + (#1:Stk + #2:Stk) * #3:Stk Unifier 4 rewrites: 4 R:Stk --> #1:Stk S:Stk --> #1:Stk T:Stk --> #1:Stk * #2:Stk Unifier 5 rewrites: 4 R:Stk --> #1:Stk S:Stk --> #1:Stk * #2:Stk T:Stk --> #1:Stk No more unifiers. rewrites: 4 ========================================== filtered variant unify in SUB-STACK : R:Stk =? S:Stk + T:Stk . rewrites: 8 Unifier 1 R:Stk --> %1:Stk + %2:Stk S:Stk --> %1:Stk T:Stk --> %2:Stk No more unifiers. Advisory: Filtering was complete. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/filteredVariantUnifyJune20230000775000175000017510000000044115036121435024042 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/filteredVariantUnifyJune2023.maude -no-banner \ > filteredVariantUnifyJune2023.out 2>&1 diff $srcdir/filteredVariantUnifyJune2023.expected filteredVariantUnifyJune2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/endothFebruary2023.maude0000664000175000017510000000020215036121435023125 0ustar nileshnilesh*** *** Test that endoth is recognized as the end of a mixfix statement. *** oth TEST is eq <> = <> . endoth show desugared . Maude-Maude3.5.1/tests/ResolvedBugs/endothFebruary2023.expected0000664000175000017510000000010115036121435023631 0ustar nileshnileshth TEST is including CONFIGURATION . eq <> = <> . endth Bye. Maude-Maude3.5.1/tests/ResolvedBugs/endothFebruary20230000775000175000017510000000040415036121435022042 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/endothFebruary2023.maude -no-banner -no-advise \ > endothFebruary2023.out 2>&1 diff $srcdir/endothFebruary2023.expected endothFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/doubleAttributeFebruary2023.maude0000664000175000017510000000017315036121435025011 0ustar nileshnilesh*** *** Test for warning with double iter attribute. *** fmod FOO is sort Foo . op f : Foo -> Foo [iter iter] . endfm Maude-Maude3.5.1/tests/ResolvedBugs/doubleAttributeFebruary2023.expected0000664000175000017510000000011115036121435025507 0ustar nileshnileshWarning: , line 7 (fmod FOO): duplicate attributes. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/doubleAttributeFebruary20230000775000175000017510000000043515036121435023723 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/doubleAttributeFebruary2023.maude -no-banner \ > doubleAttributeFebruary2023.out 2>&1 diff $srcdir/doubleAttributeFebruary2023.expected doubleAttributeFebruary2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/deleteTimerMarch2021.maude0000664000175000017510000000074115036121435023370 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug where deleteTimer() left the interpreter in an *** inconsistent state and caused a crash on the next rewrite *** command. *** load time mod TEST is inc TIME . op myClass : -> Cid . ops me : -> Oid . vars O O2 O3 : Oid . rl < O : myClass | none > createdTimer(O, O2, O3) => < O : myClass | none > deleteTimer(O3, me) . endm erew <> < me : myClass | none > createTimer(timeManager, me) . red 0 . Maude-Maude3.5.1/tests/ResolvedBugs/deleteTimerMarch2021.expected0000664000175000017510000000046015036121435024074 0ustar nileshnilesh========================================== erewrite in TEST : <> createTimer(timeManager, me) < me : myClass | none > . rewrites: 1 result Configuration: <> deletedTimer(me, timer(0)) < me : myClass | none > ========================================== reduce in TEST : 0 . rewrites: 0 result Zero: 0 Bye. Maude-Maude3.5.1/tests/ResolvedBugs/deleteTimerMarch20210000775000175000017510000000041415036121435022276 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/deleteTimerMarch2021.maude -no-banner -no-advise \ > deleteTimerMarch2021.out 2>&1 diff $srcdir/deleteTimerMarch2021.expected deleteTimerMarch2021.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/degenerateFilteredVariantUnifyDecember2022.maude0000664000175000017510000000030015036121435027713 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug in tuple creation for unifier filtering if the unifiers *** are degenerate. *** filtered variant unify in NAT : 1 =? 1 . Maude-Maude3.5.1/tests/ResolvedBugs/degenerateFilteredVariantUnifyDecember2022.expected0000664000175000017510000000020315036121435030423 0ustar nileshnilesh========================================== filtered variant unify in NAT : 1 =? 1 . rewrites: 0 Unifier 1 No more unifiers. Bye. Maude-Maude3.5.1/tests/ResolvedBugs/degenerateFilteredVariantUnifyDecember20220000775000175000017510000000054415036121435026636 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/degenerateFilteredVariantUnifyDecember2022.maude -no-banner -no-advise \ > degenerateFilteredVariantUnifyDecember2022.out 2>&1 diff $srcdir/degenerateFilteredVariantUnifyDecember2022.expected degenerateFilteredVariantUnifyDecember2022.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/conditionSideEffectInStrategyLanguageDecember2023.maude0000664000175000017510000000073615036121435031175 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug found by Paco where the condition evaluation set unrewritable/unstackable flags *** that were respect when rewriting with ab, even though it allows rewriting with nonexec rules. *** mod NONEXEC is sorts Foo Bar . ops a b : -> Foo [ctor] . op <_> : Foo -> Bar [ctor] . vars F G : Foo . crl < F > => < G > if F => G /\ F =/= G . rl [ab] : a => b [nonexec] . endm srew < a > using try(all) ; ab . Maude-Maude3.5.1/tests/ResolvedBugs/conditionSideEffectInStrategyLanguageDecember2023.expected0000664000175000017510000000025415036121435031676 0ustar nileshnilesh========================================== srewrite in NONEXEC : < a > using try(all) ; ab . Solution 1 rewrites: 1 result Bar: < b > No more solutions. rewrites: 1 Bye. Maude-Maude3.5.1/tests/ResolvedBugs/conditionSideEffectInStrategyLanguageDecember20230000775000175000017510000000060015036121435030074 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/conditionSideEffectInStrategyLanguageDecember2023.maude -no-banner -no-advise \ > conditionSideEffectInStrategyLanguageDecember2023.out 2>&1 diff $srcdir/conditionSideEffectInStrategyLanguageDecember2023.expected conditionSideEffectInStrategyLanguageDecember2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/complexParserSyncApril2020.maude0000664000175000017510000000056315036121435024624 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check bug where cached simple parser was getting used *** with complex parser auxiliary information leading to crash. *** select META-LEVEL . red metaParse(upModule('NAT, false), none, '0, 'Nat) . red metaParseStrategy(upModule('NAT, false), none, 'idle) . red metaParse(upModule('NAT, false), none, '0, 'Nat) . Maude-Maude3.5.1/tests/ResolvedBugs/complexParserSyncApril2020.expected0000664000175000017510000000075315036121435025333 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaParse(upModule('NAT, false), none, '0, 'Nat) . rewrites: 2 result ResultPair: {'0.Zero, 'Zero} ========================================== reduce in META-LEVEL : metaParseStrategy(upModule('NAT, false), none, 'idle) . rewrites: 2 result Strategy: idle ========================================== reduce in META-LEVEL : metaParse(upModule('NAT, false), none, '0, 'Nat) . rewrites: 2 result ResultPair: {'0.Zero, 'Zero} Bye. Maude-Maude3.5.1/tests/ResolvedBugs/complexParserSyncApril20200000775000175000017510000000044415036121435023533 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/complexParserSyncApril2020.maude -no-banner -no-advise \ > complexParserSyncApril2020.out 2>&1 diff $srcdir/complexParserSyncApril2020.expected complexParserSyncApril2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/closeSocketFeb2020.maude0000664000175000017510000000262115036121435023043 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that closing a server TCP socket that is waiting *** to accept connections doesn't cause Maude to spin its wheels *** waiting for events on the closed socket. *** load socket mod SERVER-SHUTDOWN is protecting SOCKET . op Server : -> Cid [ctor] . op server : -> Oid [ctor] . op state:_ : ServerState -> Attribute [ctor] . sort ServerState . ops init closing : -> ServerState [ctor] . op accepting : Oid -> ServerState [ctor] . var SSkt : Oid . var Reason : String . rl [createdSocket] : < server : Server | state: init > createdSocket(server, socketManager, SSkt) => < server : Server | state: accepting(SSkt) > acceptClient(SSkt, server) . rl [close] : < server : Server | state: accepting(SSkt) > => < server : Server | state: closing > closeSocket(SSkt, server) . rl [close] : < server : Server | state: closing > closedSocket(server, SSkt, Reason) => none . op initial : -> Configuration . eq initial = <> < server : Server | state: init > createServerTcpSocket(socketManager, server, 1234, 5) . endm erew initial . Maude-Maude3.5.1/tests/ResolvedBugs/closeSocketFeb2020.expected0000664000175000017510000000016615036121435023553 0ustar nileshnilesh========================================== erewrite in SERVER-SHUTDOWN : initial . rewrites: 4 result Portal: <> Bye. Maude-Maude3.5.1/tests/ResolvedBugs/closeSocketFeb20200000775000175000017510000000040415036121435021751 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/closeSocketFeb2020.maude -no-banner -no-advise \ > closeSocketFeb2020.out 2>&1 diff $srcdir/closeSocketFeb2020.expected closeSocketFeb2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/clearRulesJune2018.maude0000664000175000017510000000067515036121435023111 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that object-message rewriting is correctly initialized after *** set clear rules off . *** mod TEST is including CONFIGURATION . op m : Oid Oid -> Msg [msg] . ops 1 2 : -> Oid . op User : -> Cid . var A : AttributeSet . vars X Y : Oid . rl < X : User | A > m(X, Y) => < X : User | A > m(Y, X) . endm set clear rules off . frew [1] < 1 : User | none > m(1, 2) . Maude-Maude3.5.1/tests/ResolvedBugs/clearRulesJune2018.expected0000664000175000017510000000024315036121435023606 0ustar nileshnilesh========================================== frewrite [1] in TEST : m(1, 2) < 1 : User | none > . rewrites: 1 result Configuration: m(2, 1) < 1 : User | none > Bye. Maude-Maude3.5.1/tests/ResolvedBugs/clearRulesJune20180000775000175000017510000000040415036121435022010 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/clearRulesJune2018.maude -no-banner -no-advise \ > clearRulesJune2018.out 2>&1 diff $srcdir/clearRulesJune2018.expected clearRulesJune2018.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/attributeBugsNovember2020.maude0000664000175000017510000000275215036121435024477 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for mishandling of bad combinations of attributes *** and sort/polymorphism declarations. *** fmod ITER-ARITY is sorts Foo . op f : Foo Foo -> Foo [iter] . op g : -> Foo [iter] . ops a b c : -> Foo . endfm red f(a, b) . red g . fmod ITER-ASSOC is sorts Foo . op f : Foo Foo -> Foo [assoc iter] . ops a b c : -> Foo . endfm red f(a, b) . fmod POLY-ITER-ARITY is sorts Foo Foo2 Foo3 Foo4 Bar . subsorts Foo < Foo2 < Foo3 < Foo4 . op f : Universal Universal -> Universal [poly (0 1 2) iter] . op g : -> Universal [poly (0) iter] . ops a b c : -> Foo . endfm red f(a, b) . red g . fmod POLY-ITER-ASSOC is sorts Foo Foo2 Foo3 Foo4 Bar . subsorts Foo < Foo2 < Foo3 < Foo4 . op f : Universal Universal -> Universal [poly (0 1 2) assoc iter] . ops a b c : -> Foo . endfm red f(a, b) . fmod ITER-KINDS is sorts Foo Foo2 Foo3 Foo4 Bar . subsorts Foo < Foo2 < Foo3 < Foo4 . op f : Foo -> Bar [iter] . op g : Bar -> Foo [iter] . ops a b c : -> Foo . ops x y z : -> Bar . endfm red f(a) . red g(x) . fmod POLY-ITER-KINDS is sorts Foo Foo2 Foo3 Foo4 Bar . subsorts Foo < Foo2 < Foo3 < Foo4 . op f : Universal -> Foo [poly (1) iter] . op g : Foo -> Universal [poly (0) iter] . ops a b c : -> Foo . ops x y z : -> Bar . endfm red f(x) . red g(a) . fmod COMM-ID-IDEM-IGNORED is sort Foo . op f : Foo -> Foo [iter comm id: a idem] . ops a b c : -> Foo . endfm red f(a) . red f(f(a)) . Maude-Maude3.5.1/tests/ResolvedBugs/attributeBugsNovember2020.expected0000664000175000017510000000623715036121435025207 0ustar nileshnileshWarning: , line 11 (fmod ITER-ARITY): iter operator f has 2 domain sorts rather than 1. Warning: , line 12 (fmod ITER-ARITY): iter operator g has 0 domain sorts rather than 1. ========================================== reduce in ITER-ARITY : f(a, b) . rewrites: 0 result Foo: f(a, b) ========================================== reduce in ITER-ARITY : g . rewrites: 0 result Foo: g Warning: , line 21 (fmod ITER-ASSOC): iter operator f has 2 domain sorts rather than 1. ========================================== reduce in ITER-ASSOC : f(a, b) . rewrites: 0 result Foo: f(a, b) Warning: , line 31 (fmod POLY-ITER-ARITY): iter operator f has 2 domain sorts rather than 1. Warning: , line 32 (fmod POLY-ITER-ARITY): iter operator g has 0 domain sorts rather than 1. ========================================== reduce in POLY-ITER-ARITY : f(a, b) . rewrites: 0 result [Foo4]: f(a, b) Warning: , line 37: ambiguous term, two parses are: [Bar] : (g).Bar -versus- [Foo4] : (g).Foo4 Arbitrarily taking the first as correct. ========================================== reduce in POLY-ITER-ARITY : (g).Bar . rewrites: 0 result [Bar]: (g).Bar Warning: , line 42 (fmod POLY-ITER-ASSOC): iter operator f has 2 domain sorts rather than 1. ========================================== reduce in POLY-ITER-ASSOC : f(a, b) . rewrites: 0 result [Foo4]: f(a, b) Warning: , line 52 (fmod ITER-KINDS): iter operator f has a domain sort Foo in a different connected component from its range sort Bar. Warning: , line 53 (fmod ITER-KINDS): iter operator g has a domain sort Bar in a different connected component from its range sort Foo. ========================================== reduce in ITER-KINDS : f(a) . rewrites: 0 result Bar: f(a) ========================================== reduce in ITER-KINDS : g(x) . rewrites: 0 result Foo: g(x) Warning: , line 65 (fmod POLY-ITER-KINDS): iter operator f has a polymorphic domain sort but a range sort Foo. Warning: , line 66 (fmod POLY-ITER-KINDS): iter operator g has a domain sort Foo but a polymorphic range sort. ========================================== reduce in POLY-ITER-KINDS : f(x) . rewrites: 0 result Foo: f(x) Warning: , line 73: ambiguous term, two parses are: [Bool] : (g(a)).Bool -versus- [Foo4] : (g(a)).Foo4 Arbitrarily taking the first as correct. ========================================== reduce in POLY-ITER-KINDS : (g(a)).Bool . rewrites: 0 result [Bool]: (g(a)).Bool Warning: , line 78 (fmod COMM-ID-IDEM-IGNORED): comm operator f has 1 rather than 2 domain sorts. Warning: , line 78 (fmod COMM-ID-IDEM-IGNORED): id operator f has 1 rather than 2 domain sorts. Warning: , line 78 (fmod COMM-ID-IDEM-IGNORED): idem operator f has 1 rather than 2 domain sorts. ========================================== reduce in COMM-ID-IDEM-IGNORED : f(a) . rewrites: 0 result Foo: f(a) ========================================== reduce in COMM-ID-IDEM-IGNORED : f^2(a) . rewrites: 0 result Foo: f^2(a) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/attributeBugsNovember20200000775000175000017510000000044015036121435023400 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/attributeBugsNovember2020.maude -no-banner -no-advise \ > attributeBugsNovember2020.out 2>&1 diff $srcdir/attributeBugsNovember2020.expected attributeBugsNovember2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/ascentFunctionsJanuary2020.maude0000664000175000017510000000114215036121435024645 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that contects of bad module cannot be pulled up *** to the metalevel. *** smod BAD is pr NON-EXISTENT . endsm red in META-LEVEL : upModule('BAD, false) . red in META-LEVEL : upImports('BAD) . red in META-LEVEL : upSorts('BAD, false) . red in META-LEVEL : upSubsortDecls('BAD, false) . red in META-LEVEL : upOpDecls('BAD, false) . red in META-LEVEL : upMbs('BAD, false) . red in META-LEVEL : upEqs('BAD, false) . red in META-LEVEL : upRls('BAD, false) . red in META-LEVEL : upStratDecls('BAD, false) . red in META-LEVEL : upSds('BAD, false) . Maude-Maude3.5.1/tests/ResolvedBugs/ascentFunctionsJanuary2020.expected0000664000175000017510000000334015036121435025355 0ustar nileshnileshWarning: , line 11 (smod BAD): module NON-EXISTENT does not exist. Warning: , line 10 (smod BAD): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. ========================================== reduce in META-LEVEL : upModule('BAD, false) . rewrites: 0 result [Module]: upModule('BAD, false) ========================================== reduce in META-LEVEL : upImports('BAD) . rewrites: 0 result [ImportList]: upImports('BAD) ========================================== reduce in META-LEVEL : upSorts('BAD, false) . rewrites: 0 result [ModuleExpression,ParameterList,GTermList,QidSet,QidList,TypeListSet, Type?,Header]: upSorts('BAD, false) ========================================== reduce in META-LEVEL : upSubsortDecls('BAD, false) . rewrites: 0 result [SubsortDeclSet]: upSubsortDecls('BAD, false) ========================================== reduce in META-LEVEL : upOpDecls('BAD, false) . rewrites: 0 result [OpDeclSet]: upOpDecls('BAD, false) ========================================== reduce in META-LEVEL : upMbs('BAD, false) . rewrites: 0 result [MembAxSet]: upMbs('BAD, false) ========================================== reduce in META-LEVEL : upEqs('BAD, false) . rewrites: 0 result [EquationSet]: upEqs('BAD, false) ========================================== reduce in META-LEVEL : upRls('BAD, false) . rewrites: 0 result [RuleSet]: upRls('BAD, false) ========================================== reduce in META-LEVEL : upStratDecls('BAD, false) . rewrites: 0 result [StratDeclSet]: upStratDecls('BAD, false) ========================================== reduce in META-LEVEL : upSds('BAD, false) . rewrites: 0 result [StratDefSet]: upSds('BAD, false) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/ascentFunctionsJanuary20200000775000175000017510000000044415036121435023562 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/ascentFunctionsJanuary2020.maude -no-banner -no-advise \ > ascentFunctionsJanuary2020.out 2>&1 diff $srcdir/ascentFunctionsJanuary2020.expected ascentFunctionsJanuary2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/arityRenamingMarch2023.maude0000664000175000017510000000066315036121435023743 0ustar nileshnilesh*** *** Check for confusion between operators of different arities in renaming. *** fth T is sort Elt . op f : -> Elt . op f : Elt -> Elt . endfth fmod FOO is sort Foo . op g : -> Foo . op h : Foo -> Foo . endfm view V from T to FOO is sort Elt to Foo . op f : -> Elt to g . op f : Elt -> Elt to h . endv fmod BAR{X :: T} is op q : -> X$Elt . eq q = f(f) . endfm fmod BAZ is inc BAR{V} . endfm show all . Maude-Maude3.5.1/tests/ResolvedBugs/arityRenamingMarch2023.expected0000664000175000017510000000276015036121435024451 0ustar nileshnileshfmod BAZ is sorts Bool Foo . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op g : -> Foo . op h : Foo -> Foo . op q : -> Foo . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq q = h(g) . endfm Bye. Maude-Maude3.5.1/tests/ResolvedBugs/arityRenamingMarch20230000775000175000017510000000042415036121435022647 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/arityRenamingMarch2023.maude -no-banner -no-advise \ > arityRenamingMarch2023.out 2>&1 diff $srcdir/arityRenamingMarch2023.expected arityRenamingMarch2023.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/Makefile.am0000664000175000017510000002064215036121435020666 0ustar nileshnileshTESTS = \ CUIbug12-22-09 \ unificationMar2013 \ parserJune2018 \ staleViewJune2018 \ showModuleJune2018 \ clearRulesJune2018 \ metaIntRewriteJune2018 \ metaModuleCacheJune2018 \ metaIntImportJune2018 \ metaIntAscentJune2018 \ objectMessageOct2018 \ metaIntMatchOct2018 \ physArgIndexOct2018 \ metaApplyNov2018 \ moduleSumMay2019 \ parameterTheoryMay2019 \ parameterTheoryCopyMay2019 \ polymorphicOverloadMay2019 \ viewRecursionMay2019 \ instantiationJuly2019 \ ascentFunctionsJanuary2020 \ closeSocketFeb2020 \ metaParseStrategyApril2020 \ complexParserSyncApril2020 \ identityUnificationMay2020 \ sortCollapseMay2020 \ ACU_MissingUnifiersMay2020 \ variantUnifyJune2020 \ identityUnificationSeptember2020 \ CUI_OccursCheckSeptember2020 \ attributeBugsNovember2020 \ polymorphicParsingBugsNovember2020 \ irredUnifyFeb2021 \ deleteTimerMarch2021 \ uninitIterExtSeptember2021 \ loopModeStateAugust2021 \ instantiatedViewInternalNameOctober2022 \ degenerateFilteredVariantUnifyDecember2022 \ kindNameDecember2022 \ upTheoryJanuary2023 \ spuriousAdvisoryRenamingCaptureJanuary2023 \ smodStrategyNameJanuary2023 \ moduleViewBadWarningFebruary2023 \ theoryViewWrongWarningFebruary2023 \ doubleAttributeFebruary2023 \ showDesugaredFebruary2023 \ endothFebruary2023 \ specificOpMappingPrintFebruary2023 \ theoryViewOpToTermFebruary2023 \ metaAutoOoIncludeFebruary2023 \ generatedByFebruary2023 \ orphanedViewInstantiationFebruary2023 \ moduleOrphanedByViewFebruary2023 \ parameterizedConstantsMarch2023 \ opRenamingParseErrorMarch2023 \ metaNarrowingApplyMarch2023 \ quotedTokenMarch2023 \ renamingInstantiationMarch2023 \ arityRenamingMarch2023 \ parameterizedPolymorphicConstantMarch2023 \ pseudoParametersMarch2023 \ pseudoParameterTheoryConstantMarch2023 \ redBlackNonLinearApril2023 \ redBlackTooFewSubjectsApril2023 \ redBlackNGA_April2023 \ stripperCollectorSwitchMay2023 \ filteredVariantUnifyJune2023 \ conditionSideEffectInStrategyLanguageDecember2023 \ stringToRatConversionMarch2024 \ viewInstantiationAwkwardCaseApril2025 \ viewInstantiationByModuleViewApril2025 \ viewInstantiationByTheoryViewApril2025 \ stratToExprNotValidMay2025 \ invalidStrategyDefinitionJune2025 \ viewInstantiationAwkwardCaseStrategyMay2025 \ viewInstantiationByModuleViewStrategyMay2025 \ viewInstantiationByTheoryViewStrategyMay2025 \ fragmentBufferJune2025 \ viewNameApril2025 MAUDE_FILES = \ CUIbug12-22-09.maude \ unificationMar2013.maude \ parserJune2018.maude \ staleViewJune2018.maude \ showModuleJune2018.maude \ clearRulesJune2018.maude \ metaIntRewriteJune2018.maude \ metaModuleCacheJune2018.maude \ metaIntImportJune2018.maude \ metaIntAscentJune2018.maude \ objectMessageOct2018.maude \ metaIntMatchOct2018.maude \ physArgIndexOct2018.maude \ metaApplyNov2018.maude \ moduleSumMay2019.maude \ parameterTheoryMay2019.maude \ parameterTheoryCopyMay2019.maude \ polymorphicOverloadMay2019.maude \ viewRecursionMay2019.maude \ instantiationJuly2019.maude \ ascentFunctionsJanuary2020.maude \ closeSocketFeb2020.maude \ metaParseStrategyApril2020.maude \ complexParserSyncApril2020.maude \ identityUnificationMay2020.maude \ sortCollapseMay2020.maude \ ACU_MissingUnifiersMay2020.maude \ variantUnifyJune2020.maude \ identityUnificationSeptember2020.maude \ CUI_OccursCheckSeptember2020.maude \ attributeBugsNovember2020.maude \ polymorphicParsingBugsNovember2020.maude \ irredUnifyFeb2021.maude \ deleteTimerMarch2021.maude \ uninitIterExtSeptember2021.maude \ loopModeStateAugust2021.maude \ instantiatedViewInternalNameOctober2022.maude \ degenerateFilteredVariantUnifyDecember2022.maude \ kindNameDecember2022.maude \ upTheoryJanuary2023.maude \ spuriousAdvisoryRenamingCaptureJanuary2023.maude \ smodStrategyNameJanuary2023.maude \ moduleViewBadWarningFebruary2023.maude \ theoryViewWrongWarningFebruary2023.maude \ doubleAttributeFebruary2023.maude \ showDesugaredFebruary2023.maude \ endothFebruary2023.maude \ specificOpMappingPrintFebruary2023.maude \ theoryViewOpToTermFebruary2023.maude \ metaAutoOoIncludeFebruary2023.maude \ generatedByFebruary2023.maude \ orphanedViewInstantiationFebruary2023.maude \ moduleOrphanedByViewFebruary2023.maude \ parameterizedConstantsMarch2023.maude \ opRenamingParseErrorMarch2023.maude \ metaNarrowingApplyMarch2023.maude \ quotedTokenMarch2023.maude \ renamingInstantiationMarch2023.maude \ arityRenamingMarch2023.maude \ parameterizedPolymorphicConstantMarch2023.maude \ pseudoParametersMarch2023.maude \ pseudoParameterTheoryConstantMarch2023.maude \ redBlackNonLinearApril2023.maude \ redBlackTooFewSubjectsApril2023.maude \ redBlackNGA_April2023.maude \ stripperCollectorSwitchMay2023.maude \ filteredVariantUnifyJune2023.maude \ conditionSideEffectInStrategyLanguageDecember2023.maude \ stringToRatConversionMarch2024.maude \ viewInstantiationAwkwardCaseApril2025.maude \ viewInstantiationByModuleViewApril2025.maude \ viewInstantiationByTheoryViewApril2025.maude \ stratToExprNotValidMay2025.maude \ invalidStrategyDefinitionJune2025.maude \ viewInstantiationAwkwardCaseStrategyMay2025.maude \ viewInstantiationByModuleViewStrategyMay2025.maude \ viewInstantiationByTheoryViewStrategyMay2025.maude \ fragmentBufferJune2025.maude \ viewNameApril2025.maude RESULT_FILES = \ CUIbug12-22-09.expected \ unificationMar2013.expected \ parserJune2018.expected \ staleViewJune2018.expected \ showModuleJune2018.expected \ clearRulesJune2018.expected \ metaIntRewriteJune2018.expected \ metaModuleCacheJune2018.expected \ metaIntImportJune2018.expected \ metaIntAscentJune2018.expected \ objectMessageOct2018.expected \ metaIntMatchOct2018.expected \ physArgIndexOct2018.expected \ metaApplyNov2018.expected \ moduleSumMay2019.expected \ parameterTheoryMay2019.expected \ parameterTheoryCopyMay2019.expected \ polymorphicOverloadMay2019.expected \ viewRecursionMay2019.expected \ instantiationJuly2019.expected \ ascentFunctionsJanuary2020.expected \ closeSocketFeb2020.expected \ metaParseStrategyApril2020.expected \ complexParserSyncApril2020.expected \ identityUnificationMay2020.expected \ sortCollapseMay2020.expected \ ACU_MissingUnifiersMay2020.expected \ variantUnifyJune2020.expected \ identityUnificationSeptember2020.expected \ CUI_OccursCheckSeptember2020.expected \ attributeBugsNovember2020.expected \ polymorphicParsingBugsNovember2020.expected \ irredUnifyFeb2021.expected \ deleteTimerMarch2021.expected \ uninitIterExtSeptember2021.expected \ loopModeStateAugust2021.expected \ instantiatedViewInternalNameOctober2022.expected \ degenerateFilteredVariantUnifyDecember2022.expected \ kindNameDecember2022.expected \ upTheoryJanuary2023.expected \ spuriousAdvisoryRenamingCaptureJanuary2023.expected \ smodStrategyNameJanuary2023.expected \ moduleViewBadWarningFebruary2023.expected \ theoryViewWrongWarningFebruary2023.expected \ doubleAttributeFebruary2023.expected \ showDesugaredFebruary2023.expected \ endothFebruary2023.expected \ specificOpMappingPrintFebruary2023.expected \ theoryViewOpToTermFebruary2023.expected \ metaAutoOoIncludeFebruary2023.expected \ generatedByFebruary2023.expected \ orphanedViewInstantiationFebruary2023.expected \ moduleOrphanedByViewFebruary2023.expected \ parameterizedConstantsMarch2023.expected \ opRenamingParseErrorMarch2023.expected \ metaNarrowingApplyMarch2023.expected \ quotedTokenMarch2023.expected \ renamingInstantiationMarch2023.expected \ arityRenamingMarch2023.expected \ parameterizedPolymorphicConstantMarch2023.expected \ pseudoParametersMarch2023.expected \ pseudoParameterTheoryConstantMarch2023.expected \ redBlackNonLinearApril2023.expected \ redBlackTooFewSubjectsApril2023.expected \ redBlackNGA_April2023.expected \ stripperCollectorSwitchMay2023.expected \ filteredVariantUnifyJune2023.expected \ conditionSideEffectInStrategyLanguageDecember2023.expected \ stringToRatConversionMarch2024.expected \ viewInstantiationAwkwardCaseApril2025.expected \ viewInstantiationByModuleViewApril2025.expected \ viewInstantiationByTheoryViewApril2025.expected \ stratToExprNotValidMay2025.expected \ invalidStrategyDefinitionJune2025.expected \ viewInstantiationAwkwardCaseStrategyMay2025.expected \ viewInstantiationByModuleViewStrategyMay2025.expected \ viewInstantiationByTheoryViewStrategyMay2025.expected \ fragmentBufferJune2025.expected \ viewNameApril2025.expected EXTRA_DIST = $(TESTS) $(MAUDE_FILES) $(RESULT_FILES) Maude-Maude3.5.1/tests/ResolvedBugs/CUIbug12-22-09.maude0000664000175000017510000000200315036121435021566 0ustar nileshnilesh***( Bug discovered 12/22/09. CUI_DagNode::stackArguments() checks the wrong UNSTACKABLE flag for the second argument resulting in a missed rewrite. Resolved in alpha92b. ) set show timing off . mod CUI-BUG is sort Foo . ops a b c d 1 : -> Foo . op f : Foo Foo -> Foo [id: 1] . op g : Foo -> Foo . rl b => c . rl c => d . endm rew f(a, g(b)) . ***( first pass: f does not rewrite - marked unrewritable f stacks a and g(b) a does not rewrite - marked unrewritable g(b) does not rewrite - marked unrewritable a does not stack anything and is unrewritable - marked unstackable g stacks b b rewrites to c and we rebuild f(a, g(c)) with only the a node shared with the previous dag second pass: f is unrewritable f cannot stack a because it is unstackable f cannot stack g(c) because we check the wrong unstackable flag thus we miss c => d ) mod CUI-BUG2 is sort Foo . ops a b c d 1 : -> Foo . op f : Foo Foo -> Foo [id: 1] . op g : Foo -> Foo . rl b => c . rl g(c) => d . endm rew f(a, g(b)) . Maude-Maude3.5.1/tests/ResolvedBugs/CUIbug12-22-09.expected0000664000175000017510000000034315036121435022301 0ustar nileshnilesh========================================== rewrite in CUI-BUG : f(a, g(b)) . rewrites: 2 result Foo: f(a, g(d)) ========================================== rewrite in CUI-BUG2 : f(a, g(b)) . rewrites: 2 result Foo: f(a, d) Bye. Maude-Maude3.5.1/tests/ResolvedBugs/CUIbug12-22-090000775000175000017510000000036415036121435020507 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/CUIbug12-22-09.maude -no-banner -no-advise \ > CUIbug12-22-09.out 2>&1 diff $srcdir/CUIbug12-22-09.expected CUIbug12-22-09.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/CUI_OccursCheckSeptember2020.maude0000664000175000017510000000177615036121435024725 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for nontermination in U and CU unification due to *** not doing an indirect occurs check. We use irred because *** we might reduce the number of redundant unifiers in the *** future. *** fmod U-TEST is sort Foo . ops 1 a : -> Foo . op f : Foo Foo -> Foo [id: 1] . vars A B C X Y Z : Foo . endfm irred unify X =? f(Z, Y) /\ Z =? f(X, Y) /\ f(X, Y) =? f(A, B) . irred unify f(X, Y) =? a /\ Z =? f(X, Y) /\ X =? f(Z, Y) . irred unify X =? f(f(f(X, Y), X), Y) . irred unify X =? f(f(f(X, X), Z), Y) . irred unify X =? f(f(X, Y), f(Y, X)) . irred unify X =? f(f(f(f(Y, X), Y), X), Z) . fmod CU-TEST is sort Foo . ops 1 a : -> Foo . op f : Foo Foo -> Foo [comm id: 1] . vars A B C X Y Z : Foo . endfm irred unify X =? f(Z, Y) /\ Z =? f(X, Y) /\ f(X, Y) =? f(A, B) . irred unify f(X, Y) =? a /\ Z =? f(X, Y) /\ X =? f(Z, Y) . irred unify X =? f(f(f(X, Y), X), Y) . irred unify X =? f(f(f(X, X), Z), Y) . irred unify X =? f(f(f(f(Y, X), Y), X), Z) . Maude-Maude3.5.1/tests/ResolvedBugs/CUI_OccursCheckSeptember2020.expected0000664000175000017510000000324315036121435025422 0ustar nileshnilesh========================================== irredundant unify in U-TEST : X =? f(Z, Y) /\ Z =? f(X, Y) /\ f(X, Y) =? f(A, B) . Unifier 1 X --> f(#1:Foo, #2:Foo) Z --> f(#1:Foo, #2:Foo) Y --> 1 A --> #1:Foo B --> #2:Foo ========================================== irredundant unify in U-TEST : f(X, Y) =? a /\ Z =? f(X, Y) /\ X =? f(Z, Y) . Unifier 1 X --> a Y --> 1 Z --> a ========================================== irredundant unify in U-TEST : X =? f(f(f(X, Y), X), Y) . Unifier 1 X --> 1 Y --> 1 ========================================== irredundant unify in U-TEST : X =? f(f(f(X, X), Z), Y) . Unifier 1 X --> 1 Z --> 1 Y --> 1 ========================================== irredundant unify in U-TEST : X =? f(f(X, Y), f(Y, X)) . Unifier 1 X --> 1 Y --> 1 ========================================== irredundant unify in U-TEST : X =? f(f(f(f(Y, X), Y), X), Z) . Unifier 1 X --> 1 Y --> 1 Z --> 1 ========================================== irredundant unify in CU-TEST : X =? f(Z, Y) /\ Z =? f(X, Y) /\ f(X, Y) =? f(A, B) . Unifier 1 X --> f(#1:Foo, #2:Foo) Z --> f(#1:Foo, #2:Foo) Y --> 1 A --> #1:Foo B --> #2:Foo ========================================== irredundant unify in CU-TEST : f(X, Y) =? a /\ Z =? f(X, Y) /\ X =? f(Z, Y) . Unifier 1 X --> a Y --> 1 Z --> a ========================================== irredundant unify in CU-TEST : X =? f(f(f(X, Y), X), Y) . Unifier 1 X --> 1 Y --> 1 ========================================== irredundant unify in CU-TEST : X =? f(f(f(X, X), Z), Y) . Unifier 1 X --> 1 Y --> 1 Z --> 1 ========================================== irredundant unify in CU-TEST : X =? f(f(f(f(Y, X), Y), X), Z) . Unifier 1 X --> 1 Z --> 1 Y --> 1 Bye. Maude-Maude3.5.1/tests/ResolvedBugs/CUI_OccursCheckSeptember20200000775000175000017510000000045415036121435023626 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/CUI_OccursCheckSeptember2020.maude -no-banner -no-advise \ > CUI_OccursCheckSeptember2020.out 2>&1 diff $srcdir/CUI_OccursCheckSeptember2020.expected CUI_OccursCheckSeptember2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ResolvedBugs/ACU_MissingUnifiersMay2020.maude0000664000175000017510000000075515036121435024433 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test for bug where we were losing ACU unifiers because *** they were subsumed by an mgu that failed to sort and code *** intended to detect this situation failed because of a mis-set *** flag. *** fmod FOO is sorts Zero NzNat Nat . subsorts Zero NzNat < Nat . op _+_ : Nat NzNat -> NzNat [assoc comm id: 0] . op _+_ : Nat Nat -> Nat [ditto] . op 0 : -> Zero . op g : Zero -> Nat . endfm unify N:Nat =? g(M:Nat + Z:Zero) . Maude-Maude3.5.1/tests/ResolvedBugs/ACU_MissingUnifiersMay2020.expected0000664000175000017510000000041515036121435025132 0ustar nileshnilesh========================================== unify in FOO : N:Nat =? g(M:Nat + Z:Zero) . Unifier 1 N:Nat --> g(0) M:Nat --> 0 Z:Zero --> 0 Unifier 2 N:Nat --> g(#1:Zero) M:Nat --> #1:Zero Z:Zero --> 0 Unifier 3 N:Nat --> g(#1:Zero) M:Nat --> 0 Z:Zero --> #1:Zero Bye. Maude-Maude3.5.1/tests/ResolvedBugs/ACU_MissingUnifiersMay20200000775000175000017510000000044415036121435023337 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/ACU_MissingUnifiersMay2020.maude -no-banner -no-advise \ > ACU_MissingUnifiersMay2020.out 2>&1 diff $srcdir/ACU_MissingUnifiersMay2020.expected ACU_MissingUnifiersMay2020.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/0000775000175000017510000000000015036121435017122 5ustar nileshnileshMaude-Maude3.5.1/tests/ObjectOriented/rrobin.maude0000664000175000017510000000471415036121435021440 0ustar nileshnileshset show timing off . set show advisories off . set verbose on . ---- adapted ---- from the book All About Maude ---- from the Maude Manual ---- by the Maude team fth NZNAT# is protecting NAT . op # : -> NzNat . endfth fmod NAT/{N :: NZNAT#} is sort Nat/{N} . op [_] : Nat -> Nat/{N} [ctor] . op _+_ : Nat/{N} Nat/{N} -> Nat/{N} . op _*_ : Nat/{N} Nat/{N} -> Nat/{N} . vars N M : Nat . ceq [N] = [N rem #] if N >= # . eq [N] + [M] = [N + M] . eq [N] * [M] = [N * M] . endfm omod RROBIN{N :: NZNAT#} is protecting NAT/{N} . sort Mode . ops wait critical : -> Mode [ctor] . subsort Nat/{N} < Oid . class Proc | mode : Mode . msg go : Nat/{N} -> Msg . var N : Nat . rl [enter] : go([N]) < [N] : Proc | mode : wait > => < [N] : Proc | mode : critical > . rl [exit] : < [N] : Proc | mode : critical > => < [N] : Proc | mode : wait > go([s(N)]) . op init : -> Configuration . op make-init : Nat/{N} -> Configuration . ceq init = go([0]) make-init([N]) if s(N) := # . ceq make-init([s(N)]) = < [s(N)] : Proc | mode : wait > make-init([N]) if N < # . eq make-init([0]) = < [0] : Proc | mode : wait > . endom load model-checker.maude omod CHECK-RROBIN{N :: NZNAT#} is pr RROBIN{N} . inc MODEL-CHECKER . inc SATISFACTION . ex LTL-SIMPLIFIER . inc LTL . subsort Configuration < State . op inCrit : Nat/{N} -> Prop . op twoInCrit : -> Prop . var N : Nat . vars X Y : Nat/{N} . var C : Configuration . var F : Formula . eq < X : Proc | mode : critical > C |= inCrit(X) = true . eq < X : Proc | mode : critical > < Y : Proc | mode : critical > C |= twoInCrit = true . op guaranteedReentrance : -> Formula . op allProcessesReenter : Nat -> Formula . op nextIter_ : Formula -> Formula . op nextIterAux : Nat Formula -> Formula . eq guaranteedReentrance = allProcessesReenter(#) . eq allProcessesReenter(s N) = (inCrit([s N]) -> nextIter inCrit([s N])) /\ allProcessesReenter(N) . eq allProcessesReenter(0) = inCrit([0]) -> nextIter inCrit([0]) . eq nextIter F = nextIterAux(2 * #, F) . eq nextIterAux(s N, F) = O nextIterAux(N, F) . eq nextIterAux(0, F) = F . endom view 5 from NZNAT# to NAT is op # to term 5 . endv omod CHECK-RROBIN-5 is pr CHECK-RROBIN{5} . endom red modelCheck(init, [] ~ twoInCrit) . red modelCheck(init, [] guaranteedReentrance) . red modelCheck(init, [] (inCrit([1]) -> O O O inCrit([1]))) . Maude-Maude3.5.1/tests/ObjectOriented/rrobin.expected0000664000175000017510000001133315036121435022141 0ustar nileshnileshConsidering object completion on: rl [enter] : go([N]) < [N] : Proc | mode : wait > => < [N] : Proc | mode : critical > . Transformed rule: rl [enter] : go([N]) < [N] : V:Proc | mode : wait, Atts:AttributeSet > => < [ N] : V:Proc | mode : critical, Atts:AttributeSet > . Considering object completion on: rl [exit] : < [N] : Proc | mode : critical > => < [N] : Proc | mode : wait > go([s N]) . Transformed rule: rl [exit] : < [N] : V:Proc | mode : critical, Atts:AttributeSet > => < [N] : V:Proc | mode : wait, Atts:AttributeSet > go([s N]) . Considering object completion on: eq (< X : Proc | mode : critical > C) |= inCrit(X) = true . Transformed equation: eq (< X : V:Proc | mode : critical, Atts:AttributeSet > C) |= inCrit(X) = true . Considering object completion on: eq (< X : Proc | mode : critical > < Y : Proc | mode : critical > C) |= twoInCrit = true . Transformed equation: eq (< X : V:Proc | mode : critical, Atts:AttributeSet > < Y : V2:Proc | mode : critical, Atts2:AttributeSet > C) |= twoInCrit = true . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from [State] to State is unequal. op __ left-identity collapse from TransitionList to Transition is unequal. op __ right-identity collapse from TransitionList to Transition is unequal. ========================================== reduce in CHECK-RROBIN-5 : modelCheck(init, []~ twoInCrit) . ModelChecker: Property automaton has 2 states. ModelCheckerSymbol: Examined 10 system states. rewrites: 52 result Bool: true ========================================== reduce in CHECK-RROBIN-5 : modelCheck(init, []guaranteedReentrance) . ModelChecker: Property automaton has 52 states. ModelCheckerSymbol: Examined 10 system states. rewrites: 2263 result Bool: true ========================================== reduce in CHECK-RROBIN-5 : modelCheck(init, [](inCrit([1]) -> O O O inCrit([ 1]))) . ModelChecker: Property automaton has 5 states. ModelCheckerSymbol: Examined 10 system states. rewrites: 67 result ModelCheckResult: counterexample({go([0]) < [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'enter} {< [0] : Proc | mode : critical > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'exit} {go([1]) < [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'enter} { < [0] : Proc | mode : wait > < [1] : Proc | mode : critical > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'exit} {go([2]) < [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'enter} {< [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : critical > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'exit}, {go([3]) < [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'enter} {< [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : critical > < [4] : Proc | mode : wait >, 'exit} {go([4]) < [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'enter} { < [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : critical >, 'exit} {go([0]) < [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'enter} {< [0] : Proc | mode : critical > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [ 4] : Proc | mode : wait >, 'exit} {go([1]) < [0] : Proc | mode : wait > < [ 1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'enter} {< [0] : Proc | mode : wait > < [1] : Proc | mode : critical > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'exit} {go([2]) < [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : wait > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'enter} { < [0] : Proc | mode : wait > < [1] : Proc | mode : wait > < [2] : Proc | mode : critical > < [3] : Proc | mode : wait > < [4] : Proc | mode : wait >, 'exit}) Bye. Maude-Maude3.5.1/tests/ObjectOriented/rrobin0000775000175000017510000000032415036121435020342 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/rrobin.maude -no-banner -no-advise \ > rrobin.out 2>&1 diff $srcdir/rrobin.expected rrobin.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/rent-a-car-store.maude0000664000175000017510000000637715036121435023237 0ustar nileshnileshset show timing off . set show advisories off . set verbose on . ---- adapted ---- from the book All About Maude ---- from the Maude Manual ---- by the Maude team omod RENT-A-CAR-STORE is pr INT . pr QID . subsort Qid < Oid . class Customer | cash : Nat, debt : Nat, suspended : Bool . class Car | available : Bool, rate : Nat . class EconomyCar . class MidSizeCar . class FullSizeCar . subclasses EconomyCar MidSizeCar FullSizeCar < Car . class Rental | deposit : Nat, dueDate : Nat, pickUpDate : Nat, customer : Oid, car : Oid . class Calendar | date : Nat . vars F Today Rt NumDays M N Amnt PDt DDt Dpst : Int . vars O U I C A : Oid . rl [new-day] : < O : Calendar | date : F > => < O : Calendar | date : F + 1 > . crl [car-rental] : < U : Customer | cash : M, suspended : false > < I : Car | available : true, rate : Rt > < C : Calendar | date : Today > => < U : Customer | cash : M - Amnt > < I : Car | available : false > < C : Calendar | > < A : Rental | pickUpDate : Today, dueDate : Today + NumDays, car : I, deposit : Amnt, customer : U, rate : Rt > if Amnt := Rt * NumDays /\ M >= Amnt [nonexec] . crl [on-date-car-return] : < U : Customer | cash : M > < I : Car | rate : Rt > < A : Rental | customer : U, car : I, pickUpDate : PDt, dueDate : DDt, deposit : Dpst > < C : Calendar | date : Today > => < U : Customer | cash : (M + Dpst) - Amnt > < I : Car | available : true > < C : Calendar | > if (Today <= DDt) /\ Amnt := Rt * (Today - PDt) [nonexec] . crl [late-car-return] : < U : Customer | debt : M > < I : Car | rate : Rt > < A : Rental | customer : U, car : I, pickUpDate : PDt, dueDate : DDt, deposit : Dpst > < C : Calendar | date : Today > => < U : Customer | debt : (M + Amnt) - Dpst > < I : Car | available : true > < C : Calendar | > if DDt < Today *** it is returned late /\ Amnt := Rt * (DDt - PDt) + ((Rt * (Today - DDt)) * (100 + 20)) quo 100 [nonexec] . crl [pay-debt] : < U : Customer | debt : M, cash : N > => < U : Customer | debt : M - Amnt, cash : N - Amnt > if 0 < Amnt /\ Amnt <= N /\ Amnt <= M [nonexec] . crl [suspend-late-payers] : < U : Customer | debt : M, suspended : false > => < U : Customer | suspended : true > if M > 0 . crl [suspend-late-returns] : < U : Customer | suspended : false > < I : Car | > < A : Rental | customer : U, car : I, dueDate : DDt > < C : Calendar | date : Today > => < U : Customer | suspended : true > < I : Car | > < A : Rental | > < C : Calendar | > if DDt < Today . endom mod RENT-A-CAR-STORE-TEST is pr RENT-A-CAR-STORE . op StoreConf : -> Configuration [memo] . eq StoreConf = < 'C1 : Customer | cash : 5000, debt : 0, suspended : false > < 'C2 : Customer | cash : 5000, debt : 0, suspended : false > < 'A1 : EconomyCar | available : true, rate : 100 > < 'A3 : MidSizeCar | available : true, rate : 150 > < 'A5 : FullSizeCar | available : true, rate : 200 > < 'C : Calendar | date : 0 > . endm rew [100] StoreConf . Maude-Maude3.5.1/tests/ObjectOriented/rent-a-car-store.expected0000664000175000017510000001343015036121435023731 0ustar nileshnileshConsidering object completion on: rl [new-day] : < O : Calendar | date : F > => < O : Calendar | date : (F + 1) > . Transformed rule: rl [new-day] : < O : V:Calendar | date : F, Atts:AttributeSet > => < O : V:Calendar | date : (F + 1), Atts:AttributeSet > . Considering object completion on: crl [car-rental] : < U : Customer | cash : M, suspended : false > < I : Car | available : true, rate : Rt > < C : Calendar | date : Today > => < U : Customer | cash : (M - Amnt) > < I : Car | available : false > < C : Calendar | none > < A : Rental | pickUpDate : Today, dueDate : (Today + NumDays), car : I, deposit : Amnt, customer : U, rate : Rt > if Amnt := Rt * NumDays /\ M >= Amnt = true [nonexec] . Transformed rule: crl [car-rental] : < U : V3:Customer | cash : M, suspended : false, Atts3:AttributeSet > < I : V2:Car | available : true, rate : Rt, Atts2:AttributeSet > < C : V:Calendar | date : Today, Atts:AttributeSet > => < U : V3:Customer | suspended : false, cash : (M - Amnt), Atts3:AttributeSet > < I : V2:Car | rate : Rt, available : false, Atts2:AttributeSet > < C : V:Calendar | date : Today, Atts:AttributeSet > < A : Rental | pickUpDate : Today, dueDate : (Today + NumDays), car : I, deposit : Amnt, customer : U, rate : Rt > if Amnt := Rt * NumDays /\ M >= Amnt = true [nonexec] . Considering object completion on: crl [on-date-car-return] : < U : Customer | cash : M > < I : Car | rate : Rt > < A : Rental | customer : U, car : I, pickUpDate : PDt, dueDate : DDt, deposit : Dpst > < C : Calendar | date : Today > => < U : Customer | cash : ((M + Dpst) - Amnt) > < I : Car | available : true > < C : Calendar | none > if Today <= DDt = true /\ Amnt := Rt * (Today - PDt) [nonexec] . Transformed rule: crl [on-date-car-return] : < U : V4:Customer | cash : M, Atts4:AttributeSet > < I : V3:Car | available : A2:[Bool], rate : Rt, Atts3:AttributeSet > < A : V:Rental | deposit : Dpst, dueDate : DDt, pickUpDate : PDt, customer : U, car : I, Atts:AttributeSet > < C : V2:Calendar | date : Today, Atts2:AttributeSet > => < U : V4:Customer | cash : ((M + Dpst) - Amnt), Atts4:AttributeSet > < I : V3:Car | rate : Rt, available : true, Atts3:AttributeSet > < C : V2:Calendar | date : Today, Atts2:AttributeSet > if Today <= DDt = true /\ Amnt := Rt * (Today - PDt) [nonexec] . Considering object completion on: crl [late-car-return] : < U : Customer | debt : M > < I : Car | rate : Rt > < A : Rental | customer : U, car : I, pickUpDate : PDt, dueDate : DDt, deposit : Dpst > < C : Calendar | date : Today > => < U : Customer | debt : ((M + Amnt) - Dpst) > < I : Car | available : true > < C : Calendar | none > if DDt < Today = true /\ Amnt := Rt * (DDt - PDt) + ((Rt * (Today - DDt)) * (100 + 20)) quo 100 [nonexec] . Transformed rule: crl [late-car-return] : < U : V4:Customer | debt : M, Atts4:AttributeSet > < I : V3:Car | available : A2:[Bool], rate : Rt, Atts3:AttributeSet > < A : V:Rental | deposit : Dpst, dueDate : DDt, pickUpDate : PDt, customer : U, car : I, Atts:AttributeSet > < C : V2:Calendar | date : Today, Atts2:AttributeSet > => < U : V4:Customer | debt : ((M + Amnt) - Dpst), Atts4:AttributeSet > < I : V3:Car | rate : Rt, available : true, Atts3:AttributeSet > < C : V2:Calendar | date : Today, Atts2:AttributeSet > if DDt < Today = true /\ Amnt := Rt * (DDt - PDt) + ((Rt * (Today - DDt)) * (100 + 20)) quo 100 [nonexec] . Considering object completion on: crl [pay-debt] : < U : Customer | debt : M, cash : N > => < U : Customer | debt : (M - Amnt), cash : (N - Amnt) > if 0 < Amnt = true /\ Amnt <= N = true /\ Amnt <= M = true [nonexec] . Transformed rule: crl [pay-debt] : < U : V:Customer | cash : N, debt : M, Atts:AttributeSet > => < U : V:Customer | cash : (N - Amnt), debt : (M - Amnt), Atts:AttributeSet > if 0 < Amnt = true /\ Amnt <= N = true /\ Amnt <= M = true [nonexec] . Considering object completion on: crl [suspend-late-payers] : < U : Customer | debt : M, suspended : false > => < U : Customer | suspended : true > if M > 0 = true . Transformed rule: crl [suspend-late-payers] : < U : V:Customer | debt : M, suspended : false, Atts:AttributeSet > => < U : V:Customer | debt : M, suspended : true, Atts:AttributeSet > if M > 0 = true . Considering object completion on: crl [suspend-late-returns] : < U : Customer | suspended : false > < I : Car | none > < A : Rental | customer : U, car : I, dueDate : DDt > < C : Calendar | date : Today > => < U : Customer | suspended : true > < I : Car | none > < A : Rental | none > < C : Calendar | none > if DDt < Today = true . Transformed rule: crl [suspend-late-returns] : < U : V4:Customer | suspended : false, Atts4:AttributeSet > < I : V3:Car | Atts3:AttributeSet > < A : V:Rental | dueDate : DDt, customer : U, car : I, Atts:AttributeSet > < C : V2:Calendar | date : Today, Atts2:AttributeSet > => < U : V4:Customer | suspended : true, Atts4:AttributeSet > < I : V3:Car | Atts3:AttributeSet > < A : V:Rental | dueDate : DDt, customer : U, car : I, Atts:AttributeSet > < C : V2:Calendar | date : Today, Atts2:AttributeSet > if DDt < Today = true . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. ========================================== rewrite [100] in RENT-A-CAR-STORE-TEST : StoreConf . rewrites: 201 result Configuration: < 'A1 : EconomyCar | available : true, rate : 100 > < 'A3 : MidSizeCar | available : true, rate : 150 > < 'A5 : FullSizeCar | available : true, rate : 200 > < 'C : Calendar | date : 100 > < 'C1 : Customer | cash : 5000, debt : 0, suspended : false > < 'C2 : Customer | cash : 5000, debt : 0, suspended : false > Bye. Maude-Maude3.5.1/tests/ObjectOriented/rent-a-car-store0000775000175000017510000000037415036121435022137 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/rent-a-car-store.maude -no-banner -no-advise \ > rent-a-car-store.out 2>&1 diff $srcdir/rent-a-car-store.expected rent-a-car-store.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/prngTest.maude0000664000175000017510000000345615036121435021755 0ustar nileshnileshset show timing off . *** *** Test the PRNG objects. *** load prng *** 32-bit Mersenne Twister after seeding with 0; should agree with default 0 initialization of numbers from mod RANDOM omod PRNG-TEST1 is inc PRNG . pr LIST{Nat} . class Rlist | count : Nat, numbers : List{Nat} . op myObj : -> Oid . op start : -> Configuration . rl start => <> < myObj : Rlist | count : 100, numbers : nil > createPrng(prngManager, myObj, "MT32") . vars O O2 : Oid . vars N R : Nat . var L : List{Nat} . rl createdPrng(myObj, O, O2) < myObj : Rlist | > => < myObj : Rlist | > setSeed(O2, myObj, 0) . rl seedSet(myObj, O) < myObj : Rlist | count : s N > => < myObj : Rlist | count : s N > getNext(O, myObj) . rl gotNext(myObj, O, R) < myObj : Rlist | count : s N, numbers : L > => < myObj : Rlist | count : N, numbers : (L R) > getNext(O, myObj) . rl gotNext(myObj, O, R) < myObj : Rlist | count : 0, numbers : L > => < myObj : Rlist | count : 0, numbers : (L R) > deletePrng(O, myObj) . endom erew start . *** 64-bit Mersenne Twister with default seeding omod PRNG-TEST2 is inc PRNG . pr LIST{Nat} . class Rlist | count : Nat, numbers : List{Nat} . op myObj : -> Oid . op start : -> Configuration . rl start => <> < myObj : Rlist | count : 100, numbers : nil > createPrng(prngManager, myObj, "MT64") . vars O O2 : Oid . vars N R : Nat . var L : List{Nat} . rl createdPrng(myObj, O, O2) < myObj : Rlist | count : s N > => < myObj : Rlist | count : N > getNext(O2, myObj) . rl gotNext(myObj, O, R) < myObj : Rlist | count : s N, numbers : L > => < myObj : Rlist | count : N, numbers : (L R) > getNext(O, myObj) . rl gotNext(myObj, O, R) < myObj : Rlist | count : 0, numbers : L > => < myObj : Rlist | count : 0, numbers : (L R) > deletePrng(O, myObj) . endom erew start . Maude-Maude3.5.1/tests/ObjectOriented/prngTest.expected0000664000175000017510000000716615036121435022465 0ustar nileshnilesh========================================== erewrite in PRNG-TEST1 : start . rewrites: 104 result Configuration: <> deletedPrng(myObj, prng(0)) < myObj : Rlist | count : 0, numbers : (2357136044 2546248239 3071714933 3626093760 2588848963 3684848379 2340255427 3638918503 1819583497 2678185683 2774094101 1650906866 1879422756 1277901399 3830135878 243580376 4138900056 1171049868 1646868794 2051556033 3400433126 3488238119 2271586391 2061486254 2439732824 1686997841 3975407269 3590930969 305097549 1449105480 374217481 2783877012 86837363 1581585360 3576074995 4110950085 3342157822 602801999 3736673711 3736996288 4203133778 2034131043 3432359896 3439885489 1982038771 2235433757 3352347283 2915765395 507984782 3095093671 2748439840 2499755969 615697673 2308000441 4057322111 3258229280 2241321503 454869706 1780959476 2034098327 1136257699 800291326 3325308363 3165039474 1959150775 930076700 2441405218 580757632 80701568 1392175012 2652724277 642848645 2628931110 954863080 2649711348 1659957521 4053367119 3876630916 2928395881 1932520490 1544074682 2633087519 1877037944 3875557633 2996303169 426405863 258666409 4165298233 2863741219 2805215078 2880367735 734051083 903586222 1538251858 553734235 3224172416 1354754446 2610612835 1562125877 1396067212 2448976505) > ========================================== erewrite in PRNG-TEST2 : start . rewrites: 102 result Configuration: <> deletedPrng(myObj, prng(0)) < myObj : Rlist | count : 0, numbers : (14514284786278117030 4620546740167642908 13109570281517897720 17462938647148434322 355488278567739596 7469126240319926998 4635995468481642529 418970542659199878 9604170989252516556 6358044926049913402 5058016125798318033 10349215569089701407 2583272014892537200 10032373690199166667 9627645531742285868 15810285301089087632 9219209713614924562 7736011505917826031 13729552270962724157 4596340717661012313 4413874586873285858 5904155143473820934 16795776195466785825 3040631852046752166 4529279813148173111 3658352497551999605 13205889818278417278 17853215078830450730 14193508720503142180 1488787817663097441 8484116316263611556 4745643133208116498 14333959900198994173 10770733876927207790 17529942701849009476 8081518017574486547 5945178879512507902 9821139136195250096 4728986788662773602 840062144447779464 9315169977352719788 12843335216705846126 1682692516156909696 16733405176195045732 570275675392078508 2804578118555336986 18105853946332827420 11444576169427052165 5511269538150904327 6665263661402689669 8872308438533970361 5494304472256329401 5260777597240341458 17048363385688465216 11601203342555724204 13927871433293278342 13168989862813642697 13332527631701716084 1288265801825883165 8980511589347843149 1639193574298669424 14012553476551396225 7818048564976445173 11012385938523194722 1594098091654903511 5035242355473277827 11507220397369885600 4097669440061230013 4158775797243890311 8008476757622511610 18212599999684195413 3892070972454396029 15739033291548026583 5240984520368774617 15428220128146522508 6764778500174078837 17250425930626079997 15862445320841941901 9055707723866709616 407278260229756649 6679883267401891436 13585010976506536654 9580697194899010248 7802093638911637786 535562807229422763 16772549087470588412 2069348082463192648 18080878539236249869 12688200000096479737 8989665349769173357 13575112928849473200 10859033464356012248 9748216112997718693 8405158063935141693 15279502632583570477 16055899490125284200 9066388900883848980 17884680971936629565 16395391805201036549 2550532686790805254) > Bye. Maude-Maude3.5.1/tests/ObjectOriented/prngTest0000775000175000017510000000033415036121435020656 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/prngTest.maude -no-banner -no-advise \ > prngTest.out 2>&1 diff $srcdir/prngTest.expected prngTest.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/parameterization.maude0000664000175000017510000000222115036121435023512 0ustar nileshnileshset show timing off . set show advisories off . set verbose on . *** *** Test module operations on oths/omods/views. *** oth CONTAINER is inc TRIV . class Container | guts : Elt . msg insert : Oid Oid Elt -> Msg . endoth show desugared . show all . omod DO-SOMETHING{Z :: CONTAINER} is inc QID . subsort Qid < Oid . op init : Z$Elt -> Configuration . eq init(X:Z$Elt) = < 'a : Z$Container | guts : X:Z$Elt > . rl insert(R:Oid, S:Oid, D:Z$Elt) < R:Oid : Z$Container | > => < R:Oid : Z$Container | guts : D:Z$Elt > . endom show desugared . red init(E:Z$Elt) . rew init(E:Z$Elt) insert('a, 'b, F:Z$Elt) . omod BAG{X :: TRIV} is class Bag{X} | contents : X$Elt . msg replace : Oid X$Elt -> Msg . endom show desugared . show all . view Bag{Y :: TRIV} from CONTAINER to BAG{Y} is class Container to Bag{Y} . sort Elt to Y$Elt . attr guts to contents . vars R S : Oid . var D : Elt . msg insert(R, S, D) to term replace(R, D) . endv show view . show processed view . omod TEST{Y :: TRIV} is inc DO-SOMETHING{Bag{Y}} . endom show all . omod TEST is inc DO-SOMETHING{Bag{Nat}} . endom red init(42) . rew init(42) replace('a, 13) . Maude-Maude3.5.1/tests/ObjectOriented/parameterization.expected0000664000175000017510000004114215036121435024225 0ustar nileshnileshop _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. th CONTAINER is including CONFIGURATION . including TRIV . sort Container . subsort Container < Cid . op insert : Oid Oid Elt -> Msg [ctor msg] . op Container : -> Container [ctor pconst] . op guts :_ : Elt -> Attribute [ctor prec 15 gather (&)] . endth th CONTAINER is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Elt Container . subsort Attribute < AttributeSet . subsort Container < Cid . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op insert : Oid Oid Elt -> Msg [ctor msg] . op Container : -> Container [ctor pconst] . op guts :_ : Elt -> Attribute [ctor prec 15 gather (&)] . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endth Considering object completion on: rl insert(R:Oid, S:Oid, D:Z$Elt) < R:Oid : Z$Container | none > => < R:Oid : Z$Container | guts : D:Z$Elt > . Transformed rule: rl insert(R:Oid, S:Oid, D:Z$Elt) < R:Oid : V:Z$Container | guts : A:[Z$Elt], Atts:AttributeSet > => < R:Oid : V:Z$Container | guts : D:Z$Elt, Atts:AttributeSet > . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. mod DO-SOMETHING{Z :: CONTAINER} is including BOOL . including CONFIGURATION . including QID . subsort Qid < Oid . op init : Z$Elt -> Configuration . eq init(X:Z$Elt) = < 'a : Z$Container | guts : X:Z$Elt > . rl < R:Oid : V:Z$Container | Atts:AttributeSet, guts : A:[Z$Elt] > insert( R:Oid, S:Oid, D:Z$Elt) => < R:Oid : V:Z$Container | Atts:AttributeSet, guts : D:Z$Elt > . endm ========================================== reduce in DO-SOMETHING : init(E:Z$Elt) . rewrites: 1 result Object: < 'a : Z$Container | guts : E:Z$Elt > ========================================== rewrite in DO-SOMETHING : init(E:Z$Elt) insert('a, 'b, F:Z$Elt) . rewrites: 2 result Object: < 'a : Z$Container | guts : F:Z$Elt > op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. mod BAG{X :: TRIV} is including BOOL . including CONFIGURATION . sort Bag{X} . subsort Bag{X} < Cid . op replace : Oid X$Elt -> Msg [ctor msg] . op Bag{X} : -> Bag{X} [ctor] . op contents :_ : X$Elt -> Attribute [ctor prec 15 gather (&)] . endm mod BAG{X :: TRIV} is sorts X$Elt Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration Bag{X} . subsort Attribute < AttributeSet . subsort Bag{X} < Cid . subsorts Object Msg Portal < Configuration . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op replace : Oid X$Elt -> Msg [ctor msg] . op Bag{X} : -> Bag{X} [ctor] . op contents :_ : X$Elt -> Attribute [ctor prec 15 gather (&)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm view Bag{Y :: TRIV} from CONTAINER to BAG{Y} is class Container to Bag{Y} . attr guts to contents . sort Elt to Y$Elt . vars R S : Oid . var D : Elt . msg insert (R, S, D) to term replace (R, D) . endv view Bag{Y :: TRIV} from CONTAINER to BAG{Y} is sort Elt to Y$Elt . sort Container to Bag{Y} . op Container : -> [Cid,Container] to Bag{Y} . op guts :_ : [Elt] -> [Attribute,AttributeSet] to contents :_ . var R : Oid . var S : Oid . var D : Elt . op insert(R, S, D) to term replace(R, D) . endv op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. mod TEST{Y :: TRIV} is sorts Y$Elt Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration Bag{Y} Zero NzNat Nat String Char FindResult Qid . subsort Attribute < AttributeSet . subsort Qid < Oid . subsort Bag{Y} < Cid . subsorts Object Msg Portal < Configuration . subsorts Zero NzNat < Nat . subsort Char < String . subsort Nat < FindResult . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op replace : Oid Y$Elt -> Msg [ctor msg] . op Bag{Y} : -> Bag{Y} [ctor] . op contents :_ : Y$Elt -> Attribute [ctor prec 15 gather (&)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [FindResult] [FindResult] [FindResult] -> [FindResult] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op : -> Char [special ( id-hook StringSymbol)] . op : -> String [special ( id-hook StringSymbol)] . op notFound : -> FindResult [ctor] . op ascii : Char -> Nat [special ( id-hook StringOpSymbol (ascii) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op char : [FindResult] -> [String] [special ( id-hook StringOpSymbol (char) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : String String -> String [prec 33 gather (E e) special ( id-hook StringOpSymbol (+) op-hook stringSymbol ( : ~> Char))] . op length : String -> Nat [special ( id-hook StringOpSymbol (length) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op substr : String Nat Nat -> String [special ( id-hook StringOpSymbol (substr) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op find : String String Nat -> FindResult [special ( id-hook StringOpSymbol (find) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook notFoundTerm (notFound))] . op rfind : String String Nat -> FindResult [special ( id-hook StringOpSymbol (rfind) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook notFoundTerm (notFound))] . op _<_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (<) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (<=) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (>) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (>=) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op upperCase : String -> String [special ( id-hook StringOpSymbol (upperCase) op-hook stringSymbol ( : ~> Char))] . op lowerCase : String -> String [special ( id-hook StringOpSymbol (lowerCase) op-hook stringSymbol ( : ~> Char))] . op : -> Qid [special ( id-hook QuotedIdentifierSymbol)] . op string : Qid -> String [special ( id-hook QuotedIdentifierOpSymbol (string) op-hook quotedIdentifierSymbol ( : ~> Qid) op-hook stringSymbol ( : ~> Char))] . op qid : [String] -> [Oid] [special ( id-hook QuotedIdentifierOpSymbol (qid) op-hook quotedIdentifierSymbol ( : ~> Qid) op-hook stringSymbol ( : ~> Char))] . op init : Y$Elt -> Configuration . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . eq init(X:Y$Elt) = < 'a : Bag{Y} | contents : X:Y$Elt > . rl replace(R:Oid, D:Y$Elt) < R:Oid : V:Bag{Y} | Atts:AttributeSet, contents : A:[Y$Elt] > => < R:Oid : V:Bag{Y} | Atts:AttributeSet, contents : D:Y$Elt > . endm op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. ========================================== reduce in TEST : init(42) . rewrites: 1 result Object: < 'a : Bag{Nat} | contents : 42 > ========================================== rewrite in TEST : init(42) replace('a, 13) . rewrites: 2 result Object: < 'a : Bag{Nat} | contents : 13 > Bye. Maude-Maude3.5.1/tests/ObjectOriented/parameterization0000775000175000017510000000037415036121435022432 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parameterization.maude -no-banner -no-advise \ > parameterization.out 2>&1 diff $srcdir/parameterization.expected parameterization.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/oo-peg-game2.maude0000664000175000017510000002601615036121435022323 0ustar nileshnileshset show timing off . set verbose on . *** supplied by Francisco Duran ---- ---- The *senku* is a solitaire game in which, starting from a board in which all ---- the positions on the board except one are occupied with pieces, pieces are ---- eliminated until only one piece is left. To do this, the pieces jump over each ---- other. When a piece jumps over another, it "eats" the one it jumps over, being ---- retired from the board. Therefore, the only valid move is to jump over an ---- adjacent tile to an empty position on the other side of it *in a straight line*, ---- removing the tile you jumped over. If we reach a configuration in which we have ---- two or more tiles left that cannot eat each other, we will have lost. ---- ---- You can find more information about the game in its Wikipedia entry ---- (https://es.wikipedia.org/wiki/Senku). We can solve the game for different board. ---- ---- a 4x4 board uses positions (1, 1) ... (4, 4) omod PEG-GAME is pr NAT . ---- Position in a Senku board class Pos | x : Nat, y : Nat, busy : Bool . op o : Nat Nat -> Oid . var O O1 O2 O3 : Oid . var Conf : Configuration . vars N M : Nat . ---- counts the number of pegs in a board (configuration) op count : Configuration -> Nat . eq count(< O : Pos | busy : true > Conf) = s count(Conf) . eq count(Conf) = 0 [owise] . ---- creates a rectangular board of given dimensions (NxM) ops board boardAux : Nat Nat -> Configuration . eq board(0, M) = none . eq board(s N, M) = boardAux(s N, M) board(N, M) . eq boardAux(N, s M) = < o(N, s M) : Pos | x : N, y : s M, busy : true > boardAux(N, M) . eq boardAux(N, 0) = none . ---- removes a peg from a board op remove : Configuration Nat Nat -> [Configuration] . ---- removes that peg in the board eq remove(< O : Pos | x : N, y : M, busy : true > Conf, N, M) = < O : Pos | x : N, y : M, busy : false > Conf . ---- removes a position from a board op cancel : Configuration Nat Nat -> [Configuration] . ---- cancels that position in the board eq cancel(< O : Pos | x : N, y : M, busy : true > Conf, N, M) = Conf . ---- 4x4 ops 4x4-1 4x4-2 4x4-3 : -> Configuration . eq 4x4-1 = remove(board(4, 4), 4, 4) . eq 4x4-2 = remove(board(4, 4), 3, 4) . eq 4x4-3 = remove(board(4, 4), 3, 3) . ---- 5x5 op 5x5 : -> Configuration . eq 5x5 = remove(board(5, 5), 3, 3) . ---- French (European) style 37 holes ---- # # o o o # # ---- # o o o o o # ---- o o o o o o o ---- o o o x o o o ---- o o o o o o o ---- # o o o o o # ---- # # o o o # # op french : -> Configuration . eq french = remove(remove(remove(remove( remove(remove( remove(remove( remove(remove(remove(remove( board(7, 7), 1, 1), 1, 2), 1, 6), 1, 7), 2, 1), 2, 7), 6, 1), 6, 7), 7, 1), 7, 2), 7, 6), 7, 7) . ---- English style (standard) 33 holes ---- # # o o o # # ---- # # o o o # # ---- o o o o o o o ---- o o o x o o o ---- o o o o o o o ---- # # o o o # # ---- # # o o o # # op english : -> Configuration . eq english = remove(remove(remove(remove( remove(remove(remove(remove( remove(remove(remove(remove( remove(remove(remove(remove( board(7, 7), 1, 1), 1, 2), 1, 6), 1, 7), 2, 1), 2, 2), 2, 6), 2, 7), 6, 1), 6, 2), 6, 6), 6, 7), 7, 1), 7, 2), 7, 6), 7, 7) . rl [right] : < O1 : Pos | x : N, y : M, busy : true > < O2 : Pos | x : N, y : s M, busy : true > < O3 : Pos | x : N, y : s s M, busy : false > => < O1 : Pos | x : N, y : M, busy : false > < O2 : Pos | x : N, y : s M, busy : false > < O3 : Pos | x : N, y : s s M, busy : true > . rl [left] : < O1 : Pos | x : N, y : M, busy : false > < O2 : Pos | x : N, y : s M, busy : true > < O3 : Pos | x : N, y : s s M, busy : true > => < O1 : Pos | x : N, y : M, busy : true > < O2 : Pos | x : N, y : s M, busy : false > < O3 : Pos | x : N, y : s s M, busy : false > . rl [down] : < O1 : Pos | x : N, y : M, busy : true > < O2 : Pos | x : s N, y : M, busy : true > < O3 : Pos | x : s s N, y : M, busy : false > => < O1 : Pos | x : N, y : M, busy : false > < O2 : Pos | x : s N, y : M, busy : false > < O3 : Pos | x : s s N, y : M, busy : true > . rl [up] : < O1 : Pos | x : N, y : M, busy : false > < O2 : Pos | x : s N, y : M, busy : true > < O3 : Pos | x : s s N, y : M, busy : true > => < O1 : Pos | x : N, y : M, busy : true > < O2 : Pos | x : s N, y : M, busy : false > < O3 : Pos | x : s s N, y : M, busy : false > . endom ---- In a triangular game, there can be additional moves. ---- In a triangule like ---- o ---- o o ---- o o o ---- o o o o ---- o o o o o ---- there can be moves on the lines ---- o ---- o \ ---- \ o \ ---- o \ o \ ---- o o \ o o ---- and ---- o ---- / o ---- / o / ---- / o / o ---- o o / o o, ---- but they can also be moved horizontally ---- o ---- o o ---- - - - ---- o o o o ---- - - - o o. ---- If we rotate (to the left) these boards we get ---- o - - - o ---- o o o o ---- - - - ---- o o ---- o, ---- o o | o o ---- | o | o ---- | o | ---- | o ---- o, and ---- o o / o o ---- o / o / ---- / o / ---- o / ---- o ---- This means that, if we assume the rotated boards, we can represent triangular boards on regular ones, using their same moves plus the new ones omod TRIANGULAR-PEG-GAME is inc PEG-GAME . class TPos . subclass TPos < Pos . var O O1 O2 O3 : Oid . var Conf : Configuration . vars N M : Nat . rl [leftdown] : < O1 : TPos | x : N, y : s s M, busy : true > < O2 : TPos | x : s N, y : s M, busy : true > < O3 : TPos | x : s s N, y : M, busy : false > => < O1 : TPos | x : N, y : s s M, busy : false > < O2 : TPos | x : s N, y : s M, busy : false > < O3 : TPos | x : s s N, y : M, busy : true > . rl [rightup] : < O1 : TPos | x : N, y : s s M, busy : false > < O2 : TPos | x : s N, y : s M, busy : true > < O3 : TPos | x : s s N, y : M, busy : true > => < O1 : TPos | x : N, y : s s M, busy : true > < O2 : TPos | x : s N, y : s M, busy : false > < O3 : TPos | x : s s N, y : M, busy : false > . ---- triang4 ---- x o o o ---- o o o # ---- o o # # ---- o # # # op triang4-1 : -> Configuration . eq triang4-1 = < o(1, 1) : TPos | x : 1, y : 1, busy : false > < o(1, 2) : TPos | x : 1, y : 2, busy : true > < o(1, 3) : TPos | x : 1, y : 3, busy : true > < o(1, 4) : TPos | x : 1, y : 4, busy : true > < o(2, 1) : TPos | x : 2, y : 1, busy : true > < o(2, 2) : TPos | x : 2, y : 2, busy : true > < o(2, 3) : TPos | x : 2, y : 3, busy : true > < o(3, 1) : TPos | x : 3, y : 1, busy : true > < o(3, 2) : TPos | x : 3, y : 2, busy : true > < o(4, 1) : TPos | x : 4, y : 1, busy : true > . ---- triang5 ops triang5-1 triang5-2 triang5-3 triang5-4 : -> Configuration . ---- x o o o o, ---- o o o o #, ---- o o o # #, ---- o o # # #, ---- o # # # # . eq triang5-1 = < o(1, 1) : TPos | x : 1, y : 1, busy : false > < o(1, 2) : TPos | x : 1, y : 2, busy : true > < o(1, 3) : TPos | x : 1, y : 3, busy : true > < o(1, 4) : TPos | x : 1, y : 4, busy : true > < o(1, 5) : TPos | x : 1, y : 5, busy : true > < o(2, 1) : TPos | x : 2, y : 1, busy : true > < o(2, 2) : TPos | x : 2, y : 2, busy : true > < o(2, 3) : TPos | x : 2, y : 3, busy : true > < o(2, 4) : TPos | x : 2, y : 4, busy : true > < o(3, 1) : TPos | x : 3, y : 1, busy : true > < o(3, 2) : TPos | x : 3, y : 2, busy : true > < o(3, 3) : TPos | x : 3, y : 3, busy : true > < o(4, 1) : TPos | x : 4, y : 1, busy : true > < o(4, 2) : TPos | x : 4, y : 2, busy : true > < o(5, 1) : TPos | x : 5, y : 1, busy : true > . ---- o o o o o, ---- x o o o #, ---- o o o # #, ---- o o # # #, ---- o # # # # . eq triang5-2 = < o(1, 1) : TPos | x : 1, y : 1, busy : true > < o(1, 2) : TPos | x : 1, y : 2, busy : true > < o(1, 3) : TPos | x : 1, y : 3, busy : true > < o(1, 4) : TPos | x : 1, y : 4, busy : true > < o(1, 5) : TPos | x : 1, y : 5, busy : true > < o(2, 1) : TPos | x : 2, y : 1, busy : false > < o(2, 2) : TPos | x : 2, y : 2, busy : true > < o(2, 3) : TPos | x : 2, y : 3, busy : true > < o(2, 4) : TPos | x : 2, y : 4, busy : true > < o(3, 1) : TPos | x : 3, y : 1, busy : true > < o(3, 2) : TPos | x : 3, y : 2, busy : true > < o(3, 3) : TPos | x : 3, y : 3, busy : true > < o(4, 1) : TPos | x : 4, y : 1, busy : true > < o(4, 2) : TPos | x : 4, y : 2, busy : true > < o(5, 1) : TPos | x : 5, y : 1, busy : true > . ---- o o o o o, ---- o o o o #, ---- x o o # #, ---- o o # # #, ---- o # # # # . eq triang5-3 = < o(1, 1) : TPos | x : 1, y : 1, busy : true > < o(1, 2) : TPos | x : 1, y : 2, busy : true > < o(1, 3) : TPos | x : 1, y : 3, busy : true > < o(1, 4) : TPos | x : 1, y : 4, busy : true > < o(1, 5) : TPos | x : 1, y : 5, busy : true > < o(2, 1) : TPos | x : 2, y : 1, busy : true > < o(2, 2) : TPos | x : 2, y : 2, busy : true > < o(2, 3) : TPos | x : 2, y : 3, busy : true > < o(2, 4) : TPos | x : 2, y : 4, busy : true > < o(3, 1) : TPos | x : 3, y : 1, busy : false > < o(3, 2) : TPos | x : 3, y : 2, busy : true > < o(3, 3) : TPos | x : 3, y : 3, busy : true > < o(4, 1) : TPos | x : 4, y : 1, busy : true > < o(4, 2) : TPos | x : 4, y : 2, busy : true > < o(5, 1) : TPos | x : 5, y : 1, busy : true > . ---- o o o o o, ---- o x o o #, ---- o o o # #, ---- o o # # #, ---- o # # # # . eq triang5-4 = < o(1, 1) : TPos | x : 1, y : 1, busy : false > < o(1, 2) : TPos | x : 1, y : 2, busy : true > < o(1, 3) : TPos | x : 1, y : 3, busy : true > < o(1, 4) : TPos | x : 1, y : 4, busy : true > < o(1, 5) : TPos | x : 1, y : 5, busy : true > < o(2, 1) : TPos | x : 2, y : 1, busy : true > < o(2, 2) : TPos | x : 2, y : 2, busy : false > < o(2, 3) : TPos | x : 2, y : 3, busy : true > < o(2, 4) : TPos | x : 2, y : 4, busy : true > < o(3, 1) : TPos | x : 3, y : 1, busy : true > < o(3, 2) : TPos | x : 3, y : 2, busy : true > < o(3, 3) : TPos | x : 3, y : 3, busy : true > < o(4, 1) : TPos | x : 4, y : 1, busy : true > < o(4, 2) : TPos | x : 4, y : 2, busy : true > < o(5, 1) : TPos | x : 5, y : 1, busy : true > . vars I I' J J' : Nat . op noAislada : Configuration -> Bool . ceq noAislada( < o(I, J) : Pos | x : I, y : J, busy : true > < o(I', J') : Pos | x : I', y : J', busy : true > Conf) = true if I == I' + 1 or I' == I + 1 or J == J' + 1 or J' == J + 1 . eq noAislada(Conf) = false [owise] . endom search 4x4-2 =>! Conf such that count(Conf) = 1 . srewrite 4x4-2 using one((match S:Configuration s.t. noAislada(S:Configuration) ; all) * ; match S:Configuration s.t. count(S:Configuration) == 1) . dsrewrite [10] 4x4-2 using (match S:Configuration s.t. noAislada(S:Configuration) ; all) * . Maude-Maude3.5.1/tests/ObjectOriented/oo-peg-game2.expected0000664000175000017510000004241415036121435023031 0ustar nileshnileshConsidering object completion on: eq count(< O : Pos | busy : true > Conf) = s count(Conf) . Transformed equation: eq count(< O : V:Pos | busy : true, Atts:AttributeSet > Conf) = s count(Conf) . Considering object completion on: eq remove(< O : Pos | x : N, y : M, busy : true > Conf, N, M) = < O : Pos | x : N, y : M, busy : false > Conf . Transformed equation: eq remove(< O : V:Pos | x : N, y : M, busy : true, Atts:AttributeSet > Conf, N, M) = < O : V:Pos | x : N, y : M, busy : false, Atts:AttributeSet > Conf . Considering object completion on: eq cancel(< O : Pos | x : N, y : M, busy : true > Conf, N, M) = Conf . Transformed equation: eq cancel(< O : V:Pos | x : N, y : M, busy : true, Atts:AttributeSet > Conf, N, M) = Conf . Considering object completion on: rl [right] : < O1 : Pos | x : N, y : M, busy : true > < O2 : Pos | x : N, y : s M, busy : true > < O3 : Pos | x : N, y : s s M, busy : false > => < O1 : Pos | x : N, y : M, busy : false > < O2 : Pos | x : N, y : s M, busy : false > < O3 : Pos | x : N, y : s s M, busy : true > . Transformed rule: rl [right] : < O1 : V:Pos | x : N, y : M, busy : true, Atts:AttributeSet > < O2 : V2:Pos | x : N, y : s M, busy : true, Atts2:AttributeSet > < O3 : V3:Pos | x : N, y : s s M, busy : false, Atts3:AttributeSet > => < O1 : V:Pos | x : N, y : M, busy : false, Atts:AttributeSet > < O2 : V2:Pos | x : N, y : s M, busy : false, Atts2:AttributeSet > < O3 : V3:Pos | x : N, y : s s M, busy : true, Atts3:AttributeSet > . Considering object completion on: rl [left] : < O1 : Pos | x : N, y : M, busy : false > < O2 : Pos | x : N, y : s M, busy : true > < O3 : Pos | x : N, y : s s M, busy : true > => < O1 : Pos | x : N, y : M, busy : true > < O2 : Pos | x : N, y : s M, busy : false > < O3 : Pos | x : N, y : s s M, busy : false > . Transformed rule: rl [left] : < O1 : V:Pos | x : N, y : M, busy : false, Atts:AttributeSet > < O2 : V2:Pos | x : N, y : s M, busy : true, Atts2:AttributeSet > < O3 : V3:Pos | x : N, y : s s M, busy : true, Atts3:AttributeSet > => < O1 : V:Pos | x : N, y : M, busy : true, Atts:AttributeSet > < O2 : V2:Pos | x : N, y : s M, busy : false, Atts2:AttributeSet > < O3 : V3:Pos | x : N, y : s s M, busy : false, Atts3:AttributeSet > . Considering object completion on: rl [down] : < O1 : Pos | x : N, y : M, busy : true > < O2 : Pos | x : s N, y : M, busy : true > < O3 : Pos | x : s s N, y : M, busy : false > => < O1 : Pos | x : N, y : M, busy : false > < O2 : Pos | x : s N, y : M, busy : false > < O3 : Pos | x : s s N, y : M, busy : true > . Transformed rule: rl [down] : < O1 : V:Pos | x : N, y : M, busy : true, Atts:AttributeSet > < O2 : V2:Pos | x : s N, y : M, busy : true, Atts2:AttributeSet > < O3 : V3:Pos | x : s s N, y : M, busy : false, Atts3:AttributeSet > => < O1 : V:Pos | x : N, y : M, busy : false, Atts:AttributeSet > < O2 : V2:Pos | x : s N, y : M, busy : false, Atts2:AttributeSet > < O3 : V3:Pos | x : s s N, y : M, busy : true, Atts3:AttributeSet > . Considering object completion on: rl [up] : < O1 : Pos | x : N, y : M, busy : false > < O2 : Pos | x : s N, y : M, busy : true > < O3 : Pos | x : s s N, y : M, busy : true > => < O1 : Pos | x : N, y : M, busy : true > < O2 : Pos | x : s N, y : M, busy : false > < O3 : Pos | x : s s N, y : M, busy : false > . Transformed rule: rl [up] : < O1 : V:Pos | x : N, y : M, busy : false, Atts:AttributeSet > < O2 : V2:Pos | x : s N, y : M, busy : true, Atts2:AttributeSet > < O3 : V3:Pos | x : s s N, y : M, busy : true, Atts3:AttributeSet > => < O1 : V:Pos | x : N, y : M, busy : true, Atts:AttributeSet > < O2 : V2:Pos | x : s N, y : M, busy : false, Atts2:AttributeSet > < O3 : V3:Pos | x : s s N, y : M, busy : false, Atts3:AttributeSet > . Considering object completion on: rl [leftdown] : < O1 : TPos | x : N, y : s s M, busy : true > < O2 : TPos | x : s N, y : s M, busy : true > < O3 : TPos | x : s s N, y : M, busy : false > => < O1 : TPos | x : N, y : s s M, busy : false > < O2 : TPos | x : s N, y : s M, busy : false > < O3 : TPos | x : s s N, y : M, busy : true > . Transformed rule: rl [leftdown] : < O1 : V:TPos | x : N, y : s s M, busy : true, Atts:AttributeSet > < O2 : V2:TPos | x : s N, y : s M, busy : true, Atts2:AttributeSet > < O3 : V3:TPos | x : s s N, y : M, busy : false, Atts3:AttributeSet > => < O1 : V:TPos | x : N, y : s s M, busy : false, Atts:AttributeSet > < O2 : V2:TPos | x : s N, y : s M, busy : false, Atts2:AttributeSet > < O3 : V3:TPos | x : s s N, y : M, busy : true, Atts3:AttributeSet > . Considering object completion on: rl [rightup] : < O1 : TPos | x : N, y : s s M, busy : false > < O2 : TPos | x : s N, y : s M, busy : true > < O3 : TPos | x : s s N, y : M, busy : true > => < O1 : TPos | x : N, y : s s M, busy : true > < O2 : TPos | x : s N, y : s M, busy : false > < O3 : TPos | x : s s N, y : M, busy : false > . Transformed rule: rl [rightup] : < O1 : V:TPos | x : N, y : s s M, busy : false, Atts:AttributeSet > < O2 : V2:TPos | x : s N, y : s M, busy : true, Atts2:AttributeSet > < O3 : V3:TPos | x : s s N, y : M, busy : true, Atts3:AttributeSet > => < O1 : V:TPos | x : N, y : s s M, busy : true, Atts:AttributeSet > < O2 : V2:TPos | x : s N, y : s M, busy : false, Atts2:AttributeSet > < O3 : V3:TPos | x : s s N, y : M, busy : false, Atts3:AttributeSet > . Considering object completion on: ceq noAislada(< o(I, J) : Pos | x : I, y : J, busy : true > < o(I', J') : Pos | x : I', y : J', busy : true > Conf) = true if I == I' + 1 or I' == I + 1 or J == J' + 1 or J' == J + 1 = true . Transformed equation: ceq noAislada(< o(I, J) : V:Pos | x : I, y : J, busy : true, Atts:AttributeSet > < o(I', J') : V2:Pos | x : I', y : J', busy : true, Atts2:AttributeSet > Conf) = true if I == I' + 1 or I' == I + 1 or J == J' + 1 or J' == J + 1 = true . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. ========================================== search in TRIANGULAR-PEG-GAME : 4x4-2 =>! Conf such that count(Conf) = 1 . Solution 1 (state 1869) states: 1871 rewrites: 6546 Conf --> < o(1, 1) : Pos | x : 1, y : 1, busy : false > < o(1, 2) : Pos | x : 1, y : 2, busy : false > < o(1, 3) : Pos | x : 1, y : 3, busy : false > < o(1, 4) : Pos | x : 1, y : 4, busy : false > < o(2, 1) : Pos | x : 2, y : 1, busy : false > < o(2, 2) : Pos | x : 2, y : 2, busy : false > < o(2, 3) : Pos | x : 2, y : 3, busy : false > < o(2, 4) : Pos | x : 2, y : 4, busy : true > < o(3, 1) : Pos | x : 3, y : 1, busy : false > < o(3, 2) : Pos | x : 3, y : 2, busy : false > < o(3, 3) : Pos | x : 3, y : 3, busy : false > < o(3, 4) : Pos | x : 3, y : 4, busy : false > < o(4, 1) : Pos | x : 4, y : 1, busy : false > < o(4, 2) : Pos | x : 4, y : 2, busy : false > < o(4, 3) : Pos | x : 4, y : 3, busy : false > < o(4, 4) : Pos | x : 4, y : 4, busy : false > Solution 2 (state 1870) states: 1871 rewrites: 6548 Conf --> < o(1, 1) : Pos | x : 1, y : 1, busy : false > < o(1, 2) : Pos | x : 1, y : 2, busy : false > < o(1, 3) : Pos | x : 1, y : 3, busy : false > < o(1, 4) : Pos | x : 1, y : 4, busy : false > < o(2, 1) : Pos | x : 2, y : 1, busy : true > < o(2, 2) : Pos | x : 2, y : 2, busy : false > < o(2, 3) : Pos | x : 2, y : 3, busy : false > < o(2, 4) : Pos | x : 2, y : 4, busy : false > < o(3, 1) : Pos | x : 3, y : 1, busy : false > < o(3, 2) : Pos | x : 3, y : 2, busy : false > < o(3, 3) : Pos | x : 3, y : 3, busy : false > < o(3, 4) : Pos | x : 3, y : 4, busy : false > < o(4, 1) : Pos | x : 4, y : 1, busy : false > < o(4, 2) : Pos | x : 4, y : 2, busy : false > < o(4, 3) : Pos | x : 4, y : 3, busy : false > < o(4, 4) : Pos | x : 4, y : 4, busy : false > No more solutions. states: 1871 rewrites: 6548 ========================================== srewrite in TRIANGULAR-PEG-GAME : 4x4-2 using one((match S:Configuration such that noAislada(S:Configuration) = true ; all)* ; match S:Configuration such that count(S:Configuration) == 1 = true) . Solution 1 rewrites: 78150 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : false > < o(1, 2) : Pos | x : 1, y : 2, busy : false > < o(1, 3) : Pos | x : 1, y : 3, busy : false > < o(1, 4) : Pos | x : 1, y : 4, busy : false > < o(2, 1) : Pos | x : 2, y : 1, busy : false > < o(2, 2) : Pos | x : 2, y : 2, busy : false > < o(2, 3) : Pos | x : 2, y : 3, busy : false > < o(2, 4) : Pos | x : 2, y : 4, busy : true > < o(3, 1) : Pos | x : 3, y : 1, busy : false > < o(3, 2) : Pos | x : 3, y : 2, busy : false > < o(3, 3) : Pos | x : 3, y : 3, busy : false > < o(3, 4) : Pos | x : 3, y : 4, busy : false > < o(4, 1) : Pos | x : 4, y : 1, busy : false > < o(4, 2) : Pos | x : 4, y : 2, busy : false > < o(4, 3) : Pos | x : 4, y : 3, busy : false > < o(4, 4) : Pos | x : 4, y : 4, busy : false > No more solutions. rewrites: 78150 ========================================== dsrewrite [10] in TRIANGULAR-PEG-GAME : 4x4-2 using (match S:Configuration such that noAislada(S:Configuration) = true ; all)* . Solution 1 rewrites: 27 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : true > < o(1, 2) : Pos | x : 1, y : 2, busy : true > < o(1, 3) : Pos | x : 1, y : 3, busy : true > < o(1, 4) : Pos | x : 1, y : 4, busy : true > < o(2, 1) : Pos | x : 2, y : 1, busy : true > < o(2, 2) : Pos | x : 2, y : 2, busy : true > < o( 2, 3) : Pos | x : 2, y : 3, busy : true > < o(2, 4) : Pos | x : 2, y : 4, busy : true > < o(3, 1) : Pos | x : 3, y : 1, busy : true > < o(3, 2) : Pos | x : 3, y : 2, busy : true > < o(3, 3) : Pos | x : 3, y : 3, busy : true > < o(3, 4) : Pos | x : 3, y : 4, busy : false > < o(4, 1) : Pos | x : 4, y : 1, busy : true > < o(4, 2) : Pos | x : 4, y : 2, busy : true > < o(4, 3) : Pos | x : 4, y : 3, busy : true > < o(4, 4) : Pos | x : 4, y : 4, busy : true > Solution 2 rewrites: 49 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : true > < o(1, 2) : Pos | x : 1, y : 2, busy : true > < o(1, 3) : Pos | x : 1, y : 3, busy : true > < o(1, 4) : Pos | x : 1, y : 4, busy : true > < o(2, 1) : Pos | x : 2, y : 1, busy : true > < o(2, 2) : Pos | x : 2, y : 2, busy : true > < o( 2, 3) : Pos | x : 2, y : 3, busy : true > < o(2, 4) : Pos | x : 2, y : 4, busy : true > < o(3, 1) : Pos | x : 3, y : 1, busy : true > < o(3, 2) : Pos | x : 3, y : 2, busy : false > < o(3, 3) : Pos | x : 3, y : 3, busy : false > < o(3, 4) : Pos | x : 3, y : 4, busy : true > < o(4, 1) : Pos | x : 4, y : 1, busy : true > < o(4, 2) : Pos | x : 4, y : 2, busy : true > < o(4, 3) : Pos | x : 4, y : 3, busy : true > < o(4, 4) : Pos | x : 4, y : 4, busy : true > Solution 3 rewrites: 71 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : true > < o(1, 2) : Pos | x : 1, y : 2, busy : false > < o(1, 3) : Pos | x : 1, y : 3, busy : true > < o(1, 4) : Pos | x : 1, y : 4, busy : true > < o(2, 1) : Pos | x : 2, y : 1, busy : true > < o(2, 2) : Pos | x : 2, y : 2, busy : false > < o( 2, 3) : Pos | x : 2, y : 3, busy : true > < o(2, 4) : Pos | x : 2, y : 4, busy : true > < o(3, 1) : Pos | x : 3, y : 1, busy : true > < o(3, 2) : Pos | x : 3, y : 2, busy : true > < o(3, 3) : Pos | x : 3, y : 3, busy : false > < o(3, 4) : Pos | x : 3, y : 4, busy : true > < o(4, 1) : Pos | x : 4, y : 1, busy : true > < o(4, 2) : Pos | x : 4, y : 2, busy : true > < o(4, 3) : Pos | x : 4, y : 3, busy : true > < o(4, 4) : Pos | x : 4, y : 4, busy : true > Solution 4 rewrites: 133 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : true > < o(1, 2) : Pos | x : 1, y : 2, busy : false > < o(1, 3) : Pos | x : 1, y : 3, busy : true > < o(1, 4) : Pos | x : 1, y : 4, busy : true > < o(2, 1) : Pos | x : 2, y : 1, busy : true > < o(2, 2) : Pos | x : 2, y : 2, busy : false > < o( 2, 3) : Pos | x : 2, y : 3, busy : true > < o(2, 4) : Pos | x : 2, y : 4, busy : true > < o(3, 1) : Pos | x : 3, y : 1, busy : false > < o(3, 2) : Pos | x : 3, y : 2, busy : false > < o(3, 3) : Pos | x : 3, y : 3, busy : true > < o(3, 4) : Pos | x : 3, y : 4, busy : true > < o(4, 1) : Pos | x : 4, y : 1, busy : true > < o(4, 2) : Pos | x : 4, y : 2, busy : true > < o( 4, 3) : Pos | x : 4, y : 3, busy : true > < o(4, 4) : Pos | x : 4, y : 4, busy : true > Solution 5 rewrites: 195 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : true > < o(1, 2) : Pos | x : 1, y : 2, busy : true > < o(1, 3) : Pos | x : 1, y : 3, busy : false > < o(1, 4) : Pos | x : 1, y : 4, busy : false > < o(2, 1) : Pos | x : 2, y : 1, busy : true > < o(2, 2) : Pos | x : 2, y : 2, busy : false > < o(2, 3) : Pos | x : 2, y : 3, busy : true > < o(2, 4) : Pos | x : 2, y : 4, busy : true > < o(3, 1) : Pos | x : 3, y : 1, busy : false > < o(3, 2) : Pos | x : 3, y : 2, busy : false > < o(3, 3) : Pos | x : 3, y : 3, busy : true > < o(3, 4) : Pos | x : 3, y : 4, busy : true > < o(4, 1) : Pos | x : 4, y : 1, busy : true > < o(4, 2) : Pos | x : 4, y : 2, busy : true > < o( 4, 3) : Pos | x : 4, y : 3, busy : true > < o(4, 4) : Pos | x : 4, y : 4, busy : true > Solution 6 rewrites: 217 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : false > < o(1, 2) : Pos | x : 1, y : 2, busy : false > < o(1, 3) : Pos | x : 1, y : 3, busy : true > < o(1, 4) : Pos | x : 1, y : 4, busy : false > < o(2, 1) : Pos | x : 2, y : 1, busy : true > < o(2, 2) : Pos | x : 2, y : 2, busy : false > < o( 2, 3) : Pos | x : 2, y : 3, busy : true > < o(2, 4) : Pos | x : 2, y : 4, busy : true > < o(3, 1) : Pos | x : 3, y : 1, busy : false > < o(3, 2) : Pos | x : 3, y : 2, busy : false > < o(3, 3) : Pos | x : 3, y : 3, busy : true > < o(3, 4) : Pos | x : 3, y : 4, busy : true > < o(4, 1) : Pos | x : 4, y : 1, busy : true > < o(4, 2) : Pos | x : 4, y : 2, busy : true > < o( 4, 3) : Pos | x : 4, y : 3, busy : true > < o(4, 4) : Pos | x : 4, y : 4, busy : true > Solution 7 rewrites: 239 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : false > < o(1, 2) : Pos | x : 1, y : 2, busy : false > < o(1, 3) : Pos | x : 1, y : 3, busy : true > < o(1, 4) : Pos | x : 1, y : 4, busy : false > < o(2, 1) : Pos | x : 2, y : 1, busy : true > < o(2, 2) : Pos | x : 2, y : 2, busy : true > < o( 2, 3) : Pos | x : 2, y : 3, busy : false > < o(2, 4) : Pos | x : 2, y : 4, busy : false > < o(3, 1) : Pos | x : 3, y : 1, busy : false > < o(3, 2) : Pos | x : 3, y : 2, busy : false > < o(3, 3) : Pos | x : 3, y : 3, busy : true > < o(3, 4) : Pos | x : 3, y : 4, busy : true > < o(4, 1) : Pos | x : 4, y : 1, busy : true > < o(4, 2) : Pos | x : 4, y : 2, busy : true > < o( 4, 3) : Pos | x : 4, y : 3, busy : true > < o(4, 4) : Pos | x : 4, y : 4, busy : true > Solution 8 rewrites: 261 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : false > < o(1, 2) : Pos | x : 1, y : 2, busy : false > < o(1, 3) : Pos | x : 1, y : 3, busy : true > < o(1, 4) : Pos | x : 1, y : 4, busy : false > < o(2, 1) : Pos | x : 2, y : 1, busy : false > < o(2, 2) : Pos | x : 2, y : 2, busy : false > < o(2, 3) : Pos | x : 2, y : 3, busy : true > < o(2, 4) : Pos | x : 2, y : 4, busy : false > < o(3, 1) : Pos | x : 3, y : 1, busy : false > < o(3, 2) : Pos | x : 3, y : 2, busy : false > < o(3, 3) : Pos | x : 3, y : 3, busy : true > < o(3, 4) : Pos | x : 3, y : 4, busy : true > < o(4, 1) : Pos | x : 4, y : 1, busy : true > < o(4, 2) : Pos | x : 4, y : 2, busy : true > < o( 4, 3) : Pos | x : 4, y : 3, busy : true > < o(4, 4) : Pos | x : 4, y : 4, busy : true > Solution 9 rewrites: 283 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : false > < o(1, 2) : Pos | x : 1, y : 2, busy : false > < o(1, 3) : Pos | x : 1, y : 3, busy : true > < o(1, 4) : Pos | x : 1, y : 4, busy : false > < o(2, 1) : Pos | x : 2, y : 1, busy : false > < o(2, 2) : Pos | x : 2, y : 2, busy : false > < o(2, 3) : Pos | x : 2, y : 3, busy : true > < o(2, 4) : Pos | x : 2, y : 4, busy : false > < o(3, 1) : Pos | x : 3, y : 1, busy : false > < o(3, 2) : Pos | x : 3, y : 2, busy : true > < o(3, 3) : Pos | x : 3, y : 3, busy : false > < o(3, 4) : Pos | x : 3, y : 4, busy : false > < o(4, 1) : Pos | x : 4, y : 1, busy : true > < o(4, 2) : Pos | x : 4, y : 2, busy : true > < o(4, 3) : Pos | x : 4, y : 3, busy : true > < o(4, 4) : Pos | x : 4, y : 4, busy : true > Solution 10 rewrites: 305 result Configuration: < o(1, 1) : Pos | x : 1, y : 1, busy : false > < o(1, 2) : Pos | x : 1, y : 2, busy : false > < o(1, 3) : Pos | x : 1, y : 3, busy : false > < o(1, 4) : Pos | x : 1, y : 4, busy : false > < o(2, 1) : Pos | x : 2, y : 1, busy : false > < o(2, 2) : Pos | x : 2, y : 2, busy : false > < o(2, 3) : Pos | x : 2, y : 3, busy : false > < o(2, 4) : Pos | x : 2, y : 4, busy : false > < o(3, 1) : Pos | x : 3, y : 1, busy : false > < o(3, 2) : Pos | x : 3, y : 2, busy : true > < o(3, 3) : Pos | x : 3, y : 3, busy : true > < o(3, 4) : Pos | x : 3, y : 4, busy : false > < o(4, 1) : Pos | x : 4, y : 1, busy : true > < o(4, 2) : Pos | x : 4, y : 2, busy : true > < o( 4, 3) : Pos | x : 4, y : 3, busy : true > < o(4, 4) : Pos | x : 4, y : 4, busy : true > Bye. Maude-Maude3.5.1/tests/ObjectOriented/oo-peg-game20000775000175000017510000000034115036121435021225 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/oo-peg-game2.maude -no-banner \ > oo-peg-game2.out 2>&1 diff $srcdir/oo-peg-game2.expected oo-peg-game2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/oo-list-3.maude0000664000175000017510000001417115036121435021671 0ustar nileshnileshset show timing off . set show advisories off . set verbose on . *** supplied by Francisco Duran fmod MAYBE{X :: TRIV} is sort Maybe{X} . subsort X$Elt < Maybe{X} . op null : -> Maybe{X} . endfm oth WRAPPER is sort Elt . class Wrapper | contents : Elt . msg to_from_get : Oid Oid -> Msg . msg to_from_answer(_) : Oid Oid Elt -> Msg . vars O1 O2 : Oid . var X : Elt . rl < O1 : Wrapper | contents : X > (to O1 from O2 get) => < O1 : Wrapper | contents : X > (to O2 from O1 answer(X)) . endoth view Oid from TRIV to CONFIGURATION is sort Elt to Oid . endv omod OO-LIST{X :: WRAPPER} is protecting INT . including MAYBE{Oid} . including COUNTER . class List{X} | first : Maybe{Oid}, last : Maybe{Oid}, size : Nat . class Node{X} | next : Maybe{Oid}, previous : Maybe{Oid}, value : Oid . op o : Oid Nat -> Oid . msg _add_at_ : Oid Oid Nat -> Msg . msg _get at_from_ : Oid Nat Oid -> Msg . msg _add'_at_ : Oid Oid Nat -> Msg . msg _in_get at_ : Oid Oid Nat -> Msg . msg _in_get at_from_ : Oid Oid Nat Oid -> Msg . msg to_from_elt at pos_is_ : Oid Oid Nat X$Elt -> Msg . op add-blocked : Object -> Object . op get-blocked : Object Nat Oid -> Object . vars O O' O'' O''' F L : Oid . vars N S P : Nat . var X : X$Elt . rl [add] : *** adds on an empty stack < O : List{X} | first : null > O add O' at 0 => aux1( < O : List{X} | first : null >, O add O' at 0, counter) . op aux1 : Configuration Msg Nat -> Configuration . eq aux1(< O : List{X} | first : null >, O add O' at 0, N) = < O : List{X} | first : o(O, N), last : o(O, N), size : 1 > < o(O, N) : Node{X} | next : null, previous : null, value : O' > . rl [add] : *** adds at the begining of the list < O : List{X} | first : F, size : S > < F : Node{X} | previous : null > O add O' at 0 => aux2( < O : List{X} | first : F, size : S > < F : Node{X} | previous : null >, O add O' at 0, counter) . op aux2 : Configuration Msg Nat -> Configuration . eq aux2(< O : List{X} | first : F, size : S > < F : Node{X} | previous : null >, O add O' at 0, N) = < O : List{X} | first : o(O, N), size : s S > < F : Node{X} | previous : o(O, N) > < o(O, N) : Node{X} | next : F, previous : null, value : O' > . rl [add] : *** adds at the end of the list < O : List{X} | last : L, size : S > < L : Node{X} | next : null > O add O' at S => aux3( < O : List{X} | last : L, size : S > < L : Node{X} | next : null >, O add O' at S, counter) . op aux3 : Configuration Msg Nat -> Configuration . eq aux3( < O : List{X} | last : L, size : S > < L : Node{X} | next : null >, O add O' at S, N) = < O : List{X} | last : o(O, N), size : s S > < L : Node{X} | next : o(O, N) > < o(O, N) : Node{X} | next : null, previous : L, value : O' > . crl [add] : *** adds at intermediate position of the list < O : List{X} | first : F, size : S > O add O' at s P => add-blocked(< O : List{X} | >) F add' O' at P if s P < S . rl [add] : *** recursively look for the place to add the element < O : Node{X} | next : O' > < O' : Node{X} | previous : O > (O add' O'' at P) add-blocked(< L : List{X} | size : S >) => aux4( < O : Node{X} | next : O' > < O' : Node{X} | previous : O >, (O add' O'' at P) add-blocked(< L : List{X} | size : S >), counter) . op aux4 : Configuration Msg Nat -> Configuration . eq aux4( < O : Node{X} | next : O' > < O' : Node{X} | previous : O >, (O add' O'' at P) add-blocked(< L : List{X} | size : S >), N) = if P == 0 then < O : Node{X} | next : o(O, N) > < O' : Node{X} | previous : o(O, N) > < o(O, N) : Node{X} | previous : O, next : O', value : O'' > < L : List{X} | size : s S > else < O : Node{X} | > < O' : Node{X} | > (O' add' O'' at P - 1) add-blocked(< L : List{X} | size : S >) fi . crl [get] : < O : List{X} | first : F, size : S > O get at P from O' => get-blocked(< O : List{X} | >, P, O') F in O get at P if s P < S . crl [get] : < O : List{X} | last : L, size : s S > < L : Node{X} | value : O' > (O get at P from O'') => get-blocked(< O : List{X} | >, P, O'') < L : Node{X} | > (to O' from O get) if S = P . rl [get] : < O : Node{X} | next : O', value : O'' > O in O''' get at P => < O : Node{X} | > if P == 0 then to O'' from O''' get else O' in O''' get at P - 1 fi . rl [get] : get-blocked(< O : List{X} | >, P, O') to O from O'' answer(X) => < O : List{X} | > to O' from O elt at pos P is X . op create-list : Oid -> Object . op l : -> Oid . eq create-list(O) = < O : List{X} | first : null, last : null, size : 0 > . endom omod NAT-WRAPPER is pr NAT . class NatWrapper | value : Nat . op w : Nat -> Oid . msg to_get from_ : Oid Oid -> Msg . msg to_answer_from_ : Oid Nat Oid -> Msg . vars O1 O2 : Oid . var N : Nat . rl < O1 : NatWrapper | value : N > (to O1 get from O2) => < O1 : NatWrapper | > (to O2 answer N from O1) . endom view NatW from WRAPPER to NAT-WRAPPER is sort Elt to Nat . class Wrapper to NatWrapper . attr contents to value . vars O O' : Oid . var X : Elt . msg to O from O' get to term to O get from O' . msg to O from O' answer(X) to term to O answer X from O' . endv omod NAT-LIST is including OO-LIST{NatW} . op l : -> Oid . endom rew create-list(l) < w(0) : NatWrapper | value : 0 > < w(1) : NatWrapper | value : 1 > < w(2) : NatWrapper | value : 2 > < w(3) : NatWrapper | value : 3 > < w(4) : NatWrapper | value : 4 > (l add w(0) at 0) (l add w(1) at 1) (l add w(2) at 2) (l add w(3) at 3) (l add w(4) at 4) (l get at 3 from l) . Maude-Maude3.5.1/tests/ObjectOriented/oo-list-3.expected0000664000175000017510000002240415036121435022375 0ustar nileshnileshConsidering object completion on: rl < O1 : Wrapper | contents : X > to O1 from O2 get => < O1 : Wrapper | contents : X > to O2 from O1 answer(X) . Transformed rule: rl < O1 : V:Wrapper | contents : X, Atts:AttributeSet > to O1 from O2 get => < O1 : V:Wrapper | contents : X, Atts:AttributeSet > to O2 from O1 answer( X) . Considering object completion on: rl [add] : < O : List{X} | first : null > O add O' at 0 => aux1(< O : List{X} | first : null >, O add O' at 0, counter) . Transformed rule: rl [add] : < O : V:List{X} | first : null, Atts:AttributeSet > O add O' at 0 => aux1(< O : V:List{X} | first : null, Atts:AttributeSet >, O add O' at 0, counter) . Considering object completion on: eq aux1(< O : List{X} | first : null >, O add O' at 0, N) = < O : List{X} | first : o(O, N), last : o(O, N), size : 1 > < o(O, N) : Node{X} | next : null, previous : null, value : O' > . Transformed equation: eq aux1(< O : V:List{X} | first : null, last : A:[Maybe{Oid}], size : A2:[ Int], Atts:AttributeSet >, O add O' at 0, N) = < O : V:List{X} | first : o( O, N), last : o(O, N), size : 1, Atts:AttributeSet > < o(O, N) : Node{X} | next : null, previous : null, value : O' > . Considering object completion on: rl [add] : < O : List{X} | first : F, size : S > < F : Node{X} | previous : null > O add O' at 0 => aux2(< O : List{X} | first : F, size : S > < F : Node{X} | previous : null >, O add O' at 0, counter) . Transformed rule: rl [add] : < O : V:List{X} | first : F, size : S, Atts:AttributeSet > < F : V2:Node{X} | previous : null, Atts2:AttributeSet > O add O' at 0 => aux2(< O : V:List{X} | first : F, size : S, Atts:AttributeSet > < F : V2:Node{X} | previous : null, Atts2:AttributeSet >, O add O' at 0, counter) . Considering object completion on: eq aux2(< O : List{X} | first : F, size : S > < F : Node{X} | previous : null >, O add O' at 0, N) = < O : List{X} | first : o(O, N), size : s S > < F : Node{X} | previous : o(O, N) > < o(O, N) : Node{X} | next : F, previous : null, value : O' > . Transformed equation: eq aux2(< O : V:List{X} | first : F, size : S, Atts:AttributeSet > < F : V2:Node{X} | previous : null, Atts2:AttributeSet >, O add O' at 0, N) = < O : V:List{X} | first : o(O, N), size : s S, Atts:AttributeSet > < F : V2:Node{X} | previous : o(O, N), Atts2:AttributeSet > < o(O, N) : Node{X} | next : F, previous : null, value : O' > . Considering object completion on: rl [add] : < O : List{X} | last : L, size : S > < L : Node{X} | next : null > O add O' at S => aux3(< O : List{X} | last : L, size : S > < L : Node{X} | next : null >, O add O' at S, counter) . Transformed rule: rl [add] : < O : V2:List{X} | last : L, size : S, Atts2:AttributeSet > < L : V:Node{X} | next : null, Atts:AttributeSet > O add O' at S => aux3(< O : V2:List{X} | last : L, size : S, Atts2:AttributeSet > < L : V:Node{X} | next : null, Atts:AttributeSet >, O add O' at S, counter) . Considering object completion on: eq aux3(< O : List{X} | last : L, size : S > < L : Node{X} | next : null >, O add O' at S, N) = < O : List{X} | last : o(O, N), size : s S > < L : Node{ X} | next : o(O, N) > < o(O, N) : Node{X} | next : null, previous : L, value : O' > . Transformed equation: eq aux3(< O : V2:List{X} | last : L, size : S, Atts2:AttributeSet > < L : V:Node{X} | next : null, Atts:AttributeSet >, O add O' at S, N) = < O : V2:List{X} | last : o(O, N), size : s S, Atts2:AttributeSet > < L : V:Node{ X} | next : o(O, N), Atts:AttributeSet > < o(O, N) : Node{X} | next : null, previous : L, value : O' > . Considering object completion on: crl [add] : < O : List{X} | first : F, size : S > O add O' at s P => add-blocked(< O : List{X} | none >) F add' O' at P if s P < S = true . Transformed rule: crl [add] : < O : V:List{X} | first : F, size : S, Atts:AttributeSet > O add O' at s P => add-blocked(< O : V:List{X} | first : F, size : S, Atts:AttributeSet >) F add' O' at P if s P < S = true . Considering object completion on: rl [add] : < O : Node{X} | next : O' > < O' : Node{X} | previous : O > (O add' O'' at P) add-blocked(< L : List{X} | size : S >) => aux4(< O : Node{ X} | next : O' > < O' : Node{X} | previous : O >, (O add' O'' at P) add-blocked(< L : List{X} | size : S >), counter) . Transformed rule: rl [add] : < O : V2:Node{X} | next : O', Atts2:AttributeSet > < O' : V3:Node{ X} | previous : O, Atts3:AttributeSet > (O add' O'' at P) add-blocked(< L : V:List{X} | size : S, Atts:AttributeSet >) => aux4(< O : V2:Node{X} | next : O', Atts2:AttributeSet > < O' : V3:Node{X} | previous : O, Atts3:AttributeSet >, (O add' O'' at P) add-blocked(< L : V:List{X} | size : S, Atts:AttributeSet >), counter) . Considering object completion on: eq aux4(< O : Node{X} | next : O' > < O' : Node{X} | previous : O >, (O add' O'' at P) add-blocked(< L : List{X} | size : S >), N) = if P == 0 then < O : Node{X} | next : o(O, N) > < O' : Node{X} | previous : o(O, N) > < o(O, N) : Node{X} | previous : O, next : O', value : O'' > < L : List{X} | size : s S > else < O : Node{X} | none > < O' : Node{X} | none > (O' add' O'' at P - 1) add-blocked(< L : List{X} | size : S >) fi . Transformed equation: eq aux4(< O : V2:Node{X} | next : O', Atts2:AttributeSet > < O' : V3:Node{X} | previous : O, Atts3:AttributeSet >, (O add' O'' at P) add-blocked(< L : V:List{X} | size : S, Atts:AttributeSet >), N) = if P == 0 then < O : V2:Node{X} | next : o(O, N), Atts2:AttributeSet > < O' : V3:Node{X} | previous : o(O, N), Atts3:AttributeSet > < o(O, N) : Node{X} | previous : O, next : O', value : O'' > < L : V:List{X} | size : s S, Atts:AttributeSet > else < O : V2:Node{X} | next : O', Atts2:AttributeSet > < O' : V3:Node{X} | previous : O, Atts3:AttributeSet > (O' add' O'' at P - 1) add-blocked(< L : V:List{X} | size : S, Atts:AttributeSet >) fi . Considering object completion on: crl [get] : < O : List{X} | first : F, size : S > O get at P from O' => get-blocked(< O : List{X} | none >, P, O') F in O get at P if s P < S = true . Transformed rule: crl [get] : < O : V:List{X} | first : F, size : S, Atts:AttributeSet > O get at P from O' => get-blocked(< O : V:List{X} | first : F, size : S, Atts:AttributeSet >, P, O') F in O get at P if s P < S = true . Considering object completion on: crl [get] : < O : List{X} | last : L, size : s S > < L : Node{X} | value : O' > O get at P from O'' => get-blocked(< O : List{X} | none >, P, O'') < L : Node{X} | none > to O' from O get if S = P . Transformed rule: crl [get] : < O : V2:List{X} | last : L, size : s S, Atts2:AttributeSet > < L : V:Node{X} | value : O', Atts:AttributeSet > O get at P from O'' => get-blocked(< O : V2:List{X} | last : L, size : s S, Atts2:AttributeSet >, P, O'') < L : V:Node{X} | value : O', Atts:AttributeSet > to O' from O get if S = P . Considering object completion on: rl [get] : < O : Node{X} | next : O', value : O'' > O in O''' get at P => < O : Node{X} | none > if P == 0 then to O'' from O''' get else O' in O''' get at P - 1 fi . Transformed rule: rl [get] : < O : V:Node{X} | next : O', value : O'', Atts:AttributeSet > O in O''' get at P => < O : V:Node{X} | next : O', value : O'', Atts:AttributeSet > if P == 0 then to O'' from O''' get else O' in O''' get at P - 1 fi . Considering object completion on: rl [get] : get-blocked(< O : List{X} | none >, P, O') to O from O'' answer(X) => < O : List{X} | none > to O' from O elt at pos P is X . Transformed rule: rl [get] : get-blocked(< O : V:List{X} | Atts:AttributeSet >, P, O') to O from O'' answer(X) => < O : V:List{X} | Atts:AttributeSet > to O' from O elt at pos P is X . Considering object completion on: rl < O1 : NatWrapper | value : N > to O1 get from O2 => < O1 : NatWrapper | none > to O2 answer N from O1 . Transformed rule: rl < O1 : V:NatWrapper | value : N, Atts:AttributeSet > to O1 get from O2 => < O1 : V:NatWrapper | value : N, Atts:AttributeSet > to O2 answer N from O1 . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. ========================================== rewrite in NAT-LIST : create-list(l) ((((((((((l add w(4) at 4) l get at 3 from l) l add w(3) at 3) l add w(2) at 2) l add w(1) at 1) l add w(0) at 0) < w( 4) : NatWrapper | value : 4 >) < w(3) : NatWrapper | value : 3 >) < w(2) : NatWrapper | value : 2 >) < w(1) : NatWrapper | value : 1 >) < w(0) : NatWrapper | value : 0 > . rewrites: 28 result Configuration: < l : List{NatW} | first : o(l, 0), last : o(l, 4), size : 5 > < w(0) : NatWrapper | value : 0 > < w(1) : NatWrapper | value : 1 > < w(2) : NatWrapper | value : 2 > < w(3) : NatWrapper | value : 3 > < w(4) : NatWrapper | value : 4 > < o(l, 0) : Node{NatW} | next : o(l, 1), previous : null, value : w(0) > < o(l, 1) : Node{NatW} | next : o(l, 2), previous : o(l, 0), value : w(1) > < o(l, 2) : Node{NatW} | next : o(l, 3), previous : o(l, 1), value : w(2) > < o(l, 3) : Node{NatW} | next : o(l, 4), previous : o(l, 2), value : w(3) > < o(l, 4) : Node{NatW} | next : null, previous : o( l, 3), value : w(4) > to l from l elt at pos 3 is 3 Bye. Maude-Maude3.5.1/tests/ObjectOriented/oo-list-30000775000175000017510000000034015036121435020573 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/oo-list-3.maude -no-banner -no-advise \ > oo-list-3.out 2>&1 diff $srcdir/oo-list-3.expected oo-list-3.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/oo-list-2.maude0000664000175000017510000002426415036121435021674 0ustar nileshnileshset show timing off . set show advisories off . set verbose on . *** supplied by Francisco Duran fmod MAYBE{X :: TRIV} is sort Maybe{X} . subsort X$Elt < Maybe{X} . op null : -> Maybe{X} . endfm oth WRAPPER is sort Elt . class Wrapper | contents : Elt . msg to_from_get : Oid Oid -> Msg . msg to_from_answer(_) : Oid Oid Elt -> Msg . vars O1 O2 : Oid . var X : Elt . rl < O1 : Wrapper | contents : X > (to O1 from O2 get) => < O1 : Wrapper | contents : X > (to O2 from O1 answer(X)) . endoth view Oid from TRIV to CONFIGURATION is sort Elt to Oid . endv omod LIST{X :: WRAPPER} is including MAYBE{Oid} . protecting INT . class List{X} | first : Maybe{Oid}, last : Maybe{Oid}, size : Nat . class Node{X} | next : Maybe{Oid}, previous : Maybe{Oid}, value : Oid . class Counter | index : Nat . op o : Oid Nat -> Oid . msg _add_at_ : Oid Oid Nat -> Msg . msg _get at_from_ : Oid Nat Oid -> Msg . msg _add'_at_ : Oid Oid Nat -> Msg . msg _in_get at_ : Oid Oid Nat -> Msg . msg _in_get at_from_ : Oid Oid Nat Oid -> Msg . msg to_from_elt at pos_is_ : Oid Oid Nat X$Elt -> Msg . op add-blocked : Object -> Object . op get-blocked : Object Nat Oid -> Object . vars O O' O'' O''' F L : Oid . vars N S P : Nat . var X : X$Elt . rl [add] : *** adds on an empty stack < O : List{X} | size : 0 > (O add O' at 0) < O'' : Counter | index : N > => < O : List{X} | first : o(O, N), last : o(O, N), size : 1 > < o(O, N) : Node{X} | next : null, previous : null, value : O' > < O'' : Counter | index : s N > . rl [add] : *** adds at the begining of the list < O : List{X} | first : F, size : S > < F : Node{X} | previous : null > (O add O' at 0) < O'' : Counter | index : N > => < O : List{X} | first : o(O, N), size : s S > < F : Node{X} | previous : o(O, N) > < o(O, N) : Node{X} | next : F, previous : null, value : O' > < O'' : Counter | index : s N > . rl [add] : *** adds at the end of the list < O : List{X} | last : L, size : S > < L : Node{X} | next : null > (O add O' at S) < O'' : Counter | index : N > => < O : List{X} | last : o(O, N), size : s S > < L : Node{X} | next : o(O, N) > < o(O, N) : Node{X} | next : null, previous : L, value : O' > < O'' : Counter | index : s N > . crl [add] : *** adds at intermediate position of the list < O : List{X} | first : F, size : S > (O add O' at s P) => add-blocked(< O : List{X} | >) (F add' O' at P) if s P < S . rl [add] : *** recursively look for the place to add the element < O : Node{X} | next : O' > < O' : Node{X} | previous : O > (O add' O'' at P) < O''' : Counter | index : N > add-blocked(< L : List{X} | size : S >) => if P == 0 then < O : Node{X} | next : o(O, N) > < O' : Node{X} | previous : o(O, N) > < o(O, N) : Node{X} | previous : O, next : O', value : O'' > < O''' : Counter | index : s N > < L : List{X} | size : s S > else < O : Node{X} | > < O' : Node{X} | > (O' add' O'' at P - 1) < O''' : Counter | index : N > add-blocked(< L : List{X} | size : S >) fi . crl [get] : < O : List{X} | first : F, size : S > (O get at P from O') => get-blocked(< O : List{X} | >, P, O') (F in O get at P) if s P < S . crl [get] : < O : List{X} | last : L, size : s S > < L : Node{X} | value : O' > (O get at P from O'') => get-blocked(< O : List{X} | >, P, O'') < L : Node{X} | > (to O' from O get) if S = P . rl [get] : < O : Node{X} | next : O', value : O'' > (O in O''' get at P) => < O : Node{X} | > if P == 0 then (to O'' from O''' get) else (O' in O''' get at P - 1) fi . rl [get] : get-blocked(< O : List{X} | >, P, O') (to O from O'' answer(X)) => < O : List{X} | > (to O' from O elt at pos P is X) . op create-list : Oid -> Object . op l : -> Oid . eq create-list(O) = < O : List{X} | first : null, last : null, size : 0 > . endom omod NAT-WRAPPER is pr NAT . class NatWrapper | value : Nat . op w : Nat -> Oid . msg to_get from_ : Oid Oid -> Msg . msg to_answer_from_ : Oid Nat Oid -> Msg . vars O1 O2 : Oid . var N : Nat . rl < O1 : NatWrapper | value : N > (to O1 get from O2) => < O1 : NatWrapper | > (to O2 answer N from O1) . endom view NatW from WRAPPER to NAT-WRAPPER is sort Elt to Nat . class Wrapper to NatWrapper . attr contents to value . vars O O' : Oid . var X : Elt . msg to O from O' get to term to O get from O' . msg to O from O' answer(X) to term to O answer X from O' . endv omod NAT-LIST is including LIST{NatW} . ops c l : -> Oid . endom ----- set trace on . rew < c : Counter | index : 0 > create-list(l) < w(0) : NatWrapper | value : 0 > < w(1) : NatWrapper | value : 1 > < w(2) : NatWrapper | value : 2 > < w(3) : NatWrapper | value : 3 > < w(4) : NatWrapper | value : 4 > (l add w(0) at 0) (l add w(1) at 1) (l add w(2) at 2) (l add w(3) at 3) (l add w(4) at 4) (l get at 3 from l) . fth TAOSET is protecting BOOL . sort Elt . op _<_ : Elt Elt -> Bool . vars X Y Z : Elt . ceq X < Z = true if X < Y /\ Y < Z [nonexec label transitive] . ceq X = Y if X < Y /\ Y < X [nonexec label antisymmetric] . endfth oth TAOSET-WRAPPER is including TAOSET . class Wrapper | contents : Elt . msg to_from_get : Oid Oid -> Msg . msg to_from_answer(_) : Oid Oid Elt -> Msg . vars O1 O2 : Oid . var X : Elt . rl < O1 : Wrapper | contents : X > (to O1 from O2 get) => < O1 : Wrapper | contents : X > (to O2 from O1 answer(X)) . endoth view TAOSET-WRAPPER from WRAPPER to TAOSET-WRAPPER is sort Elt to Elt . class Wrapper to Wrapper . endv omod SORTED-LIST{X :: TAOSET-WRAPPER} is including LIST{TAOSET-WRAPPER}{X} . class SortedList{X} | first : Maybe{Oid}, last : Maybe{Oid}, size : Nat . subclass SortedList{X} < List{TAOSET-WRAPPER}{X} . msg _add_ : Oid Oid -> Msg . msg _add'_ : Oid Oid -> Msg . vars F L O O' O'' O''' O4 : Oid . vars V V' V'' : X$Elt . vars N S : Nat . rl [add] : *** adds on an empty stack < O : SortedList{X} | size : 0 > (O add O') => < O : SortedList{X} | > (O add O' at 0) . crl [add] : *** adds at the begining of the list < O : SortedList{X} | first : F, size : S > < F : Node{TAOSET-WRAPPER}{X} | previous : null, value : O' > < O' : X$Wrapper | contents : V > < O'' : X$Wrapper | contents : V' > (O add O'') < O''' : Counter | index : N > => < O : SortedList{X} | first : o(O, N), size : s S > < F : Node{TAOSET-WRAPPER}{X} | previous : o(O, N) > < O' : X$Wrapper | > < O'' : X$Wrapper | > < o(O, N) : Node{TAOSET-WRAPPER}{X} | next : F, previous : null, value : O'' > < O''' : Counter | index : s N > if V' < V . crl [add] : *** adds at the end of the list < O : SortedList{X} | last : L, size : S > < L : Node{TAOSET-WRAPPER}{X} | next : null, value : O' > < O' : X$Wrapper | contents : V > < O'' : X$Wrapper | contents : V' > (O add O'') < O''' : Counter | index : N > => < O : SortedList{X} | last : o(O, N), size : s S > < L : Node{TAOSET-WRAPPER}{X} | next : o(O, N) > < O' : X$Wrapper | > < O'' : X$Wrapper | > < o(O, N) : Node{TAOSET-WRAPPER}{X} | next : null, previous : L, value : O'' > < O''' : Counter | index : s N > if V < V' . crl [add] : *** adds at intermediate position of the list < O : SortedList{X} | first : F, last : L > < F : Node{TAOSET-WRAPPER}{X} | previous : null, value : O' > < O' : X$Wrapper | contents : V > < L : Node{TAOSET-WRAPPER}{X} | next : null, value : O'' > < O'' : X$Wrapper | contents : V' > < O''' : X$Wrapper | contents : V'' > (O add O''') => add-blocked(< O : SortedList{X} | >) < F : Node{TAOSET-WRAPPER}{X} | > < O' : X$Wrapper | > < L : Node{TAOSET-WRAPPER}{X} | > < O'' : X$Wrapper | > < O''' : X$Wrapper | > (F add' O''') if V < V'' /\ V'' < V' . rl [add] : *** recursively look for the place to add the element add-blocked(< L : SortedList{X} | size : S >) < O : Node{TAOSET-WRAPPER}{X} | next : O', value : O'' > < O' : Node{TAOSET-WRAPPER}{X} | previous : O > < O'' : X$Wrapper | contents : V > (O add' O''') < O''' : X$Wrapper | contents : V' > < O4 : Counter | index : N > => if V' < V then < L : SortedList{X} | size : s S > < O : Node{TAOSET-WRAPPER}{X} | next : o(O, N) > < O' : Node{TAOSET-WRAPPER}{X} | previous : o(O, N) > < O'' : X$Wrapper | contents : V > < o(O, N) : Node{TAOSET-WRAPPER}{X} | previous : O, next : O', value : O''' > < O''' : X$Wrapper | contents : V' > < O4 : Counter | index : s N > else add-blocked(< L : SortedList{X} | size : S >) < O : Node{TAOSET-WRAPPER}{X} | > < O' : Node{TAOSET-WRAPPER}{X} | > < O'' : X$Wrapper | > < O''' : X$Wrapper | > (O' add' O''') < O4 : Counter | > fi . op create-sorted-list : Oid -> Object . eq create-sorted-list(O) = < O : SortedList{X} | first : null, last : null, size : 0 > . endom view NatSW from TAOSET-WRAPPER to NAT-WRAPPER is sort Elt to Nat . class Wrapper to NatWrapper . attr contents to value . vars O O' : Oid . var X : Elt . msg to O from O' get to term to O get from O' . msg to O from O' answer(X) to term to O answer X from O' . endv omod SORTED-NAT-LIST is including SORTED-LIST{NatSW} . ops c l : -> Oid . endom rew < c : Counter | index : 0 > create-sorted-list(l) < w(0) : NatWrapper | value : 0 > < w(1) : NatWrapper | value : 1 > < w(2) : NatWrapper | value : 2 > < w(3) : NatWrapper | value : 3 > < w(4) : NatWrapper | value : 4 > (l add w(0)) (l add w(1)) (l add w(2)) (l add w(3)) (l add w(4)) (l get at 3 from l) . Maude-Maude3.5.1/tests/ObjectOriented/oo-list-2.expected0000664000175000017510000004100115036121435022366 0ustar nileshnileshConsidering object completion on: rl < O1 : Wrapper | contents : X > to O1 from O2 get => < O1 : Wrapper | contents : X > to O2 from O1 answer(X) . Transformed rule: rl < O1 : V:Wrapper | contents : X, Atts:AttributeSet > to O1 from O2 get => < O1 : V:Wrapper | contents : X, Atts:AttributeSet > to O2 from O1 answer( X) . Considering object completion on: rl [add] : < O : List{X} | size : 0 > (O add O' at 0) < O'' : Counter | index : N > => < O : List{X} | first : o(O, N), last : o(O, N), size : 1 > < o(O, N) : Node{X} | next : null, previous : null, value : O' > < O'' : Counter | index : s N > . Transformed rule: rl [add] : < O : V:List{X} | first : A:[Maybe{Oid}], last : A2:[Maybe{Oid}], size : 0, Atts:AttributeSet > (O add O' at 0) < O'' : V2:Counter | index : N, Atts2:AttributeSet > => < O : V:List{X} | first : o(O, N), last : o(O, N), size : 1, Atts:AttributeSet > < o(O, N) : Node{X} | next : null, previous : null, value : O' > < O'' : V2:Counter | index : s N, Atts2:AttributeSet > . Considering object completion on: rl [add] : < O : List{X} | first : F, size : S > < F : Node{X} | previous : null > (O add O' at 0) < O'' : Counter | index : N > => < O : List{X} | first : o(O, N), size : s S > < F : Node{X} | previous : o(O, N) > < o(O, N) : Node{X} | next : F, previous : null, value : O' > < O'' : Counter | index : s N > . Transformed rule: rl [add] : < O : V:List{X} | first : F, size : S, Atts:AttributeSet > < F : V2:Node{X} | previous : null, Atts2:AttributeSet > (O add O' at 0) < O'' : V3:Counter | index : N, Atts3:AttributeSet > => < O : V:List{X} | first : o(O, N), size : s S, Atts:AttributeSet > < F : V2:Node{X} | previous : o(O, N), Atts2:AttributeSet > < o(O, N) : Node{X} | next : F, previous : null, value : O' > < O'' : V3:Counter | index : s N, Atts3:AttributeSet > . Considering object completion on: rl [add] : < O : List{X} | last : L, size : S > < L : Node{X} | next : null > (O add O' at S) < O'' : Counter | index : N > => < O : List{X} | last : o( O, N), size : s S > < L : Node{X} | next : o(O, N) > < o(O, N) : Node{X} | next : null, previous : L, value : O' > < O'' : Counter | index : s N > . Transformed rule: rl [add] : < O : V2:List{X} | last : L, size : S, Atts2:AttributeSet > < L : V:Node{X} | next : null, Atts:AttributeSet > (O add O' at S) < O'' : V3:Counter | index : N, Atts3:AttributeSet > => < O : V2:List{X} | last : o(O, N), size : s S, Atts2:AttributeSet > < L : V:Node{X} | next : o(O, N), Atts:AttributeSet > < o(O, N) : Node{X} | next : null, previous : L, value : O' > < O'' : V3:Counter | index : s N, Atts3:AttributeSet > . Considering object completion on: crl [add] : < O : List{X} | first : F, size : S > O add O' at s P => add-blocked(< O : List{X} | none >) F add' O' at P if s P < S = true . Transformed rule: crl [add] : < O : V:List{X} | first : F, size : S, Atts:AttributeSet > O add O' at s P => add-blocked(< O : V:List{X} | first : F, size : S, Atts:AttributeSet >) F add' O' at P if s P < S = true . Considering object completion on: rl [add] : < O : Node{X} | next : O' > < O' : Node{X} | previous : O > (O add' O'' at P) < O''' : Counter | index : N > add-blocked(< L : List{X} | size : S >) => if P == 0 then < O : Node{X} | next : o(O, N) > < O' : Node{ X} | previous : o(O, N) > < o(O, N) : Node{X} | previous : O, next : O', value : O'' > < O''' : Counter | index : s N > < L : List{X} | size : s S > else < O : Node{X} | none > < O' : Node{X} | none > (O' add' O'' at P - 1) < O''' : Counter | index : N > add-blocked(< L : List{X} | size : S >) fi . Transformed rule: rl [add] : < O : V2:Node{X} | next : O', Atts2:AttributeSet > < O' : V3:Node{ X} | previous : O, Atts3:AttributeSet > (O add' O'' at P) < O''' : V4:Counter | index : N, Atts4:AttributeSet > add-blocked(< L : V:List{X} | size : S, Atts:AttributeSet >) => if P == 0 then < O : V2:Node{X} | next : o(O, N), Atts2:AttributeSet > < O' : V3:Node{X} | previous : o(O, N), Atts3:AttributeSet > < o(O, N) : Node{X} | previous : O, next : O', value : O'' > < O''' : V4:Counter | index : s N, Atts4:AttributeSet > < L : V:List{ X} | size : s S, Atts:AttributeSet > else < O : V2:Node{X} | next : O', Atts2:AttributeSet > < O' : V3:Node{X} | previous : O, Atts3:AttributeSet > (O' add' O'' at P - 1) < O''' : V4:Counter | index : N, Atts4:AttributeSet > add-blocked(< L : V:List{X} | size : S, Atts:AttributeSet >) fi . Considering object completion on: crl [get] : < O : List{X} | first : F, size : S > O get at P from O' => get-blocked(< O : List{X} | none >, P, O') F in O get at P if s P < S = true . Transformed rule: crl [get] : < O : V:List{X} | first : F, size : S, Atts:AttributeSet > O get at P from O' => get-blocked(< O : V:List{X} | first : F, size : S, Atts:AttributeSet >, P, O') F in O get at P if s P < S = true . Considering object completion on: crl [get] : < O : List{X} | last : L, size : s S > < L : Node{X} | value : O' > O get at P from O'' => get-blocked(< O : List{X} | none >, P, O'') < L : Node{X} | none > to O' from O get if S = P . Transformed rule: crl [get] : < O : V2:List{X} | last : L, size : s S, Atts2:AttributeSet > < L : V:Node{X} | value : O', Atts:AttributeSet > O get at P from O'' => get-blocked(< O : V2:List{X} | last : L, size : s S, Atts2:AttributeSet >, P, O'') < L : V:Node{X} | value : O', Atts:AttributeSet > to O' from O get if S = P . Considering object completion on: rl [get] : < O : Node{X} | next : O', value : O'' > O in O''' get at P => < O : Node{X} | none > if P == 0 then to O'' from O''' get else O' in O''' get at P - 1 fi . Transformed rule: rl [get] : < O : V:Node{X} | next : O', value : O'', Atts:AttributeSet > O in O''' get at P => < O : V:Node{X} | next : O', value : O'', Atts:AttributeSet > if P == 0 then to O'' from O''' get else O' in O''' get at P - 1 fi . Considering object completion on: rl [get] : get-blocked(< O : List{X} | none >, P, O') to O from O'' answer(X) => < O : List{X} | none > to O' from O elt at pos P is X . Transformed rule: rl [get] : get-blocked(< O : V:List{X} | Atts:AttributeSet >, P, O') to O from O'' answer(X) => < O : V:List{X} | Atts:AttributeSet > to O' from O elt at pos P is X . Considering object completion on: rl < O1 : NatWrapper | value : N > to O1 get from O2 => < O1 : NatWrapper | none > to O2 answer N from O1 . Transformed rule: rl < O1 : V:NatWrapper | value : N, Atts:AttributeSet > to O1 get from O2 => < O1 : V:NatWrapper | value : N, Atts:AttributeSet > to O2 answer N from O1 . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. ========================================== rewrite in NAT-LIST : (create-list(l) ((((((((((l add w(4) at 4) l get at 3 from l) l add w(3) at 3) l add w(2) at 2) l add w(1) at 1) l add w(0) at 0) < w(4) : NatWrapper | value : 4 >) < w(3) : NatWrapper | value : 3 >) < w( 2) : NatWrapper | value : 2 >) < w(1) : NatWrapper | value : 1 >) < w(0) : NatWrapper | value : 0 >) < c : Counter | index : 0 > . rewrites: 18 result Configuration: < l : List{NatW} | first : o(l, 0), last : o(l, 4), size : 5 > < c : Counter | index : 5 > < w(0) : NatWrapper | value : 0 > < w(1) : NatWrapper | value : 1 > < w(2) : NatWrapper | value : 2 > < w(3) : NatWrapper | value : 3 > < w(4) : NatWrapper | value : 4 > < o(l, 0) : Node{NatW} | next : o(l, 1), previous : null, value : w(0) > < o(l, 1) : Node{NatW} | next : o(l, 2), previous : o(l, 0), value : w(1) > < o(l, 2) : Node{NatW} | next : o(l, 3), previous : o(l, 1), value : w(2) > < o(l, 3) : Node{NatW} | next : o(l, 4), previous : o(l, 2), value : w(3) > < o(l, 4) : Node{NatW} | next : null, previous : o(l, 3), value : w(4) > to l from l elt at pos 3 is 3 Considering object completion on: rl < O1 : Wrapper | contents : X > to O1 from O2 get => < O1 : Wrapper | contents : X > to O2 from O1 answer(X) . Transformed rule: rl < O1 : V:Wrapper | contents : X, Atts:AttributeSet > to O1 from O2 get => < O1 : V:Wrapper | contents : X, Atts:AttributeSet > to O2 from O1 answer( X) . Considering object completion on: rl [add] : < O : SortedList{X} | size : 0 > O add O' => < O : SortedList{X} | none > O add O' at 0 . Transformed rule: rl [add] : < O : V:SortedList{X} | size : 0, Atts:AttributeSet > O add O' => < O : V:SortedList{X} | size : 0, Atts:AttributeSet > O add O' at 0 . Considering object completion on: crl [add] : < O : SortedList{X} | first : F, size : S > < F : Node{ TAOSET-WRAPPER}{X} | previous : null, value : O' > < O' : X$Wrapper | contents : V > < O'' : X$Wrapper | contents : V' > (O add O'') < O''' : Counter | index : N > => < O : SortedList{X} | first : o(O, N), size : s S > < F : Node{TAOSET-WRAPPER}{X} | previous : o(O, N) > < O' : X$Wrapper | none > < O'' : X$Wrapper | none > < o(O, N) : Node{TAOSET-WRAPPER}{X} | next : F, previous : null, value : O'' > < O''' : Counter | index : s N > if V' < V = true . Transformed rule: crl [add] : < O : V2:SortedList{X} | first : F, size : S, Atts:AttributeSet > < F : V3:Node{TAOSET-WRAPPER}{X} | previous : null, value : O', Atts2:AttributeSet > < O' : V4:X$Wrapper | contents : V, Atts3:AttributeSet > < O'' : V5:X$Wrapper | contents : V', Atts4:AttributeSet > (O add O'') < O''' : V6:Counter | index : N, Atts5:AttributeSet > => < O : V2:SortedList{ X} | first : o(O, N), size : s S, Atts:AttributeSet > < F : V3:Node{ TAOSET-WRAPPER}{X} | value : O', previous : o(O, N), Atts2:AttributeSet > < O' : V4:X$Wrapper | contents : V, Atts3:AttributeSet > < O'' : V5:X$Wrapper | contents : V', Atts4:AttributeSet > < o(O, N) : Node{TAOSET-WRAPPER}{X} | next : F, previous : null, value : O'' > < O''' : V6:Counter | index : s N, Atts5:AttributeSet > if V' < V = true . Considering object completion on: crl [add] : < O : SortedList{X} | last : L, size : S > < L : Node{ TAOSET-WRAPPER}{X} | next : null, value : O' > < O' : X$Wrapper | contents : V > < O'' : X$Wrapper | contents : V' > (O add O'') < O''' : Counter | index : N > => < O : SortedList{X} | last : o(O, N), size : s S > < L : Node{TAOSET-WRAPPER}{X} | next : o(O, N) > < O' : X$Wrapper | none > < O'' : X$Wrapper | none > < o(O, N) : Node{TAOSET-WRAPPER}{X} | next : null, previous : L, value : O'' > < O''' : Counter | index : s N > if V < V' = true . Transformed rule: crl [add] : < O : V3:SortedList{X} | last : L, size : S, Atts2:AttributeSet > < L : V2:Node{TAOSET-WRAPPER}{X} | next : null, value : O', Atts:AttributeSet > < O' : V4:X$Wrapper | contents : V, Atts3:AttributeSet > < O'' : V5:X$Wrapper | contents : V', Atts4:AttributeSet > (O add O'') < O''' : V6:Counter | index : N, Atts5:AttributeSet > => < O : V3:SortedList{ X} | last : o(O, N), size : s S, Atts2:AttributeSet > < L : V2:Node{ TAOSET-WRAPPER}{X} | value : O', next : o(O, N), Atts:AttributeSet > < O' : V4:X$Wrapper | contents : V, Atts3:AttributeSet > < O'' : V5:X$Wrapper | contents : V', Atts4:AttributeSet > < o(O, N) : Node{TAOSET-WRAPPER}{X} | next : null, previous : L, value : O'' > < O''' : V6:Counter | index : s N, Atts5:AttributeSet > if V < V' = true . Considering object completion on: crl [add] : < O : SortedList{X} | first : F, last : L > < F : Node{ TAOSET-WRAPPER}{X} | previous : null, value : O' > < O' : X$Wrapper | contents : V > < L : Node{TAOSET-WRAPPER}{X} | next : null, value : O'' > < O'' : X$Wrapper | contents : V' > < O''' : X$Wrapper | contents : V'' > O add O''' => add-blocked(< O : SortedList{X} | none >) < F : Node{ TAOSET-WRAPPER}{X} | none > < O' : X$Wrapper | none > < L : Node{ TAOSET-WRAPPER}{X} | none > < O'' : X$Wrapper | none > < O''' : X$Wrapper | none > F add' O''' if V < V'' = true /\ V'' < V' = true . Transformed rule: crl [add] : < O : V3:SortedList{X} | first : F, last : L, Atts2:AttributeSet > < F : V4:Node{TAOSET-WRAPPER}{X} | previous : null, value : O', Atts3:AttributeSet > < O' : V5:X$Wrapper | contents : V, Atts4:AttributeSet > < L : V2:Node{TAOSET-WRAPPER}{X} | next : null, value : O'', Atts:AttributeSet > < O'' : V6:X$Wrapper | contents : V', Atts5:AttributeSet > < O''' : V7:X$Wrapper | contents : V'', Atts6:AttributeSet > O add O''' => add-blocked(< O : V3:SortedList{X} | first : F, last : L, Atts2:AttributeSet >) < F : V4:Node{TAOSET-WRAPPER}{X} | previous : null, value : O', Atts3:AttributeSet > < O' : V5:X$Wrapper | contents : V, Atts4:AttributeSet > < L : V2:Node{TAOSET-WRAPPER}{X} | next : null, value : O'', Atts:AttributeSet > < O'' : V6:X$Wrapper | contents : V', Atts5:AttributeSet > < O''' : V7:X$Wrapper | contents : V'', Atts6:AttributeSet > F add' O''' if V < V'' = true /\ V'' < V' = true . Considering object completion on: rl [add] : add-blocked(< L : SortedList{X} | size : S >) < O : Node{ TAOSET-WRAPPER}{X} | next : O', value : O'' > < O' : Node{TAOSET-WRAPPER}{ X} | previous : O > < O'' : X$Wrapper | contents : V > (O add' O''') < O''' : X$Wrapper | contents : V' > < O4 : Counter | index : N > => if V' < V then < L : SortedList{X} | size : s S > < O : Node{TAOSET-WRAPPER}{X} | next : o(O, N) > < O' : Node{TAOSET-WRAPPER}{X} | previous : o(O, N) > < O'' : X$Wrapper | contents : V > < o(O, N) : Node{TAOSET-WRAPPER}{X} | previous : O, next : O', value : O''' > < O''' : X$Wrapper | contents : V' > < O4 : Counter | index : s N > else add-blocked(< L : SortedList{X} | size : S >) < O : Node{TAOSET-WRAPPER}{X} | none > < O' : Node{ TAOSET-WRAPPER}{X} | none > < O'' : X$Wrapper | none > < O''' : X$Wrapper | none > (O' add' O''') < O4 : Counter | none > fi . Transformed rule: rl [add] : add-blocked(< L : V2:SortedList{X} | size : S, Atts:AttributeSet >) < O : V3:Node{TAOSET-WRAPPER}{X} | next : O', value : O'', Atts2:AttributeSet > < O' : V4:Node{TAOSET-WRAPPER}{X} | previous : O, Atts3:AttributeSet > < O'' : V5:X$Wrapper | contents : V, Atts4:AttributeSet > (O add' O''') < O''' : V6:X$Wrapper | contents : V', Atts5:AttributeSet > < O4 : V7:Counter | index : N, Atts6:AttributeSet > => if V' < V then < L : V2:SortedList{X} | size : s S, Atts:AttributeSet > < O : V3:Node{TAOSET-WRAPPER}{X} | value : O'', next : o(O, N), Atts2:AttributeSet > < O' : V4:Node{TAOSET-WRAPPER}{X} | previous : o(O, N), Atts3:AttributeSet > < O'' : V5:X$Wrapper | contents : V, Atts4:AttributeSet > < o(O, N) : Node{TAOSET-WRAPPER}{X} | previous : O, next : O', value : O''' > < O''' : V6:X$Wrapper | contents : V', Atts5:AttributeSet > < O4 : V7:Counter | index : s N, Atts6:AttributeSet > else add-blocked(< L : V2:SortedList{X} | size : S, Atts:AttributeSet >) < O : V3:Node{TAOSET-WRAPPER}{X} | next : O', value : O'', Atts2:AttributeSet > < O' : V4:Node{TAOSET-WRAPPER}{X} | previous : O, Atts3:AttributeSet > < O'' : V5:X$Wrapper | contents : V, Atts4:AttributeSet > < O''' : V6:X$Wrapper | contents : V', Atts5:AttributeSet > (O' add' O''') < O4 : V7:Counter | index : N, Atts6:AttributeSet > fi . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. ========================================== rewrite in SORTED-NAT-LIST : (create-sorted-list(l) ((((((((((l add w(4)) l get at 3 from l) l add w(3)) l add w(2)) l add w(1)) l add w(0)) < w(4) : NatWrapper | value : 4 >) < w(3) : NatWrapper | value : 3 >) < w(2) : NatWrapper | value : 2 >) < w(1) : NatWrapper | value : 1 >) < w(0) : NatWrapper | value : 0 >) < c : Counter | index : 0 > . rewrites: 40 result Configuration: < l : SortedList{NatSW} | first : o(l, 0), last : o(l, 4), size : 5 > < c : Counter | index : 5 > < w(0) : NatWrapper | value : 0 > < w(1) : NatWrapper | value : 1 > < w(2) : NatWrapper | value : 2 > < w( 3) : NatWrapper | value : 3 > < w(4) : NatWrapper | value : 4 > < o(l, 0) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 1), previous : null, value : w(0) > < o(l, 1) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 2), previous : o(l, 0), value : w(1) > < o(l, 2) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 3), previous : o(l, 1), value : w(2) > < o(l, 3) : Node{TAOSET-WRAPPER}{ NatSW} | next : o(l, 4), previous : o(l, 2), value : w(3) > < o(l, 4) : Node{TAOSET-WRAPPER}{NatSW} | next : null, previous : o(l, 3), value : w(4) > to l from l elt at pos 3 is 3 Bye. Maude-Maude3.5.1/tests/ObjectOriented/oo-list-20000775000175000017510000000034015036121435020572 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/oo-list-2.maude -no-banner -no-advise \ > oo-list-2.out 2>&1 diff $srcdir/oo-list-2.expected oo-list-2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/dining-philosophers6.maude0000664000175000017510000002203115036121435024210 0ustar nileshnileshset show timing off . set show advisories off . set verbose on . ---- 5 DINING PHILOSOPHERS ***( Real-Time Maude 2.4 interpreter extension of Full Maude 2.4. Real-Time Maude built by Peter Olveczky on top of Full Maude built by Francisco Duran. Copyright 1997-2007 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. )*** fmod TIME is sorts Time NzTime . subsort NzTime < Time . op zero : -> Time . op _plus_ : Time Time -> Time [assoc comm prec 33 gather (E e)] . op _monus_ : Time Time -> Time [prec 33 gather (E e)] . op _le_ : Time Time -> Bool [prec 37] . op _lt_ : Time Time -> Bool [prec 37] . op _ge_ : Time Time -> Bool [prec 37] . op _gt_ : Time Time -> Bool [prec 37] . eq zero plus R:Time = R:Time . eq R:Time le R':Time = (R:Time lt R':Time) or (R:Time == R':Time) . eq R:Time ge R':Time = R':Time le R:Time . eq R:Time gt R':Time = R':Time lt R:Time . endfm view Time from TRIV to TIME is sort Elt to Time . endv *** Module TIME-INF: fmod TIME-INF is including TIME . sort TimeInf . subsort Time < TimeInf . op INF : -> TimeInf . op _plus_ : TimeInf TimeInf -> TimeInf [ditto] . op _monus_ : TimeInf Time -> TimeInf [ditto] . op _le_ : TimeInf TimeInf -> Bool [prec 37] . op _lt_ : TimeInf TimeInf -> Bool [prec 37] . op _ge_ : TimeInf TimeInf -> Bool [prec 37] . op _gt_ : TimeInf TimeInf -> Bool [prec 37] . var TI TI' : TimeInf . var R : Time . eq INF plus TI = INF . eq INF monus R = INF . eq TI le INF = true . eq INF le R = false . eq INF lt TI = false . eq R lt INF = true . eq TI gt TI' = TI' lt TI . eq TI ge TI' = TI' le TI . endfm *** Now for linear time ... fmod LTIME is including TIME . ops minimum maximum : Time Time -> Time [assoc comm] . vars R R' : Time . ceq maximum(R, R') = R if R' le R . ceq minimum(R, R') = R' if R' le R . endfm *** Linear time with infinity value: fmod LTIME-INF is including LTIME . including TIME-INF . ops minimum maximum : TimeInf TimeInf -> TimeInf [ditto] . eq maximum(INF, TI:TimeInf) = INF . eq minimum(INF, TI:TimeInf) = TI:TimeInf . endfm *** Discrete time domain, the natural numbers ... fmod NAT-TIME-DOMAIN is inc LTIME . protecting NAT . subsort Nat < Time . subsort NzNat < NzTime . vars N N' : Nat . eq zero = 0 . eq N plus N' = N + N' . eq N monus N' = if N > N' then sd(N, N') else 0 fi . eq N lt N' = N < N' . endfm fmod NAT-TIME-DOMAIN-WITH-INF is protecting NAT-TIME-DOMAIN . including LTIME-INF . --- should for simplicity extend <, >=, etc to infinity: op _<_ : TimeInf TimeInf -> Bool [ditto] . op _<=_ : TimeInf TimeInf -> Bool [ditto] . op _>_ : TimeInf TimeInf -> Bool [ditto] . op _>=_ : TimeInf TimeInf -> Bool [ditto] . op _+_ : TimeInf TimeInf -> TimeInf [ditto] . var N : Nat . var TI : TimeInf . eq INF < TI = false . eq N < INF = true . eq TI <= INF = true . eq INF <= N = false . eq INF >= TI = true . eq N >= INF = false . eq TI > INF = false . eq INF > N = true . eq INF + TI = INF . --- NEW: must also extend the built-in 'min' and'max' to TimeInf: ops min max : TimeInf TimeInf -> TimeInf [ditto] . eq max(INF, TI:TimeInf) = INF . eq min(INF, TI:TimeInf) = TI:TimeInf . endfm --- changed! *** -------------------------- fmod POSITIVE-RAT is protecting RAT . sort NNegRat . --- non-negative rationals! subsorts Zero PosRat Nat < NNegRat < Rat . endfm fmod POSRAT-TIME-DOMAIN is inc LTIME . protecting POSITIVE-RAT . subsort NNegRat < Time . subsort PosRat < NzTime . vars R R' : NNegRat . eq zero = 0 . eq R plus R' = R + R' . eq R monus R' = if R > R' then R - R' else 0 fi . eq R lt R' = R < R' . endfm fmod POSRAT-TIME-DOMAIN-WITH-INF is protecting POSRAT-TIME-DOMAIN . including LTIME-INF . --- again, we should extend the comparison operators to infinity: op _<_ : TimeInf TimeInf -> Bool [ditto] . op _<=_ : TimeInf TimeInf -> Bool [ditto] . op _>_ : TimeInf TimeInf -> Bool [ditto] . op _>=_ : TimeInf TimeInf -> Bool [ditto] . op _+_ : TimeInf TimeInf -> TimeInf [ditto] . op _+_ : NNegRat NNegRat -> NNegRat [ditto] . var R : NNegRat . var TI : TimeInf . eq INF < TI = false . eq R < INF = true . eq TI <= INF = true . eq INF <= R = false . eq INF >= TI = true . eq R >= INF = false . eq TI > INF = false . eq INF > R = true . eq INF + TI = INF . --- NEW: must also extend the built-in 'min' and'max' to TimeInf: ops min max : TimeInf TimeInf -> TimeInf [ditto] . eq max(INF, TI:TimeInf) = INF . eq min(INF, TI:TimeInf) = TI:TimeInf . --- Some additional declarations for preregularity: ops min max : NNegRat NNegRat -> NNegRat [ditto] . ops min max : Zero Zero -> Zero [ditto] . op min : Zero NzNat -> Zero [ditto] . op max : Zero NzNat -> NzNat [ditto] . op max : Rat TimeInf -> TimeInf [ditto] . op max : Rat NNegRat -> NNegRat [ditto] . endfm omod DINING-PHILOSOPHERS is protecting POSRAT-TIME-DOMAIN-WITH-INF . including CONFIGURATION . sort Status . ops thinking hungry eating : -> Status . ops EATING-TIME THINKING-TIME : -> Time . eq EATING-TIME = 3 . eq THINKING-TIME = 12 . sort System . op {_,_} : Configuration Time -> System . class Philosopher | status : Status, chopsticks : Nat, timer : Time . ----sort Philosopher . ----subsort Philosopher < Cid . ----op Philosopher : -> Philosopher [ctor] . ----op status :_ : Status -> Attribute [ctor gather (&)] . ----op chopsticks :_ : Nat -> Attribute [ctor gather (&)] . ----op timer :_ : Time -> Attribute [ctor gather (&)] . class Chopstick . ---- sort Chopstick . ---- subsort Chopstick < Cid . ---- op Chopstick : -> Chopstick . ops p c : Nat -> Oid . vars I J N M K : Nat . vars Atts Atts1 Atts2 : AttributeSet . vars T T' : Time . var Conf : Configuration . rl [get-hungry] : < p(I) : Philosopher | status : thinking, timer : 0 > => < p(I) : Philosopher | status : hungry > . crl [grab-stick] : < p(I) : Philosopher | status : hungry, chopsticks : N > < c(J) : Chopstick | > => < p(I) : Philosopher | chopsticks : s N > if I == J or (s I == J or (I == 4 and J == 0)) . rl [eat] : < p(I) : Philosopher | status : hungry, chopsticks : 2 > => < p(I) : Philosopher | status : eating, timer : EATING-TIME > . rl [stop-eating] : < p(I) : P:Philosopher | status : eating, chopsticks : 0, timer : 0, Atts1 > => < p(I) : P:Philosopher | status : thinking, chopsticks : 0, timer : THINKING-TIME, Atts1 > < c(I) : Chopstick | none > < c(if I == 4 then 0 else s I fi) : Chopstick | none > [dnt] . op mte : Configuration -> Time . eq mte(< p(I) : Philosopher | timer : T, Atts1 > Conf) = minimum(T, mte(Conf)) . eq mte(Conf) = 0 [owise] . op delta : Configuration Time -> Configuration . eq delta(< p(I) : Philosopher | timer : T > Conf, T') = < p(I) : Philosopher | timer : T - T' > delta(Conf, T') . crl [tick] : { Conf, T } => { delta(Conf, T'), T + T' } if T' := mte(Conf) /\ T' > 0 /\ T < 1000 . op initState : -> System . op initState : Nat -> Configuration . eq initState = { initState(5), 0 } . eq initState(s N) = < p(N) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(N) : Chopstick | none > initState(N) . eq initState(0) = none . endom red initState . search [1] initState =>! S:System . load model-checker.maude omod DINING-PHILOSOPHERS-PREDS is protecting DINING-PHILOSOPHERS . including SATISFACTION . subsort System < State . op phil-status : Oid Status -> Prop . op phil-sticks : Oid Nat -> Prop . vars P N : Nat . var Conf : Configuration . var St : Status . var Atts : AttributeSet . var T : Time . eq { < p(P) : Philosopher | status : St > Conf, T } |= phil-status(p(P), St) = true . eq { < p(P) : Philosopher | chopsticks : N > Conf, T } |= phil-sticks(p(P), N) = true . endom omod DINING-PHILOSOPHERS-5-CHECK is protecting DINING-PHILOSOPHERS-PREDS . including MODEL-CHECKER . including LTL-SIMPLIFIER . endom red modelCheck(initState, [] ~ (phil-sticks(p(0), 1) /\ phil-sticks(p(1), 1) /\ phil-sticks(p(2), 1) /\ phil-sticks(p(3), 1) /\ phil-sticks(p(4), 1))) . Maude-Maude3.5.1/tests/ObjectOriented/dining-philosophers6.expected0000664000175000017510000002231115036121435024717 0ustar nileshnileshConsidering object completion on: rl [get-hungry] : < p(I) : Philosopher | status : thinking, timer : 0 > => < p(I) : Philosopher | status : hungry > . Transformed rule: rl [get-hungry] : < p(I) : V:Philosopher | status : thinking, timer : 0, Atts > => < p(I) : V:Philosopher | timer : 0, status : hungry, Atts > . Considering object completion on: crl [grab-stick] : < p(I) : Philosopher | status : hungry, chopsticks : N > < c(J) : Chopstick | none > => < p(I) : Philosopher | chopsticks : s N > if I == J or s I == J or I == 4 and J == 0 = true . Transformed rule: crl [grab-stick] : < p(I) : V:Philosopher | status : hungry, chopsticks : N, Atts > < c(J) : V2:Chopstick | Atts2 > => < p(I) : V:Philosopher | status : hungry, chopsticks : s N, Atts > if I == J or s I == J or I == 4 and J == 0 = true . Considering object completion on: rl [eat] : < p(I) : Philosopher | status : hungry, chopsticks : 2 > => < p(I) : Philosopher | status : eating, timer : EATING-TIME > . Transformed rule: rl [eat] : < p(I) : V:Philosopher | status : hungry, chopsticks : 2, timer : A:[Rat,TimeInf], Atts > => < p(I) : V:Philosopher | chopsticks : 2, status : eating, timer : EATING-TIME, Atts > . Considering object completion on: eq mte(< p(I) : Philosopher | timer : T, Atts1 > Conf) = minimum(T, mte( Conf)) . Transformed equation: eq mte(< p(I) : V:Philosopher | timer : T, Atts1 > Conf) = minimum(T, mte( Conf)) . Considering object completion on: eq delta(< p(I) : Philosopher | timer : T > Conf, T') = < p(I) : Philosopher | timer : (T - T') > delta(Conf, T') . Transformed equation: eq delta(< p(I) : V:Philosopher | timer : T, Atts > Conf, T') = < p(I) : V:Philosopher | timer : (T - T'), Atts > delta(Conf, T') . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. ========================================== reduce in DINING-PHILOSOPHERS : initState . rewrites: 7 result System: {< p(0) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(1) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(2) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p( 3) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(4) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(0) : Chopstick | none > < c(1) : Chopstick | none > < c(2) : Chopstick | none > < c(3) : Chopstick | none > < c(4) : Chopstick | none >, 0} ========================================== search [1] in DINING-PHILOSOPHERS : initState =>! S:System . Solution 1 (state 1987) states: 2120 rewrites: 284085 S:System --> {< p(0) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(1) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p( 2) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(3) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(4) : Philosopher | status : hungry, chopsticks : 1, timer : 0 >, 0} Considering object completion on: eq {< p(P) : Philosopher | status : St > Conf, T} |= phil-status(p(P), St) = true . Transformed equation: eq {< p(P) : V:Philosopher | status : St, Atts > Conf, T} |= phil-status(p( P), St) = true . Considering object completion on: eq {< p(P) : Philosopher | chopsticks : N > Conf, T} |= phil-sticks(p(P), N) = true . Transformed equation: eq {< p(P) : V:Philosopher | chopsticks : N, Atts > Conf, T} |= phil-sticks( p(P), N) = true . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. op __ left-identity collapse from TransitionList to Transition is unequal. op __ right-identity collapse from TransitionList to Transition is unequal. ========================================== reduce in DINING-PHILOSOPHERS-5-CHECK : modelCheck(initState, []~ (phil-sticks( p(4), 1) /\ (phil-sticks(p(3), 1) /\ (phil-sticks(p(2), 1) /\ (phil-sticks( p(0), 1) /\ phil-sticks(p(1), 1)))))) . ModelChecker: Property automaton has 2 states. ModelCheckerSymbol: Examined 459 system states. rewrites: 48194 result ModelCheckResult: counterexample({{< p(0) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(1) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(2) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(3) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(4) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(0) : Chopstick | none > < c(1) : Chopstick | none > < c(2) : Chopstick | none > < c(3) : Chopstick | none > < c(4) : Chopstick | none >, 0}, 'get-hungry} {{< p(0) : Philosopher | status : hungry, chopsticks : 0, timer : 0 > < p(1) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(2) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(3) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(4) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(0) : Chopstick | none > < c(1) : Chopstick | none > < c(2) : Chopstick | none > < c(3) : Chopstick | none > < c(4) : Chopstick | none >, 0}, 'grab-stick} {{< p(0) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(1) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(2) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(3) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(4) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(1) : Chopstick | none > < c(2) : Chopstick | none > < c(3) : Chopstick | none > < c(4) : Chopstick | none >, 0}, 'get-hungry} {{< p(0) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(1) : Philosopher | status : hungry, chopsticks : 0, timer : 0 > < p(2) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(3) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(4) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(1) : Chopstick | none > < c(2) : Chopstick | none > < c(3) : Chopstick | none > < c(4) : Chopstick | none >, 0}, 'grab-stick} {{< p(0) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(1) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(2) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(3) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(4) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(2) : Chopstick | none > < c(3) : Chopstick | none > < c(4) : Chopstick | none >, 0}, 'get-hungry} {{< p(0) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(1) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(2) : Philosopher | status : hungry, chopsticks : 0, timer : 0 > < p(3) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(4) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(2) : Chopstick | none > < c(3) : Chopstick | none > < c(4) : Chopstick | none >, 0}, 'grab-stick} {{< p(0) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(1) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(2) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(3) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < p(4) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(3) : Chopstick | none > < c(4) : Chopstick | none >, 0}, 'get-hungry} {{< p(0) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(1) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(2) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(3) : Philosopher | status : hungry, chopsticks : 0, timer : 0 > < p(4) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(3) : Chopstick | none > < c(4) : Chopstick | none >, 0}, 'grab-stick} {{< p(0) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(1) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(2) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(3) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(4) : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < c(4) : Chopstick | none >, 0}, 'get-hungry} {{< p(0) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(1) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(2) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(3) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(4) : Philosopher | status : hungry, chopsticks : 0, timer : 0 > < c(4) : Chopstick | none >, 0}, 'grab-stick}, {{< p(0) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p( 1) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(2) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(3) : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < p(4) : Philosopher | status : hungry, chopsticks : 1, timer : 0 >, 0}, deadlock}) Bye. Maude-Maude3.5.1/tests/ObjectOriented/dining-philosophers60000775000175000017510000000041415036121435023122 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/dining-philosophers6.maude -no-banner -no-advise \ > dining-philosophers6.out 2>&1 diff $srcdir/dining-philosophers6.expected dining-philosophers6.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/dining-philosophers5.maude0000664000175000017510000002171315036121435024215 0ustar nileshnileshset show timing off . set show advisories off . set verbose on . ---- 5 DINING PHILOSOPHERS ***( Real-Time Maude 2.4 interpreter extension of Full Maude 2.4. Real-Time Maude built by Peter Olveczky on top of Full Maude built by Francisco Duran. Copyright 1997-2007 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. )*** fmod TIME is sorts Time NzTime . subsort NzTime < Time . op zero : -> Time . op _plus_ : Time Time -> Time [assoc comm prec 33 gather (E e)] . op _monus_ : Time Time -> Time [prec 33 gather (E e)] . op _le_ : Time Time -> Bool [prec 37] . op _lt_ : Time Time -> Bool [prec 37] . op _ge_ : Time Time -> Bool [prec 37] . op _gt_ : Time Time -> Bool [prec 37] . eq zero plus R:Time = R:Time . eq R:Time le R':Time = (R:Time lt R':Time) or (R:Time == R':Time) . eq R:Time ge R':Time = R':Time le R:Time . eq R:Time gt R':Time = R':Time lt R:Time . endfm view Time from TRIV to TIME is sort Elt to Time . endv *** Module TIME-INF: fmod TIME-INF is including TIME . sort TimeInf . subsort Time < TimeInf . op INF : -> TimeInf . op _plus_ : TimeInf TimeInf -> TimeInf [ditto] . op _monus_ : TimeInf Time -> TimeInf [ditto] . op _le_ : TimeInf TimeInf -> Bool [prec 37] . op _lt_ : TimeInf TimeInf -> Bool [prec 37] . op _ge_ : TimeInf TimeInf -> Bool [prec 37] . op _gt_ : TimeInf TimeInf -> Bool [prec 37] . var TI TI' : TimeInf . var R : Time . eq INF plus TI = INF . eq INF monus R = INF . eq TI le INF = true . eq INF le R = false . eq INF lt TI = false . eq R lt INF = true . eq TI gt TI' = TI' lt TI . eq TI ge TI' = TI' le TI . endfm *** Now for linear time ... fmod LTIME is including TIME . ops minimum maximum : Time Time -> Time [assoc comm] . vars R R' : Time . ceq maximum(R, R') = R if R' le R . ceq minimum(R, R') = R' if R' le R . endfm *** Linear time with infinity value: fmod LTIME-INF is including LTIME . including TIME-INF . ops minimum maximum : TimeInf TimeInf -> TimeInf [ditto] . eq maximum(INF, TI:TimeInf) = INF . eq minimum(INF, TI:TimeInf) = TI:TimeInf . endfm *** Discrete time domain, the natural numbers ... fmod NAT-TIME-DOMAIN is inc LTIME . protecting NAT . subsort Nat < Time . subsort NzNat < NzTime . vars N N' : Nat . eq zero = 0 . eq N plus N' = N + N' . eq N monus N' = if N > N' then sd(N, N') else 0 fi . eq N lt N' = N < N' . endfm fmod NAT-TIME-DOMAIN-WITH-INF is protecting NAT-TIME-DOMAIN . including LTIME-INF . --- should for simplicity extend <, >=, etc to infinity: op _<_ : TimeInf TimeInf -> Bool [ditto] . op _<=_ : TimeInf TimeInf -> Bool [ditto] . op _>_ : TimeInf TimeInf -> Bool [ditto] . op _>=_ : TimeInf TimeInf -> Bool [ditto] . op _+_ : TimeInf TimeInf -> TimeInf [ditto] . var N : Nat . var TI : TimeInf . eq INF < TI = false . eq N < INF = true . eq TI <= INF = true . eq INF <= N = false . eq INF >= TI = true . eq N >= INF = false . eq TI > INF = false . eq INF > N = true . eq INF + TI = INF . --- NEW: must also extend the built-in 'min' and'max' to TimeInf: ops min max : TimeInf TimeInf -> TimeInf [ditto] . eq max(INF, TI:TimeInf) = INF . eq min(INF, TI:TimeInf) = TI:TimeInf . endfm --- changed! *** -------------------------- fmod POSITIVE-RAT is protecting RAT . sort NNegRat . --- non-negative rationals! subsorts Zero PosRat Nat < NNegRat < Rat . endfm fmod POSRAT-TIME-DOMAIN is inc LTIME . protecting POSITIVE-RAT . subsort NNegRat < Time . subsort PosRat < NzTime . vars R R' : NNegRat . eq zero = 0 . eq R plus R' = R + R' . eq R monus R' = if R > R' then R - R' else 0 fi . eq R lt R' = R < R' . endfm fmod POSRAT-TIME-DOMAIN-WITH-INF is protecting POSRAT-TIME-DOMAIN . including LTIME-INF . --- again, we should extend the comparison operators to infinity: op _<_ : TimeInf TimeInf -> Bool [ditto] . op _<=_ : TimeInf TimeInf -> Bool [ditto] . op _>_ : TimeInf TimeInf -> Bool [ditto] . op _>=_ : TimeInf TimeInf -> Bool [ditto] . op _+_ : TimeInf TimeInf -> TimeInf [ditto] . op _+_ : NNegRat NNegRat -> NNegRat [ditto] . var R : NNegRat . var TI : TimeInf . eq INF < TI = false . eq R < INF = true . eq TI <= INF = true . eq INF <= R = false . eq INF >= TI = true . eq R >= INF = false . eq TI > INF = false . eq INF > R = true . eq INF + TI = INF . --- NEW: must also extend the built-in 'min' and'max' to TimeInf: ops min max : TimeInf TimeInf -> TimeInf [ditto] . eq max(INF, TI:TimeInf) = INF . eq min(INF, TI:TimeInf) = TI:TimeInf . --- Some additional declarations for preregularity: ops min max : NNegRat NNegRat -> NNegRat [ditto] . ops min max : Zero Zero -> Zero [ditto] . op min : Zero NzNat -> Zero [ditto] . op max : Zero NzNat -> NzNat [ditto] . op max : Rat TimeInf -> TimeInf [ditto] . op max : Rat NNegRat -> NNegRat [ditto] . endfm omod DINING-PHILOSOPHERS is protecting POSRAT-TIME-DOMAIN-WITH-INF . including CONFIGURATION . sort Status . ops thinking hungry eating : -> Status . ops EATING-TIME THINKING-TIME : -> Time . eq EATING-TIME = 3 . eq THINKING-TIME = 12 . sort System . op {_,_} : Configuration Time -> System . class Philosopher | status : Status, chopsticks : Nat, timer : Time . ----sort Philosopher . ----subsort Philosopher < Cid . ----op Philosopher : -> Philosopher [ctor] . ----op status :_ : Status -> Attribute [ctor gather (&)] . ----op chopsticks :_ : Nat -> Attribute [ctor gather (&)] . ----op timer :_ : Time -> Attribute [ctor gather (&)] . class Chopstick . ---- sort Chopstick . ---- subsort Chopstick < Cid . ---- op Chopstick : -> Chopstick . subsort Nat < Oid . vars I J N M K : Nat . vars Atts Atts1 Atts2 : AttributeSet . vars T T' : Time . var Conf : Configuration . rl [get-hungry] : < I : Philosopher | status : thinking, timer : 0 > => < I : Philosopher | status : hungry > . crl [grab-stick] : < I : Philosopher | status : hungry, chopsticks : N > < J : Chopstick | > => < I : Philosopher | chopsticks : s N > if I == J or (s I == J or (I == 4 and J == 0)) . rl [eat] : < I : Philosopher | status : hungry, chopsticks : 2 > => < I : Philosopher | status : eating, timer : EATING-TIME > . rl [stop-eating] : < I : P:Philosopher | status : eating, chopsticks : 0, timer : 0, Atts1 > => < I : P:Philosopher | status : thinking, chopsticks : 0, timer : THINKING-TIME, Atts1 > < I : Chopstick | none > < if I == 4 then 0 else s I fi : Chopstick | none > [dnt] . op mte : Configuration -> Time . eq mte(< I : Philosopher | timer : T, Atts1 > Conf) = minimum(T, mte(Conf)) . eq mte(Conf) = 0 [owise] . op delta : Configuration Time -> Configuration . eq delta(< I : Philosopher | timer : T > Conf, T') = < I : Philosopher | timer : T - T' > delta(Conf, T') . crl [tick] : { Conf, T } => { delta(Conf, T'), T + T' } if T' := mte(Conf) /\ T' > 0 /\ T < 1000 . op initState : -> System . op initState : Nat -> Configuration . eq initState = { initState(5), 0 } . eq initState(s N) = < N : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < N : Chopstick | none > initState(N) . eq initState(0) = none . endom red initState . search [1] initState =>! S:System . load model-checker.maude omod DINING-PHILOSOPHERS-PREDS is protecting DINING-PHILOSOPHERS . including SATISFACTION . subsort System < State . op phil-status : Nat Status -> Prop . op phil-sticks : Nat Nat -> Prop . vars P N : Nat . var Conf : Configuration . var St : Status . var Atts : AttributeSet . var T : Time . eq { < P : Philosopher | status : St > Conf, T } |= phil-status(P, St) = true . eq { < P : Philosopher | chopsticks : N > Conf, T } |= phil-sticks(P, N) = true . endom omod DINING-PHILOSOPHERS-5-CHECK is protecting DINING-PHILOSOPHERS-PREDS . including MODEL-CHECKER . including LTL-SIMPLIFIER . endom red modelCheck(initState, [] ~ (phil-sticks(0, 1) /\ phil-sticks(1, 1) /\ phil-sticks(2, 1) /\ phil-sticks(3, 1) /\ phil-sticks(4, 1))) . Maude-Maude3.5.1/tests/ObjectOriented/dining-philosophers5.expected0000664000175000017510000002144315036121435024723 0ustar nileshnileshConsidering object completion on: rl [get-hungry] : < I : Philosopher | status : thinking, timer : 0 > => < I : Philosopher | status : hungry > . Transformed rule: rl [get-hungry] : < I : V:Philosopher | status : thinking, timer : 0, Atts > => < I : V:Philosopher | timer : 0, status : hungry, Atts > . Considering object completion on: crl [grab-stick] : < I : Philosopher | status : hungry, chopsticks : N > < J : Chopstick | none > => < I : Philosopher | chopsticks : s N > if I == J or s I == J or I == 4 and J == 0 = true . Transformed rule: crl [grab-stick] : < I : V:Philosopher | status : hungry, chopsticks : N, Atts > < J : V2:Chopstick | Atts2 > => < I : V:Philosopher | status : hungry, chopsticks : s N, Atts > if I == J or s I == J or I == 4 and J == 0 = true . Considering object completion on: rl [eat] : < I : Philosopher | status : hungry, chopsticks : 2 > => < I : Philosopher | status : eating, timer : EATING-TIME > . Transformed rule: rl [eat] : < I : V:Philosopher | status : hungry, chopsticks : 2, timer : A:[ Rat,TimeInf,Oid], Atts > => < I : V:Philosopher | chopsticks : 2, status : eating, timer : EATING-TIME, Atts > . Considering object completion on: eq mte(< I : Philosopher | timer : T, Atts1 > Conf) = minimum(T, mte(Conf)) . Transformed equation: eq mte(< I : V:Philosopher | timer : T, Atts1 > Conf) = minimum(T, mte(Conf)) . Considering object completion on: eq delta(< I : Philosopher | timer : T > Conf, T') = < I : Philosopher | timer : (T - T') > delta(Conf, T') . Transformed equation: eq delta(< I : V:Philosopher | timer : T, Atts > Conf, T') = < I : V:Philosopher | timer : (T - T'), Atts > delta(Conf, T') . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. ========================================== reduce in DINING-PHILOSOPHERS : initState . rewrites: 7 result System: {< 0 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 0 : Chopstick | none > < 1 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 1 : Chopstick | none > < 2 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 2 : Chopstick | none > < 3 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 3 : Chopstick | none > < 4 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0} ========================================== search [1] in DINING-PHILOSOPHERS : initState =>! S:System . Solution 1 (state 1987) states: 2120 rewrites: 284085 S:System --> {< 0 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 1 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 2 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 3 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 4 : Philosopher | status : hungry, chopsticks : 1, timer : 0 >, 0} Considering object completion on: eq {< P : Philosopher | status : St > Conf, T} |= phil-status(P, St) = true . Transformed equation: eq {< P : V:Philosopher | status : St, Atts > Conf, T} |= phil-status(P, St) = true . Considering object completion on: eq {< P : Philosopher | chopsticks : N > Conf, T} |= phil-sticks(P, N) = true . Transformed equation: eq {< P : V:Philosopher | chopsticks : N, Atts > Conf, T} |= phil-sticks(P, N) = true . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. op __ left-identity collapse from TransitionList to Transition is unequal. op __ right-identity collapse from TransitionList to Transition is unequal. ========================================== reduce in DINING-PHILOSOPHERS-5-CHECK : modelCheck(initState, []~ (phil-sticks( 4, 1) /\ (phil-sticks(3, 1) /\ (phil-sticks(2, 1) /\ (phil-sticks(0, 1) /\ phil-sticks(1, 1)))))) . ModelChecker: Property automaton has 2 states. ModelCheckerSymbol: Examined 459 system states. rewrites: 48194 result ModelCheckResult: counterexample({{< 0 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 0 : Chopstick | none > < 1 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 1 : Chopstick | none > < 2 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 2 : Chopstick | none > < 3 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 3 : Chopstick | none > < 4 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0}, 'get-hungry} {{< 0 : Philosopher | status : hungry, chopsticks : 0, timer : 0 > < 0 : Chopstick | none > < 1 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 1 : Chopstick | none > < 2 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 2 : Chopstick | none > < 3 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 3 : Chopstick | none > < 4 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0}, 'grab-stick} {{< 0 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 1 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 1 : Chopstick | none > < 2 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 2 : Chopstick | none > < 3 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 3 : Chopstick | none > < 4 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0}, 'get-hungry} {{< 0 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 1 : Philosopher | status : hungry, chopsticks : 0, timer : 0 > < 1 : Chopstick | none > < 2 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 2 : Chopstick | none > < 3 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 3 : Chopstick | none > < 4 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0}, 'grab-stick} {{< 0 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 1 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 2 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 2 : Chopstick | none > < 3 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 3 : Chopstick | none > < 4 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0}, 'get-hungry} {{< 0 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 1 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 2 : Philosopher | status : hungry, chopsticks : 0, timer : 0 > < 2 : Chopstick | none > < 3 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 3 : Chopstick | none > < 4 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0}, 'grab-stick} {{< 0 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 1 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 2 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 3 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 3 : Chopstick | none > < 4 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0}, 'get-hungry} {{< 0 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 1 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 2 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 3 : Philosopher | status : hungry, chopsticks : 0, timer : 0 > < 3 : Chopstick | none > < 4 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0}, 'grab-stick} {{< 0 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 1 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 2 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 3 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 4 : Philosopher | status : thinking, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0}, 'get-hungry} {{< 0 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 1 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 2 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 3 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 4 : Philosopher | status : hungry, chopsticks : 0, timer : 0 > < 4 : Chopstick | none >, 0}, 'grab-stick}, {{< 0 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 1 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 2 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 3 : Philosopher | status : hungry, chopsticks : 1, timer : 0 > < 4 : Philosopher | status : hungry, chopsticks : 1, timer : 0 >, 0}, deadlock}) Bye. Maude-Maude3.5.1/tests/ObjectOriented/dining-philosophers50000775000175000017510000000041415036121435023121 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/dining-philosophers5.maude -no-banner -no-advise \ > dining-philosophers5.out 2>&1 diff $srcdir/dining-philosophers5.expected dining-philosophers5.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/account.maude0000664000175000017510000000331215036121435021572 0ustar nileshnileshset show timing off . set show advisories off . set verbose on . ---- adapted ---- from the book All About Maude ---- from the Maude Manual ---- by the Maude team omod ACCOUNT is protecting QID . protecting INT . subsort Qid < Oid . class Account | bal : Int . msgs credit debit : Oid Int -> Msg . msg from_to_transfer_ : Oid Oid Int -> Msg . vars A B : Oid . var M : Nat . vars N N' : Int . rl [credit] : credit(A, M) < A : Account | bal : N > => < A : Account | bal : N + M > . crl [debit] : debit(A, M) < A : Account | bal : N > => < A : Account | bal : N - M > if N >= M . crl [transfer] : (from A to B transfer M) < A : Account | bal : N > < B : Account | bal : N' > => < A : Account | bal : N - M > < B : Account | bal : N' + M > if N >= M . endom omod SAVING-ACCOUNT is including ACCOUNT . protecting FLOAT . class SavingAccount | rate : Float . subclass SavingAccount < Account . endom rew < 'A-06238 : Account | bal : 2000 > debit('A-06238, 1000) . rew < 'A-73728 : SavingAccount | bal : 5000, rate : 3.0 > < 'A-06238 : Account | bal : 2000 > < 'A-28381 : SavingAccount | bal : 9000, rate : 3.0 > debit('A-06238, 1000) credit('A-73728, 1300) credit('A-28381, 200) . search in SAVING-ACCOUNT : < 'A-73728 : SavingAccount | bal : 5000, rate : 3.0 > < 'A-06238 : Account | bal : 2000 > < 'A-28381 : SavingAccount | bal : 9000, rate : 3.0 > debit('A-06238, 1000) credit('A-73728, 1300) credit('A-28381, 200) =>! C:Configuration < O:Oid : Account | bal : N:Nat > such that N:Nat < 8000 . Maude-Maude3.5.1/tests/ObjectOriented/account.expected0000664000175000017510000000507315036121435022306 0ustar nileshnileshConsidering object completion on: rl [credit] : credit(A, M) < A : Account | bal : N > => < A : Account | bal : (N + M) > . Transformed rule: rl [credit] : credit(A, M) < A : V:Account | bal : N, Atts:AttributeSet > => < A : V:Account | bal : (N + M), Atts:AttributeSet > . Considering object completion on: crl [debit] : debit(A, M) < A : Account | bal : N > => < A : Account | bal : (N - M) > if N >= M = true . Transformed rule: crl [debit] : debit(A, M) < A : V:Account | bal : N, Atts:AttributeSet > => < A : V:Account | bal : (N - M), Atts:AttributeSet > if N >= M = true . Considering object completion on: crl [transfer] : (from A to B transfer M) < A : Account | bal : N > < B : Account | bal : N' > => < A : Account | bal : (N - M) > < B : Account | bal : (N' + M) > if N >= M = true . Transformed rule: crl [transfer] : (from A to B transfer M) < A : V:Account | bal : N, Atts:AttributeSet > < B : V2:Account | bal : N', Atts2:AttributeSet > => < A : V:Account | bal : (N - M), Atts:AttributeSet > < B : V2:Account | bal : (N' + M), Atts2:AttributeSet > if N >= M = true . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. ========================================== rewrite in SAVING-ACCOUNT : debit('A-06238, 1000) < 'A-06238 : Account | bal : 2000 > . rewrites: 3 result Object: < 'A-06238 : Account | bal : 1000 > ========================================== rewrite in SAVING-ACCOUNT : ((((credit('A-28381, 200) credit('A-73728, 1300)) debit('A-06238, 1000)) < 'A-28381 : SavingAccount | bal : 9000, rate : 3.0 >) < 'A-06238 : Account | bal : 2000 >) < 'A-73728 : SavingAccount | bal : 5000, rate : 3.0 > . rewrites: 7 result Configuration: < 'A-06238 : Account | bal : 1000 > < 'A-28381 : SavingAccount | bal : 9200, rate : 3.0 > < 'A-73728 : SavingAccount | bal : 6300, rate : 3.0 > ========================================== search in SAVING-ACCOUNT : ((((credit('A-28381, 200) credit('A-73728, 1300)) debit('A-06238, 1000)) < 'A-28381 : SavingAccount | bal : 9000, rate : 3.0 >) < 'A-06238 : Account | bal : 2000 >) < 'A-73728 : SavingAccount | bal : 5000, rate : 3.0 > =>! C:Configuration < O:Oid : Account | bal : N:Nat > such that N:Nat < 8000 = true . Solution 1 (state 7) states: 8 rewrites: 29 C:Configuration --> < 'A-28381 : SavingAccount | bal : 9200, rate : 3.0 > < 'A-73728 : SavingAccount | bal : 6300, rate : 3.0 > O:Oid --> 'A-06238 N:Nat --> 1000 No more solutions. states: 8 rewrites: 29 Bye. Maude-Maude3.5.1/tests/ObjectOriented/account0000775000175000017510000000033015036121435020500 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/account.maude -no-banner -no-advise \ > account.out 2>&1 diff $srcdir/account.expected account.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/ObjectOriented/Makefile.am0000664000175000017510000000133415036121435021157 0ustar nileshnileshTESTS = \ account \ rrobin \ rent-a-car-store \ parameterization \ oo-list-2 \ dining-philosophers5 \ dining-philosophers6 \ oo-list-3 \ oo-peg-game2 \ prngTest MAUDE_FILES = \ account.maude \ rrobin.maude \ rent-a-car-store.maude \ parameterization.maude \ oo-list-2.maude \ dining-philosophers5.maude \ dining-philosophers6.maude \ oo-list-3.maude \ oo-peg-game2.maude \ prngTest.maude RESULT_FILES = \ account.expected \ rrobin.expected \ rent-a-car-store.expected \ parameterization.expected \ oo-list-2.expected \ dining-philosophers5.expected \ dining-philosophers6.expected \ oo-list-3.expected \ oo-peg-game2.expected \ prngTest.expected EXTRA_DIST = $(TESTS) $(MAUDE_FILES) $(RESULT_FILES) Maude-Maude3.5.1/tests/Misc/0000775000175000017510000000000015036121435015115 5ustar nileshnileshMaude-Maude3.5.1/tests/Misc/view.maude0000664000175000017510000000177015036121435017111 0ustar nileshnileshset include BOOL off . fth T is sort Elt . op f : Elt -> Elt . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = f(f(X)) . endfm fmod FOO is sort Foo . endfm view V from T to FOO is sort Elt to Foo . var X : Elt . op f(X) to term X . endv fmod TEST is inc M{V} . endfm show all TEST . *** now invalidate view V by replacing FOO and recheck TEST fmod FOO is sort Foo . op c : -> Foo . endfm show all TEST . *** now replace view V altogether view V from T to FOO is sort Elt to Foo . var X : Elt . op f(X) to term c . endv show all TEST . *** now replace T with incompatible theory and redefine everything fth T is sort Elt . op f : Elt Elt -> Elt . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = f(X, f(X, X)) . endfm fmod FOO is sort Foo . op h : Foo -> Foo . endfm view V from T to FOO is sort Elt to Foo . vars X Y : Elt . op f(X, Y) to term h(Y) . endv fmod TEST is inc M{V} . endfm show all TEST . Maude-Maude3.5.1/tests/Misc/view.expected0000664000175000017510000000057115036121435017615 0ustar nileshnileshfmod TEST is sort Foo . op g : Foo -> Foo . eq g(X:Foo) = X:Foo . endfm fmod TEST is sort Foo . op c : -> Foo . op g : Foo -> Foo . eq g(X:Foo) = X:Foo . endfm fmod TEST is sort Foo . op c : -> Foo . op g : Foo -> Foo . eq g(X:Foo) = c . endfm fmod TEST is sort Foo . op h : Foo -> Foo . op g : Foo -> Foo . eq g(X:Foo) = h(h(X:Foo)) . endfm Bye. Maude-Maude3.5.1/tests/Misc/view0000775000175000017510000000031415036121435016013 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/view.maude -no-banner -no-advise \ > view.out 2>&1 diff $srcdir/view.expected view.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/variantUnification.maude0000664000175000017510000000250415036121435021770 0ustar nileshnileshset show timing off . fmod FOO is sort Foo . ops a b c d e : -> Foo . ops f g h : Foo Foo -> Foo . op 1f : -> Foo . vars W X Y Z A B C D : Foo . eq f(X, 1f) = X [variant] . eq f(1f, X) = X [variant] . endfm variant unify f(X, g(Y, Z)) =? f(X, g(Y, Z)) . variant unify g(f(X, Y), Z) =? g(a, g(A, B)) . variant unify f(1f, g(Y, Z)) =? g(Y, Z) . variant unify g(f(X, Y), Z) =? g(A, f(B, C)) . fmod LEFT-ID is sorts Elt Magma . subsort Elt < Magma . op __ : Magma Magma -> Magma [gather(E e)] . ops a b c d e : -> Elt . var X : [Magma] . eq e X = X [variant] . endfm variant unify X:Magma a =? Y:Magma a a . variant unify a X:Magma =? a a Y:Magma . fmod RIGHT-ID is sorts Elt Magma . subsort Elt < Magma . op __ : Magma Magma -> Magma [gather(e E)] . ops a b c d e : -> Elt . var X : [Magma] . eq X e = X [variant] . endfm variant unify X:Magma a =? Y:Magma a a . variant unify a X:Magma =? a a Y:Magma . fmod XOR is sort XOR . sort Elem . ops cst1 cst2 cst3 cst4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm variant unify X:XOR + cst1 =? Y:XOR + cst2 . variant unify X:XOR + cst1 =? Y:XOR + cst2 such that X:XOR + cst1 irreducible . Maude-Maude3.5.1/tests/Misc/variantUnification.expected0000664000175000017510000000646015036121435022503 0ustar nileshnilesh========================================== variant unify in FOO : f(X, g(Y, Z)) =? f(X, g(Y, Z)) . Unifier 1 rewrites: 0 X --> #1:Foo Y --> #2:Foo Z --> #3:Foo No more unifiers. rewrites: 0 ========================================== variant unify in FOO : g(f(X, Y), Z) =? g(a, g(A, B)) . Unifier 1 rewrites: 2 X --> a Y --> 1f Z --> g(#1:Foo, #2:Foo) A --> #1:Foo B --> #2:Foo Unifier 2 rewrites: 2 X --> 1f Y --> a Z --> g(#1:Foo, #2:Foo) A --> #1:Foo B --> #2:Foo No more unifiers. rewrites: 2 ========================================== variant unify in FOO : f(1f, g(Y, Z)) =? g(Y, Z) . Unifier 1 rewrites: 1 Y --> #1:Foo Z --> #2:Foo No more unifiers. rewrites: 1 ========================================== variant unify in FOO : g(f(X, Y), Z) =? g(A, f(B, C)) . Unifier 1 rewrites: 4 X --> %1:Foo Y --> %2:Foo Z --> f(%3:Foo, %4:Foo) A --> f(%1:Foo, %2:Foo) B --> %3:Foo C --> %4:Foo Unifier 2 rewrites: 12 X --> #1:Foo Y --> 1f Z --> f(#2:Foo, #3:Foo) A --> #1:Foo B --> #2:Foo C --> #3:Foo Unifier 3 rewrites: 12 X --> 1f Y --> #1:Foo Z --> f(#2:Foo, #3:Foo) A --> #1:Foo B --> #2:Foo C --> #3:Foo Unifier 4 rewrites: 12 X --> #1:Foo Y --> #2:Foo Z --> #3:Foo A --> f(#1:Foo, #2:Foo) B --> #3:Foo C --> 1f Unifier 5 rewrites: 12 X --> #1:Foo Y --> #2:Foo Z --> #3:Foo A --> f(#1:Foo, #2:Foo) B --> 1f C --> #3:Foo Unifier 6 rewrites: 12 X --> %1:Foo Y --> 1f Z --> %2:Foo A --> %1:Foo B --> %2:Foo C --> 1f Unifier 7 rewrites: 12 X --> %1:Foo Y --> 1f Z --> %2:Foo A --> %1:Foo B --> 1f C --> %2:Foo Unifier 8 rewrites: 12 X --> 1f Y --> %1:Foo Z --> %2:Foo A --> %1:Foo B --> %2:Foo C --> 1f Unifier 9 rewrites: 12 X --> 1f Y --> %1:Foo Z --> %2:Foo A --> %1:Foo B --> 1f C --> %2:Foo No more unifiers. rewrites: 12 ========================================== variant unify in LEFT-ID : X:Magma a =? Y:Magma a a . Unifier 1 rewrites: 2 X:Magma --> %1:Magma a Y:Magma --> %1:Magma Unifier 2 rewrites: 4 X:Magma --> a Y:Magma --> e No more unifiers. rewrites: 4 ========================================== variant unify in LEFT-ID : a X:Magma =? a a Y:Magma . No unifiers. rewrites: 0 ========================================== variant unify in RIGHT-ID : X:Magma a =? Y:Magma a a . No unifiers. rewrites: 0 ========================================== variant unify in RIGHT-ID : a X:Magma =? a a Y:Magma . Unifier 1 rewrites: 2 X:Magma --> a %1:Magma Y:Magma --> %1:Magma Unifier 2 rewrites: 4 X:Magma --> a Y:Magma --> e No more unifiers. rewrites: 4 ========================================== variant unify in XOR : X + cst1 =? Y + cst2 . Unifier 1 rewrites: 6 X --> cst2 + %1:XOR Y --> cst1 + %1:XOR Unifier 2 rewrites: 6 X --> cst2 Y --> cst1 Unifier 3 rewrites: 24 X --> cst1 + cst2 + #1:XOR Y --> #1:XOR Unifier 4 rewrites: 24 X --> #1:XOR Y --> cst1 + cst2 + #1:XOR Unifier 5 rewrites: 24 X --> 0 Y --> cst1 + cst2 Unifier 6 rewrites: 24 X --> cst1 Y --> cst2 Unifier 7 rewrites: 24 X --> cst1 + cst2 Y --> 0 Unifier 8 rewrites: 24 X --> cst1 + %1:XOR Y --> cst2 + %1:XOR No more unifiers. rewrites: 24 ========================================== variant unify in XOR : X + cst1 =? Y + cst2 such that X + cst1 irreducible . Unifier 1 rewrites: 3 X --> cst2 + %1:XOR Y --> cst1 + %1:XOR Unifier 2 rewrites: 3 X --> cst2 Y --> cst1 Unifier 3 rewrites: 3 X --> #1:XOR Y --> cst1 + cst2 + #1:XOR No more unifiers. rewrites: 3 Bye. Maude-Maude3.5.1/tests/Misc/variantUnification0000775000175000017510000000040415036121435020676 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/variantUnification.maude -no-banner -no-advise \ > variantUnification.out 2>&1 diff $srcdir/variantUnification.expected variantUnification.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/variantNarrowing.maude0000664000175000017510000000234715036121435021473 0ustar nileshnileshset show timing off . fmod CONSTANTS is sort Msg . op null : -> Msg . op 1 : -> Msg . op 2 : -> Msg . op 3 : -> Msg . op 4 : -> Msg . op 5 : -> Msg . op f : Msg Msg -> Msg [frozen] . op g : Msg Msg -> Msg [frozen] . endfm fmod TEST is inc CONSTANTS . op u : Msg Msg -> Msg [frozen assoc comm] . eq u(X:Msg, X:Msg) = (null).Msg [variant] . eq u(X:Msg, X:Msg, Y:Msg) = Y:Msg [variant] . eq u(X:Msg, (null).Msg) = X:Msg [variant] . endfm get variants in TEST : g(f(u(u(X14:Msg,2),g(g(X3:Msg,X15:Msg),X16:Msg)),u(g(X12:Msg,X3:Msg),g(X8:Msg,g(X10:Msg,X9:Msg)))),f(u(f(X8:Msg,X15:Msg),u(X15:Msg,X9:Msg)),g(f(X2:Msg,X2:Msg),g(3,X6:Msg)))) . fmod XOR is sort XOR . sort Elem . ops cst1 cst2 cst3 cst4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm get variants in XOR : X:XOR + cst1 . get variants in XOR : X:XOR + cst2 . get variants in XOR : X:XOR + cst2 such that X:XOR + a irreducible . get variants in XOR : X:XOR + Y:XOR + cst1 . get variants in XOR : X:XOR + Y:XOR + cst1 such that X:XOR + cst1, X:XOR + cst2 irreducible . Maude-Maude3.5.1/tests/Misc/variantNarrowing.expected0000664000175000017510000027207115036121435022204 0ustar nileshnilesh========================================== get variants in TEST : g(f(u(g(g(X3:Msg, X15:Msg), X16:Msg), u(2, X14:Msg)), u( g(X12:Msg, X3:Msg), g(X8:Msg, g(X10:Msg, X9:Msg)))), f(u(f(X8:Msg, X15:Msg), u(X15:Msg, X9:Msg)), g(f(X2:Msg, X2:Msg), g(3, X6:Msg)))) . Variant 1 rewrites: 0 Msg: g(f(u(2, #4:Msg, g(g(#1:Msg, #2:Msg), #3:Msg)), u(g(#5:Msg, #1:Msg), g( #6:Msg, g(#7:Msg, #8:Msg)))), f(u(#2:Msg, #8:Msg, f(#6:Msg, #2:Msg)), g(f( #9:Msg, #9:Msg), g(3, #10:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> #4:Msg X12:Msg --> #5:Msg X8:Msg --> #6:Msg X10:Msg --> #7:Msg X9:Msg --> #8:Msg X2:Msg --> #9:Msg X6:Msg --> #10:Msg Variant 2 rewrites: 14 Msg: g(f(u(%10:Msg, g(g(%1:Msg, %2:Msg), %3:Msg)), u(g(%4:Msg, %1:Msg), g( %5:Msg, g(%6:Msg, %7:Msg)))), f(u(%2:Msg, %7:Msg, f(%5:Msg, %2:Msg)), g(f( %8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %1:Msg X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> u(2, %10:Msg) X12:Msg --> %4:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> %7:Msg X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 3 rewrites: 14 Msg: g(f(g(g(%1:Msg, %2:Msg), %3:Msg), u(g(%4:Msg, %1:Msg), g(%5:Msg, g(%6:Msg, %7:Msg)))), f(u(%2:Msg, %7:Msg, f(%5:Msg, %2:Msg)), g(f(%8:Msg, %8:Msg), g( 3, %9:Msg)))) X3:Msg --> %1:Msg X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> 2 X12:Msg --> %4:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> %7:Msg X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 4 rewrites: 14 Msg: g(f(u(2, %10:Msg), u(g(%4:Msg, %1:Msg), g(%5:Msg, g(%6:Msg, %7:Msg)))), f( u(%2:Msg, %7:Msg, f(%5:Msg, %2:Msg)), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %1:Msg X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> u(%10:Msg, g(g(%1:Msg, %2:Msg), %3:Msg)) X12:Msg --> %4:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> %7:Msg X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 5 rewrites: 14 Msg: g(f(2, u(g(%4:Msg, %1:Msg), g(%5:Msg, g(%6:Msg, %7:Msg)))), f(u(%2:Msg, %7:Msg, f(%5:Msg, %2:Msg)), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %1:Msg X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> g(g(%1:Msg, %2:Msg), %3:Msg) X12:Msg --> %4:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> %7:Msg X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 6 rewrites: 14 Msg: g(f(u(2, g(g(%1:Msg, %2:Msg), %3:Msg)), u(g(%4:Msg, %1:Msg), g(%5:Msg, g( %6:Msg, %7:Msg)))), f(u(%2:Msg, %7:Msg, f(%5:Msg, %2:Msg)), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %1:Msg X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> null X12:Msg --> %4:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> %7:Msg X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 7 rewrites: 14 Msg: g(f(u(2, %1:Msg, g(g(g(%5:Msg, %6:Msg), %2:Msg), %3:Msg)), null), f(u( %2:Msg, %6:Msg, f(%4:Msg, %2:Msg)), g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> g(%5:Msg, %6:Msg) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> %1:Msg X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> %6:Msg X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 8 rewrites: 14 Msg: g(f(u(2, %2:Msg, g(g(%3:Msg, u(%1:Msg, %10:Msg)), %4:Msg)), u(g(%5:Msg, %3:Msg), g(%6:Msg, g(%7:Msg, u(%1:Msg, %11:Msg))))), f(u(%10:Msg, %11:Msg, f(%6:Msg, u(%1:Msg, %10:Msg))), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %3:Msg X15:Msg --> u(%1:Msg, %10:Msg) X16:Msg --> %4:Msg X14:Msg --> %2:Msg X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> u(%1:Msg, %11:Msg) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 9 rewrites: 14 Msg: g(f(u(2, %1:Msg, g(g(%2:Msg, u(%7:Msg, %10:Msg)), %3:Msg)), u(g(%4:Msg, %2:Msg), g(%5:Msg, g(%6:Msg, %7:Msg)))), f(u(%10:Msg, f(%5:Msg, u(%7:Msg, %10:Msg))), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> u(%7:Msg, %10:Msg) X16:Msg --> %3:Msg X14:Msg --> %1:Msg X12:Msg --> %4:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> %7:Msg X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 10 rewrites: 14 Msg: g(f(u(2, %1:Msg, g(g(%2:Msg, %3:Msg), %4:Msg)), u(g(%5:Msg, %2:Msg), g( %6:Msg, g(%7:Msg, u(%3:Msg, %10:Msg))))), f(u(%10:Msg, f(%6:Msg, %3:Msg)), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> %1:Msg X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> u(%3:Msg, %10:Msg) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 11 rewrites: 14 Msg: g(f(u(2, %1:Msg, g(g(%2:Msg, %3:Msg), %4:Msg)), u(g(%5:Msg, %2:Msg), g( %6:Msg, g(%7:Msg, %3:Msg)))), f(f(%6:Msg, %3:Msg), g(f(%8:Msg, %8:Msg), g( 3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> %1:Msg X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> %3:Msg X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 12 rewrites: 14 Msg: g(f(u(2, %1:Msg, g(g(%2:Msg, %3:Msg), %4:Msg)), u(g(%5:Msg, %2:Msg), g( %6:Msg, g(%7:Msg, u(%10:Msg, f(%6:Msg, %3:Msg)))))), f(u(%3:Msg, %10:Msg), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> %1:Msg X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> u(%10:Msg, f(%6:Msg, %3:Msg)) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 13 rewrites: 14 Msg: g(f(u(2, %1:Msg, g(g(%2:Msg, %3:Msg), %4:Msg)), u(g(%5:Msg, %2:Msg), g( %6:Msg, g(%7:Msg, f(%6:Msg, %3:Msg))))), f(%3:Msg, g(f(%8:Msg, %8:Msg), g( 3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> %1:Msg X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> f(%6:Msg, %3:Msg) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 14 rewrites: 14 Msg: g(f(u(2, %1:Msg, g(g(%2:Msg, null), %3:Msg)), u(g(%4:Msg, %2:Msg), g( %5:Msg, g(%6:Msg, %7:Msg)))), f(u(%7:Msg, f(%5:Msg, null)), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> null X16:Msg --> %3:Msg X14:Msg --> %1:Msg X12:Msg --> %4:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> %7:Msg X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 15 rewrites: 14 Msg: g(f(u(2, %1:Msg, g(g(%2:Msg, %3:Msg), %4:Msg)), u(g(%5:Msg, %2:Msg), g( %6:Msg, g(%7:Msg, null)))), f(u(%3:Msg, f(%6:Msg, %3:Msg)), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> %1:Msg X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> null X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 16 rewrites: 141 Msg: g(f(null, u(g(#4:Msg, #1:Msg), g(#5:Msg, g(#6:Msg, #7:Msg)))), f(u(#2:Msg, #7:Msg, f(#5:Msg, #2:Msg)), g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> u(2, g(g(#1:Msg, #2:Msg), #3:Msg)) X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> #7:Msg X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 17 rewrites: 141 Msg: g(f(#1:Msg, u(g(#5:Msg, #2:Msg), g(#6:Msg, g(#7:Msg, #8:Msg)))), f(u( #3:Msg, #8:Msg, f(#6:Msg, #3:Msg)), g(f(#9:Msg, #9:Msg), g(3, #10:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> u(2, #1:Msg, g(g(#2:Msg, #3:Msg), #4:Msg)) X12:Msg --> #5:Msg X8:Msg --> #6:Msg X10:Msg --> #7:Msg X9:Msg --> #8:Msg X2:Msg --> #9:Msg X6:Msg --> #10:Msg Variant 18 rewrites: 141 Msg: g(f(u(#1:Msg, g(g(g(#5:Msg, #6:Msg), #2:Msg), #3:Msg)), null), f(u(#2:Msg, #6:Msg, f(#4:Msg, #2:Msg)), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> g(#5:Msg, #6:Msg) X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #4:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> #6:Msg X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 19 rewrites: 141 Msg: g(f(u(#2:Msg, g(g(#3:Msg, u(#1:Msg, #10:Msg)), #4:Msg)), u(g(#5:Msg, #3:Msg), g(#6:Msg, g(#7:Msg, u(#1:Msg, #11:Msg))))), f(u(#10:Msg, #11:Msg, f(#6:Msg, u(#1:Msg, #10:Msg))), g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #3:Msg X15:Msg --> u(#1:Msg, #10:Msg) X16:Msg --> #4:Msg X14:Msg --> u(2, #2:Msg) X12:Msg --> #5:Msg X8:Msg --> #6:Msg X10:Msg --> #7:Msg X9:Msg --> u(#1:Msg, #11:Msg) X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 20 rewrites: 141 Msg: g(f(u(#1:Msg, g(g(#2:Msg, u(#7:Msg, #10:Msg)), #3:Msg)), u(g(#4:Msg, #2:Msg), g(#5:Msg, g(#6:Msg, #7:Msg)))), f(u(#10:Msg, f(#5:Msg, u(#7:Msg, #10:Msg))), g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #2:Msg X15:Msg --> u(#7:Msg, #10:Msg) X16:Msg --> #3:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> #7:Msg X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 21 rewrites: 141 Msg: g(f(u(#1:Msg, g(g(#2:Msg, #3:Msg), #4:Msg)), u(g(#5:Msg, #2:Msg), g( #6:Msg, g(#7:Msg, u(#3:Msg, #10:Msg))))), f(u(#10:Msg, f(#6:Msg, #3:Msg)), g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #5:Msg X8:Msg --> #6:Msg X10:Msg --> #7:Msg X9:Msg --> u(#3:Msg, #10:Msg) X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 22 rewrites: 141 Msg: g(f(u(#1:Msg, g(g(#2:Msg, #3:Msg), #4:Msg)), u(g(#5:Msg, #2:Msg), g( #6:Msg, g(#7:Msg, #3:Msg)))), f(f(#6:Msg, #3:Msg), g(f(#8:Msg, #8:Msg), g( 3, #9:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #5:Msg X8:Msg --> #6:Msg X10:Msg --> #7:Msg X9:Msg --> #3:Msg X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 23 rewrites: 141 Msg: g(f(u(#1:Msg, g(g(#2:Msg, #3:Msg), #4:Msg)), u(g(#5:Msg, #2:Msg), g( #6:Msg, g(#7:Msg, u(#10:Msg, f(#6:Msg, #3:Msg)))))), f(u(#3:Msg, #10:Msg), g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #5:Msg X8:Msg --> #6:Msg X10:Msg --> #7:Msg X9:Msg --> u(#10:Msg, f(#6:Msg, #3:Msg)) X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 24 rewrites: 141 Msg: g(f(u(#1:Msg, g(g(#2:Msg, #3:Msg), #4:Msg)), u(g(#5:Msg, #2:Msg), g( #6:Msg, g(#7:Msg, f(#6:Msg, #3:Msg))))), f(#3:Msg, g(f(#8:Msg, #8:Msg), g( 3, #9:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #5:Msg X8:Msg --> #6:Msg X10:Msg --> #7:Msg X9:Msg --> f(#6:Msg, #3:Msg) X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 25 rewrites: 141 Msg: g(f(u(#1:Msg, g(g(#2:Msg, null), #3:Msg)), u(g(#4:Msg, #2:Msg), g(#5:Msg, g(#6:Msg, #7:Msg)))), f(u(#7:Msg, f(#5:Msg, null)), g(f(#8:Msg, #8:Msg), g( 3, #9:Msg)))) X3:Msg --> #2:Msg X15:Msg --> null X16:Msg --> #3:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> #7:Msg X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 26 rewrites: 141 Msg: g(f(u(#1:Msg, g(g(#2:Msg, #3:Msg), #4:Msg)), u(g(#5:Msg, #2:Msg), g( #6:Msg, g(#7:Msg, null)))), f(u(#3:Msg, f(#6:Msg, #3:Msg)), g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #5:Msg X8:Msg --> #6:Msg X10:Msg --> #7:Msg X9:Msg --> null X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 27 rewrites: 141 Msg: g(f(g(g(g(#4:Msg, #5:Msg), #1:Msg), #2:Msg), null), f(u(#1:Msg, #5:Msg, f( #3:Msg, #1:Msg)), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#4:Msg, #5:Msg) X15:Msg --> #1:Msg X16:Msg --> #2:Msg X14:Msg --> 2 X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> #5:Msg X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 28 rewrites: 141 Msg: g(f(g(g(#2:Msg, u(#1:Msg, #9:Msg)), #3:Msg), u(g(#4:Msg, #2:Msg), g( #5:Msg, g(#6:Msg, u(#1:Msg, #10:Msg))))), f(u(#9:Msg, #10:Msg, f(#5:Msg, u( #1:Msg, #9:Msg))), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #2:Msg X15:Msg --> u(#1:Msg, #9:Msg) X16:Msg --> #3:Msg X14:Msg --> 2 X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> u(#1:Msg, #10:Msg) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 29 rewrites: 141 Msg: g(f(g(g(#1:Msg, u(#6:Msg, #9:Msg)), #2:Msg), u(g(#3:Msg, #1:Msg), g( #4:Msg, g(#5:Msg, #6:Msg)))), f(u(#9:Msg, f(#4:Msg, u(#6:Msg, #9:Msg))), g( f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> u(#6:Msg, #9:Msg) X16:Msg --> #2:Msg X14:Msg --> 2 X12:Msg --> #3:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> #6:Msg X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 30 rewrites: 141 Msg: g(f(g(g(#1:Msg, #2:Msg), #3:Msg), u(g(#4:Msg, #1:Msg), g(#5:Msg, g(#6:Msg, u(#2:Msg, #9:Msg))))), f(u(#9:Msg, f(#5:Msg, #2:Msg)), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> 2 X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> u(#2:Msg, #9:Msg) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 31 rewrites: 141 Msg: g(f(g(g(#1:Msg, #2:Msg), #3:Msg), u(g(#4:Msg, #1:Msg), g(#5:Msg, g(#6:Msg, #2:Msg)))), f(f(#5:Msg, #2:Msg), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> 2 X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> #2:Msg X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 32 rewrites: 141 Msg: g(f(g(g(#1:Msg, #2:Msg), #3:Msg), u(g(#4:Msg, #1:Msg), g(#5:Msg, g(#6:Msg, u(#9:Msg, f(#5:Msg, #2:Msg)))))), f(u(#2:Msg, #9:Msg), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> 2 X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> u(#9:Msg, f(#5:Msg, #2:Msg)) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 33 rewrites: 141 Msg: g(f(g(g(#1:Msg, #2:Msg), #3:Msg), u(g(#4:Msg, #1:Msg), g(#5:Msg, g(#6:Msg, f(#5:Msg, #2:Msg))))), f(#2:Msg, g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> 2 X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> f(#5:Msg, #2:Msg) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 34 rewrites: 141 Msg: g(f(g(g(#1:Msg, null), #2:Msg), u(g(#3:Msg, #1:Msg), g(#4:Msg, g(#5:Msg, #6:Msg)))), f(u(#6:Msg, f(#4:Msg, null)), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> null X16:Msg --> #2:Msg X14:Msg --> 2 X12:Msg --> #3:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> #6:Msg X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 35 rewrites: 141 Msg: g(f(g(g(#1:Msg, #2:Msg), #3:Msg), u(g(#4:Msg, #1:Msg), g(#5:Msg, g(#6:Msg, null)))), f(u(#2:Msg, f(#5:Msg, #2:Msg)), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> 2 X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> null X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 36 rewrites: 141 Msg: g(f(u(2, #1:Msg), null), f(u(#4:Msg, #5:Msg, f(#2:Msg, #5:Msg)), g(f( #6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#3:Msg, #4:Msg) X15:Msg --> #5:Msg X16:Msg --> #8:Msg X14:Msg --> u(#1:Msg, g(g(g(#3:Msg, #4:Msg), #5:Msg), #8:Msg)) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #3:Msg X9:Msg --> #4:Msg X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 37 rewrites: 141 Msg: g(f(u(2, #2:Msg), u(g(#3:Msg, #4:Msg), g(#5:Msg, g(#6:Msg, u(#1:Msg, #11:Msg))))), f(u(#10:Msg, #11:Msg, f(#5:Msg, u(#1:Msg, #10:Msg))), g(f( #7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #4:Msg X15:Msg --> u(#1:Msg, #10:Msg) X16:Msg --> #9:Msg X14:Msg --> u(#2:Msg, g(g(#4:Msg, u(#1:Msg, #10:Msg)), #9:Msg)) X12:Msg --> #3:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> u(#1:Msg, #11:Msg) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 38 rewrites: 141 Msg: g(f(u(2, #1:Msg), u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, #6:Msg)))), f( u(#10:Msg, f(#4:Msg, u(#6:Msg, #10:Msg))), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #3:Msg X15:Msg --> u(#6:Msg, #10:Msg) X16:Msg --> #9:Msg X14:Msg --> u(#1:Msg, g(g(#3:Msg, u(#6:Msg, #10:Msg)), #9:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> #6:Msg X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 39 rewrites: 141 Msg: g(f(u(2, #1:Msg), u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, u(#6:Msg, #10:Msg))))), f(u(#10:Msg, f(#4:Msg, #6:Msg)), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #3:Msg X15:Msg --> #6:Msg X16:Msg --> #9:Msg X14:Msg --> u(#1:Msg, g(g(#3:Msg, #6:Msg), #9:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> u(#6:Msg, #10:Msg) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 40 rewrites: 141 Msg: g(f(u(2, #1:Msg), u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, #6:Msg)))), f( f(#4:Msg, #6:Msg), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #3:Msg X15:Msg --> #6:Msg X16:Msg --> #9:Msg X14:Msg --> u(#1:Msg, g(g(#3:Msg, #6:Msg), #9:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> #6:Msg X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 41 rewrites: 141 Msg: g(f(u(2, #1:Msg), u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, u(#10:Msg, f( #4:Msg, #6:Msg)))))), f(u(#6:Msg, #10:Msg), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #3:Msg X15:Msg --> #6:Msg X16:Msg --> #9:Msg X14:Msg --> u(#1:Msg, g(g(#3:Msg, #6:Msg), #9:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> u(#10:Msg, f(#4:Msg, #6:Msg)) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 42 rewrites: 141 Msg: g(f(u(2, #1:Msg), u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, f(#4:Msg, #6:Msg))))), f(#6:Msg, g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #3:Msg X15:Msg --> #6:Msg X16:Msg --> #9:Msg X14:Msg --> u(#1:Msg, g(g(#3:Msg, #6:Msg), #9:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> f(#4:Msg, #6:Msg) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 43 rewrites: 141 Msg: g(f(u(2, #1:Msg), u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, #6:Msg)))), f( u(#6:Msg, f(#4:Msg, null)), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #3:Msg X15:Msg --> null X16:Msg --> #9:Msg X14:Msg --> u(#1:Msg, g(g(#3:Msg, null), #9:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> #6:Msg X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 44 rewrites: 141 Msg: g(f(u(2, #1:Msg), u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, null)))), f(u( #6:Msg, f(#4:Msg, #6:Msg)), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #3:Msg X15:Msg --> #6:Msg X16:Msg --> #9:Msg X14:Msg --> u(#1:Msg, g(g(#3:Msg, #6:Msg), #9:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> null X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 45 rewrites: 141 Msg: g(f(2, null), f(u(#3:Msg, #4:Msg, f(#1:Msg, #4:Msg)), g(f(#5:Msg, #5:Msg), g(3, #6:Msg)))) X3:Msg --> g(#2:Msg, #3:Msg) X15:Msg --> #4:Msg X16:Msg --> #7:Msg X14:Msg --> g(g(g(#2:Msg, #3:Msg), #4:Msg), #7:Msg) X12:Msg --> #1:Msg X8:Msg --> #1:Msg X10:Msg --> #2:Msg X9:Msg --> #3:Msg X2:Msg --> #5:Msg X6:Msg --> #6:Msg Variant 46 rewrites: 141 Msg: g(f(2, u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, u(#1:Msg, #10:Msg))))), f( u(#9:Msg, #10:Msg, f(#4:Msg, u(#1:Msg, #9:Msg))), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> #3:Msg X15:Msg --> u(#1:Msg, #9:Msg) X16:Msg --> #8:Msg X14:Msg --> g(g(#3:Msg, u(#1:Msg, #9:Msg)), #8:Msg) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> u(#1:Msg, #10:Msg) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 47 rewrites: 141 Msg: g(f(2, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, #5:Msg)))), f(u(#9:Msg, f( #3:Msg, u(#5:Msg, #9:Msg))), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> #2:Msg X15:Msg --> u(#5:Msg, #9:Msg) X16:Msg --> #8:Msg X14:Msg --> g(g(#2:Msg, u(#5:Msg, #9:Msg)), #8:Msg) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> #5:Msg X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 48 rewrites: 141 Msg: g(f(2, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, u(#5:Msg, #9:Msg))))), f( u(#9:Msg, f(#3:Msg, #5:Msg)), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #5:Msg X16:Msg --> #8:Msg X14:Msg --> g(g(#2:Msg, #5:Msg), #8:Msg) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> u(#5:Msg, #9:Msg) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 49 rewrites: 141 Msg: g(f(2, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, #5:Msg)))), f(f(#3:Msg, #5:Msg), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #5:Msg X16:Msg --> #8:Msg X14:Msg --> g(g(#2:Msg, #5:Msg), #8:Msg) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> #5:Msg X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 50 rewrites: 141 Msg: g(f(2, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, u(#9:Msg, f(#3:Msg, #5:Msg)))))), f(u(#5:Msg, #9:Msg), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #5:Msg X16:Msg --> #8:Msg X14:Msg --> g(g(#2:Msg, #5:Msg), #8:Msg) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> u(#9:Msg, f(#3:Msg, #5:Msg)) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 51 rewrites: 141 Msg: g(f(2, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, f(#3:Msg, #5:Msg))))), f( #5:Msg, g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #5:Msg X16:Msg --> #8:Msg X14:Msg --> g(g(#2:Msg, #5:Msg), #8:Msg) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> f(#3:Msg, #5:Msg) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 52 rewrites: 141 Msg: g(f(2, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, #5:Msg)))), f(u(#5:Msg, f( #3:Msg, null)), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> #2:Msg X15:Msg --> null X16:Msg --> #8:Msg X14:Msg --> g(g(#2:Msg, null), #8:Msg) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> #5:Msg X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 53 rewrites: 141 Msg: g(f(2, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, null)))), f(u(#5:Msg, f( #3:Msg, #5:Msg)), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #5:Msg X16:Msg --> #8:Msg X14:Msg --> g(g(#2:Msg, #5:Msg), #8:Msg) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> null X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 54 rewrites: 141 Msg: g(f(u(2, g(g(g(#4:Msg, #5:Msg), #1:Msg), #2:Msg)), null), f(u(#1:Msg, #5:Msg, f(#3:Msg, #1:Msg)), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#4:Msg, #5:Msg) X15:Msg --> #1:Msg X16:Msg --> #2:Msg X14:Msg --> null X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> #5:Msg X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 55 rewrites: 141 Msg: g(f(u(2, g(g(#2:Msg, u(#1:Msg, #9:Msg)), #3:Msg)), u(g(#4:Msg, #2:Msg), g( #5:Msg, g(#6:Msg, u(#1:Msg, #10:Msg))))), f(u(#9:Msg, #10:Msg, f(#5:Msg, u( #1:Msg, #9:Msg))), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #2:Msg X15:Msg --> u(#1:Msg, #9:Msg) X16:Msg --> #3:Msg X14:Msg --> null X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> u(#1:Msg, #10:Msg) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 56 rewrites: 141 Msg: g(f(u(2, g(g(#1:Msg, u(#6:Msg, #9:Msg)), #2:Msg)), u(g(#3:Msg, #1:Msg), g( #4:Msg, g(#5:Msg, #6:Msg)))), f(u(#9:Msg, f(#4:Msg, u(#6:Msg, #9:Msg))), g( f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> u(#6:Msg, #9:Msg) X16:Msg --> #2:Msg X14:Msg --> null X12:Msg --> #3:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> #6:Msg X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 57 rewrites: 141 Msg: g(f(u(2, g(g(#1:Msg, #2:Msg), #3:Msg)), u(g(#4:Msg, #1:Msg), g(#5:Msg, g( #6:Msg, u(#2:Msg, #9:Msg))))), f(u(#9:Msg, f(#5:Msg, #2:Msg)), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> null X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> u(#2:Msg, #9:Msg) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 58 rewrites: 141 Msg: g(f(u(2, g(g(#1:Msg, #2:Msg), #3:Msg)), u(g(#4:Msg, #1:Msg), g(#5:Msg, g( #6:Msg, #2:Msg)))), f(f(#5:Msg, #2:Msg), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> null X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> #2:Msg X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 59 rewrites: 141 Msg: g(f(u(2, g(g(#1:Msg, #2:Msg), #3:Msg)), u(g(#4:Msg, #1:Msg), g(#5:Msg, g( #6:Msg, u(#9:Msg, f(#5:Msg, #2:Msg)))))), f(u(#2:Msg, #9:Msg), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> null X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> u(#9:Msg, f(#5:Msg, #2:Msg)) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 60 rewrites: 141 Msg: g(f(u(2, g(g(#1:Msg, #2:Msg), #3:Msg)), u(g(#4:Msg, #1:Msg), g(#5:Msg, g( #6:Msg, f(#5:Msg, #2:Msg))))), f(#2:Msg, g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> null X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> f(#5:Msg, #2:Msg) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 61 rewrites: 141 Msg: g(f(u(2, g(g(#1:Msg, null), #2:Msg)), u(g(#3:Msg, #1:Msg), g(#4:Msg, g( #5:Msg, #6:Msg)))), f(u(#6:Msg, f(#4:Msg, null)), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> null X16:Msg --> #2:Msg X14:Msg --> null X12:Msg --> #3:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> #6:Msg X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 62 rewrites: 141 Msg: g(f(u(2, g(g(#1:Msg, #2:Msg), #3:Msg)), u(g(#4:Msg, #1:Msg), g(#5:Msg, g( #6:Msg, null)))), f(u(#2:Msg, f(#5:Msg, #2:Msg)), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #1:Msg X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> null X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> null X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 63 rewrites: 141 Msg: g(f(u(2, #2:Msg, g(g(g(#3:Msg, u(#1:Msg, #9:Msg)), u(#1:Msg, #8:Msg)), #4:Msg)), null), f(u(#8:Msg, #9:Msg, f(#5:Msg, u(#1:Msg, #8:Msg))), g(f( #6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#3:Msg, u(#1:Msg, #9:Msg)) X15:Msg --> u(#1:Msg, #8:Msg) X16:Msg --> #4:Msg X14:Msg --> #2:Msg X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #3:Msg X9:Msg --> u(#1:Msg, #9:Msg) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 64 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(g(#2:Msg, #3:Msg), u(#3:Msg, #8:Msg)), #4:Msg)), null), f(u(#8:Msg, f(#5:Msg, u(#3:Msg, #8:Msg))), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, #3:Msg) X15:Msg --> u(#3:Msg, #8:Msg) X16:Msg --> #4:Msg X14:Msg --> #1:Msg X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #2:Msg X9:Msg --> #3:Msg X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 65 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(g(#2:Msg, u(#3:Msg, #8:Msg)), #3:Msg), #4:Msg)), null), f(u(#8:Msg, f(#5:Msg, #3:Msg)), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, u(#3:Msg, #8:Msg)) X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> #1:Msg X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #2:Msg X9:Msg --> u(#3:Msg, #8:Msg) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 66 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(g(#2:Msg, #3:Msg), #3:Msg), #4:Msg)), null), f(f( #5:Msg, #3:Msg), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, #3:Msg) X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> #1:Msg X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #2:Msg X9:Msg --> #3:Msg X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 67 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(g(#2:Msg, u(#8:Msg, f(#5:Msg, #3:Msg))), #3:Msg), #4:Msg)), null), f(u(#3:Msg, #8:Msg), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, u(#8:Msg, f(#5:Msg, #3:Msg))) X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> #1:Msg X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #2:Msg X9:Msg --> u(#8:Msg, f(#5:Msg, #3:Msg)) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 68 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(g(#2:Msg, f(#5:Msg, #3:Msg)), #3:Msg), #4:Msg)), null), f(#3:Msg, g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, f(#5:Msg, #3:Msg)) X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> #1:Msg X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #2:Msg X9:Msg --> f(#5:Msg, #3:Msg) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 69 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(g(#2:Msg, #3:Msg), null), #4:Msg)), null), f(u( #3:Msg, f(#5:Msg, null)), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, #3:Msg) X15:Msg --> null X16:Msg --> #4:Msg X14:Msg --> #1:Msg X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #2:Msg X9:Msg --> #3:Msg X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 70 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(g(#2:Msg, null), #3:Msg), #4:Msg)), null), f(u( #3:Msg, f(#5:Msg, #3:Msg)), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, null) X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> #1:Msg X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #2:Msg X9:Msg --> null X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 71 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(#2:Msg, u(#3:Msg, #4:Msg)), #5:Msg)), u(g(#6:Msg, #2:Msg), g(#7:Msg, g(#8:Msg, u(#3:Msg, #11:Msg, f(#7:Msg, u(#3:Msg, #4:Msg))))))), f(u(#4:Msg, #11:Msg), g(f(#9:Msg, #9:Msg), g(3, #10:Msg)))) X3:Msg --> #2:Msg X15:Msg --> u(#3:Msg, #4:Msg) X16:Msg --> #5:Msg X14:Msg --> #1:Msg X12:Msg --> #6:Msg X8:Msg --> #7:Msg X10:Msg --> #8:Msg X9:Msg --> u(#3:Msg, #11:Msg, f(#7:Msg, u(#3:Msg, #4:Msg))) X2:Msg --> #9:Msg X6:Msg --> #10:Msg Variant 72 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(#2:Msg, u(#3:Msg, #4:Msg)), #5:Msg)), u(g(#6:Msg, #2:Msg), g(#7:Msg, g(#8:Msg, u(#3:Msg, f(#7:Msg, u(#3:Msg, #4:Msg))))))), f(#4:Msg, g(f(#9:Msg, #9:Msg), g(3, #10:Msg)))) X3:Msg --> #2:Msg X15:Msg --> u(#3:Msg, #4:Msg) X16:Msg --> #5:Msg X14:Msg --> #1:Msg X12:Msg --> #6:Msg X8:Msg --> #7:Msg X10:Msg --> #8:Msg X9:Msg --> u(#3:Msg, f(#7:Msg, u(#3:Msg, #4:Msg))) X2:Msg --> #9:Msg X6:Msg --> #10:Msg Variant 73 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(#2:Msg, #3:Msg), #4:Msg)), u(g(#5:Msg, #2:Msg), g( #6:Msg, g(#7:Msg, u(#3:Msg, f(#6:Msg, #3:Msg)))))), f(null, g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> #1:Msg X12:Msg --> #5:Msg X8:Msg --> #6:Msg X10:Msg --> #7:Msg X9:Msg --> u(#3:Msg, f(#6:Msg, #3:Msg)) X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 74 rewrites: 141 Msg: g(f(u(2, #2:Msg, g(g(#3:Msg, #4:Msg), #5:Msg)), u(g(#6:Msg, #3:Msg), g( #7:Msg, g(#8:Msg, u(#1:Msg, #4:Msg, f(#7:Msg, #4:Msg)))))), f(#1:Msg, g(f( #9:Msg, #9:Msg), g(3, #10:Msg)))) X3:Msg --> #3:Msg X15:Msg --> #4:Msg X16:Msg --> #5:Msg X14:Msg --> #2:Msg X12:Msg --> #6:Msg X8:Msg --> #7:Msg X10:Msg --> #8:Msg X9:Msg --> u(#1:Msg, #4:Msg, f(#7:Msg, #4:Msg)) X2:Msg --> #9:Msg X6:Msg --> #10:Msg Variant 75 rewrites: 141 Msg: g(f(u(2, #1:Msg, g(g(#2:Msg, null), #3:Msg)), u(g(#4:Msg, #2:Msg), g( #5:Msg, g(#6:Msg, u(#7:Msg, f(#5:Msg, null)))))), f(#7:Msg, g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #2:Msg X15:Msg --> null X16:Msg --> #3:Msg X14:Msg --> #1:Msg X12:Msg --> #4:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> u(#7:Msg, f(#5:Msg, null)) X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 76 rewrites: 451 Msg: g(f(null, null), f(u(%3:Msg, %4:Msg, f(%1:Msg, %4:Msg)), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%2:Msg, %3:Msg) X15:Msg --> %4:Msg X16:Msg --> %7:Msg X14:Msg --> u(2, g(g(g(%2:Msg, %3:Msg), %4:Msg), %7:Msg)) X12:Msg --> %1:Msg X8:Msg --> %1:Msg X10:Msg --> %2:Msg X9:Msg --> %3:Msg X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 77 rewrites: 451 Msg: g(f(null, u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, u(%1:Msg, %10:Msg))))), f(u(%9:Msg, %10:Msg, f(%4:Msg, u(%1:Msg, %9:Msg))), g(f(%6:Msg, %6:Msg), g( 3, %7:Msg)))) X3:Msg --> %3:Msg X15:Msg --> u(%1:Msg, %9:Msg) X16:Msg --> %8:Msg X14:Msg --> u(2, g(g(%3:Msg, u(%1:Msg, %9:Msg)), %8:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> u(%1:Msg, %10:Msg) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 78 rewrites: 451 Msg: g(f(null, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, %5:Msg)))), f(u(%9:Msg, f(%3:Msg, u(%5:Msg, %9:Msg))), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> %2:Msg X15:Msg --> u(%5:Msg, %9:Msg) X16:Msg --> %8:Msg X14:Msg --> u(2, g(g(%2:Msg, u(%5:Msg, %9:Msg)), %8:Msg)) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> %5:Msg X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 79 rewrites: 451 Msg: g(f(null, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, u(%5:Msg, %9:Msg))))), f(u(%9:Msg, f(%3:Msg, %5:Msg)), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %5:Msg X16:Msg --> %8:Msg X14:Msg --> u(2, g(g(%2:Msg, %5:Msg), %8:Msg)) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> u(%5:Msg, %9:Msg) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 80 rewrites: 451 Msg: g(f(null, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, %5:Msg)))), f(f(%3:Msg, %5:Msg), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %5:Msg X16:Msg --> %8:Msg X14:Msg --> u(2, g(g(%2:Msg, %5:Msg), %8:Msg)) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> %5:Msg X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 81 rewrites: 451 Msg: g(f(null, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, u(%9:Msg, f(%3:Msg, %5:Msg)))))), f(u(%5:Msg, %9:Msg), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %5:Msg X16:Msg --> %8:Msg X14:Msg --> u(2, g(g(%2:Msg, %5:Msg), %8:Msg)) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> u(%9:Msg, f(%3:Msg, %5:Msg)) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 82 rewrites: 451 Msg: g(f(null, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, f(%3:Msg, %5:Msg))))), f(%5:Msg, g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %5:Msg X16:Msg --> %8:Msg X14:Msg --> u(2, g(g(%2:Msg, %5:Msg), %8:Msg)) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> f(%3:Msg, %5:Msg) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 83 rewrites: 451 Msg: g(f(null, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, %5:Msg)))), f(u(%5:Msg, f(%3:Msg, null)), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> %2:Msg X15:Msg --> null X16:Msg --> %8:Msg X14:Msg --> u(2, g(g(%2:Msg, null), %8:Msg)) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> %5:Msg X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 84 rewrites: 451 Msg: g(f(null, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, null)))), f(u(%5:Msg, f(%3:Msg, %5:Msg)), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %5:Msg X16:Msg --> %8:Msg X14:Msg --> u(2, g(g(%2:Msg, %5:Msg), %8:Msg)) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> null X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 85 rewrites: 451 Msg: g(f(%1:Msg, null), f(u(%4:Msg, %5:Msg, f(%2:Msg, %5:Msg)), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%3:Msg, %4:Msg) X15:Msg --> %5:Msg X16:Msg --> %8:Msg X14:Msg --> u(2, %1:Msg, g(g(g(%3:Msg, %4:Msg), %5:Msg), %8:Msg)) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %3:Msg X9:Msg --> %4:Msg X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 86 rewrites: 451 Msg: g(f(%2:Msg, u(g(%3:Msg, %4:Msg), g(%5:Msg, g(%6:Msg, u(%1:Msg, %11:Msg))))), f(u(%10:Msg, %11:Msg, f(%5:Msg, u(%1:Msg, %10:Msg))), g(f( %7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %4:Msg X15:Msg --> u(%1:Msg, %10:Msg) X16:Msg --> %9:Msg X14:Msg --> u(2, %2:Msg, g(g(%4:Msg, u(%1:Msg, %10:Msg)), %9:Msg)) X12:Msg --> %3:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> u(%1:Msg, %11:Msg) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 87 rewrites: 451 Msg: g(f(%1:Msg, u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, %6:Msg)))), f(u( %10:Msg, f(%4:Msg, u(%6:Msg, %10:Msg))), g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %3:Msg X15:Msg --> u(%6:Msg, %10:Msg) X16:Msg --> %9:Msg X14:Msg --> u(2, %1:Msg, g(g(%3:Msg, u(%6:Msg, %10:Msg)), %9:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> %6:Msg X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 88 rewrites: 451 Msg: g(f(%1:Msg, u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, u(%6:Msg, %10:Msg))))), f(u(%10:Msg, f(%4:Msg, %6:Msg)), g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %3:Msg X15:Msg --> %6:Msg X16:Msg --> %9:Msg X14:Msg --> u(2, %1:Msg, g(g(%3:Msg, %6:Msg), %9:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> u(%6:Msg, %10:Msg) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 89 rewrites: 451 Msg: g(f(%1:Msg, u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, %6:Msg)))), f(f( %4:Msg, %6:Msg), g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %3:Msg X15:Msg --> %6:Msg X16:Msg --> %9:Msg X14:Msg --> u(2, %1:Msg, g(g(%3:Msg, %6:Msg), %9:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> %6:Msg X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 90 rewrites: 451 Msg: g(f(%1:Msg, u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, u(%10:Msg, f(%4:Msg, %6:Msg)))))), f(u(%6:Msg, %10:Msg), g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %3:Msg X15:Msg --> %6:Msg X16:Msg --> %9:Msg X14:Msg --> u(2, %1:Msg, g(g(%3:Msg, %6:Msg), %9:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> u(%10:Msg, f(%4:Msg, %6:Msg)) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 91 rewrites: 451 Msg: g(f(%1:Msg, u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, f(%4:Msg, %6:Msg))))), f(%6:Msg, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %3:Msg X15:Msg --> %6:Msg X16:Msg --> %9:Msg X14:Msg --> u(2, %1:Msg, g(g(%3:Msg, %6:Msg), %9:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> f(%4:Msg, %6:Msg) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 92 rewrites: 451 Msg: g(f(%1:Msg, u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, %6:Msg)))), f(u( %6:Msg, f(%4:Msg, null)), g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %3:Msg X15:Msg --> null X16:Msg --> %9:Msg X14:Msg --> u(2, %1:Msg, g(g(%3:Msg, null), %9:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> %6:Msg X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 93 rewrites: 451 Msg: g(f(%1:Msg, u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, null)))), f(u(%6:Msg, f(%4:Msg, %6:Msg)), g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %3:Msg X15:Msg --> %6:Msg X16:Msg --> %9:Msg X14:Msg --> u(2, %1:Msg, g(g(%3:Msg, %6:Msg), %9:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> null X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 94 rewrites: 451 Msg: g(f(u(%2:Msg, g(g(g(%3:Msg, u(%1:Msg, %9:Msg)), u(%1:Msg, %8:Msg)), %4:Msg)), null), f(u(%8:Msg, %9:Msg, f(%5:Msg, u(%1:Msg, %8:Msg))), g(f( %6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%3:Msg, u(%1:Msg, %9:Msg)) X15:Msg --> u(%1:Msg, %8:Msg) X16:Msg --> %4:Msg X14:Msg --> u(2, %2:Msg) X12:Msg --> %5:Msg X8:Msg --> %5:Msg X10:Msg --> %3:Msg X9:Msg --> u(%1:Msg, %9:Msg) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 95 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(g(%2:Msg, %3:Msg), u(%3:Msg, %8:Msg)), %4:Msg)), null), f(u(%8:Msg, f(%5:Msg, u(%3:Msg, %8:Msg))), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%2:Msg, %3:Msg) X15:Msg --> u(%3:Msg, %8:Msg) X16:Msg --> %4:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %5:Msg X8:Msg --> %5:Msg X10:Msg --> %2:Msg X9:Msg --> %3:Msg X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 96 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(g(%2:Msg, u(%3:Msg, %8:Msg)), %3:Msg), %4:Msg)), null), f(u(%8:Msg, f(%5:Msg, %3:Msg)), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%2:Msg, u(%3:Msg, %8:Msg)) X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %5:Msg X8:Msg --> %5:Msg X10:Msg --> %2:Msg X9:Msg --> u(%3:Msg, %8:Msg) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 97 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(g(%2:Msg, %3:Msg), %3:Msg), %4:Msg)), null), f(f(%5:Msg, %3:Msg), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%2:Msg, %3:Msg) X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %5:Msg X8:Msg --> %5:Msg X10:Msg --> %2:Msg X9:Msg --> %3:Msg X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 98 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(g(%2:Msg, u(%8:Msg, f(%5:Msg, %3:Msg))), %3:Msg), %4:Msg)), null), f(u(%3:Msg, %8:Msg), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%2:Msg, u(%8:Msg, f(%5:Msg, %3:Msg))) X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %5:Msg X8:Msg --> %5:Msg X10:Msg --> %2:Msg X9:Msg --> u(%8:Msg, f(%5:Msg, %3:Msg)) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 99 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(g(%2:Msg, f(%5:Msg, %3:Msg)), %3:Msg), %4:Msg)), null), f(%3:Msg, g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%2:Msg, f(%5:Msg, %3:Msg)) X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %5:Msg X8:Msg --> %5:Msg X10:Msg --> %2:Msg X9:Msg --> f(%5:Msg, %3:Msg) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 100 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(g(%2:Msg, %3:Msg), null), %4:Msg)), null), f(u(%3:Msg, f(%5:Msg, null)), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%2:Msg, %3:Msg) X15:Msg --> null X16:Msg --> %4:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %5:Msg X8:Msg --> %5:Msg X10:Msg --> %2:Msg X9:Msg --> %3:Msg X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 101 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(g(%2:Msg, null), %3:Msg), %4:Msg)), null), f(u(%3:Msg, f(%5:Msg, %3:Msg)), g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%2:Msg, null) X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %5:Msg X8:Msg --> %5:Msg X10:Msg --> %2:Msg X9:Msg --> null X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 102 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(%2:Msg, u(%3:Msg, %4:Msg)), %5:Msg)), u(g(%6:Msg, %2:Msg), g(%7:Msg, g(%8:Msg, u(%3:Msg, %11:Msg, f(%7:Msg, u(%3:Msg, %4:Msg))))))), f(u(%4:Msg, %11:Msg), g(f(%9:Msg, %9:Msg), g(3, %10:Msg)))) X3:Msg --> %2:Msg X15:Msg --> u(%3:Msg, %4:Msg) X16:Msg --> %5:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %6:Msg X8:Msg --> %7:Msg X10:Msg --> %8:Msg X9:Msg --> u(%3:Msg, %11:Msg, f(%7:Msg, u(%3:Msg, %4:Msg))) X2:Msg --> %9:Msg X6:Msg --> %10:Msg Variant 103 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(%2:Msg, u(%3:Msg, %4:Msg)), %5:Msg)), u(g(%6:Msg, %2:Msg), g(%7:Msg, g(%8:Msg, u(%3:Msg, f(%7:Msg, u(%3:Msg, %4:Msg))))))), f(%4:Msg, g(f(%9:Msg, %9:Msg), g(3, %10:Msg)))) X3:Msg --> %2:Msg X15:Msg --> u(%3:Msg, %4:Msg) X16:Msg --> %5:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %6:Msg X8:Msg --> %7:Msg X10:Msg --> %8:Msg X9:Msg --> u(%3:Msg, f(%7:Msg, u(%3:Msg, %4:Msg))) X2:Msg --> %9:Msg X6:Msg --> %10:Msg Variant 104 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(%2:Msg, %3:Msg), %4:Msg)), u(g(%5:Msg, %2:Msg), g( %6:Msg, g(%7:Msg, u(%3:Msg, f(%6:Msg, %3:Msg)))))), f(null, g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> u(%3:Msg, f(%6:Msg, %3:Msg)) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 105 rewrites: 451 Msg: g(f(u(%2:Msg, g(g(%3:Msg, %4:Msg), %5:Msg)), u(g(%6:Msg, %3:Msg), g( %7:Msg, g(%8:Msg, u(%1:Msg, %4:Msg, f(%7:Msg, %4:Msg)))))), f(%1:Msg, g(f( %9:Msg, %9:Msg), g(3, %10:Msg)))) X3:Msg --> %3:Msg X15:Msg --> %4:Msg X16:Msg --> %5:Msg X14:Msg --> u(2, %2:Msg) X12:Msg --> %6:Msg X8:Msg --> %7:Msg X10:Msg --> %8:Msg X9:Msg --> u(%1:Msg, %4:Msg, f(%7:Msg, %4:Msg)) X2:Msg --> %9:Msg X6:Msg --> %10:Msg Variant 106 rewrites: 451 Msg: g(f(u(%1:Msg, g(g(%2:Msg, null), %3:Msg)), u(g(%4:Msg, %2:Msg), g(%5:Msg, g(%6:Msg, u(%7:Msg, f(%5:Msg, null)))))), f(%7:Msg, g(f(%8:Msg, %8:Msg), g( 3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> null X16:Msg --> %3:Msg X14:Msg --> u(2, %1:Msg) X12:Msg --> %4:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> u(%7:Msg, f(%5:Msg, null)) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 107 rewrites: 451 Msg: g(f(g(g(g(%2:Msg, u(%1:Msg, %8:Msg)), u(%1:Msg, %7:Msg)), %3:Msg), null), f(u(%7:Msg, %8:Msg, f(%4:Msg, u(%1:Msg, %7:Msg))), g(f(%5:Msg, %5:Msg), g( 3, %6:Msg)))) X3:Msg --> g(%2:Msg, u(%1:Msg, %8:Msg)) X15:Msg --> u(%1:Msg, %7:Msg) X16:Msg --> %3:Msg X14:Msg --> 2 X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %2:Msg X9:Msg --> u(%1:Msg, %8:Msg) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 108 rewrites: 451 Msg: g(f(g(g(g(%1:Msg, %2:Msg), u(%2:Msg, %7:Msg)), %3:Msg), null), f(u(%7:Msg, f(%4:Msg, u(%2:Msg, %7:Msg))), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, %2:Msg) X15:Msg --> u(%2:Msg, %7:Msg) X16:Msg --> %3:Msg X14:Msg --> 2 X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> %2:Msg X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 109 rewrites: 451 Msg: g(f(g(g(g(%1:Msg, u(%2:Msg, %7:Msg)), %2:Msg), %3:Msg), null), f(u(%7:Msg, f(%4:Msg, %2:Msg)), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, u(%2:Msg, %7:Msg)) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> 2 X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> u(%2:Msg, %7:Msg) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 110 rewrites: 451 Msg: g(f(g(g(g(%1:Msg, %2:Msg), %2:Msg), %3:Msg), null), f(f(%4:Msg, %2:Msg), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, %2:Msg) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> 2 X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> %2:Msg X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 111 rewrites: 451 Msg: g(f(g(g(g(%1:Msg, u(%7:Msg, f(%4:Msg, %2:Msg))), %2:Msg), %3:Msg), null), f(u(%2:Msg, %7:Msg), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, u(%7:Msg, f(%4:Msg, %2:Msg))) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> 2 X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> u(%7:Msg, f(%4:Msg, %2:Msg)) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 112 rewrites: 451 Msg: g(f(g(g(g(%1:Msg, f(%4:Msg, %2:Msg)), %2:Msg), %3:Msg), null), f(%2:Msg, g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, f(%4:Msg, %2:Msg)) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> 2 X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> f(%4:Msg, %2:Msg) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 113 rewrites: 451 Msg: g(f(g(g(g(%1:Msg, %2:Msg), null), %3:Msg), null), f(u(%2:Msg, f(%4:Msg, null)), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, %2:Msg) X15:Msg --> null X16:Msg --> %3:Msg X14:Msg --> 2 X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> %2:Msg X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 114 rewrites: 451 Msg: g(f(g(g(g(%1:Msg, null), %2:Msg), %3:Msg), null), f(u(%2:Msg, f(%4:Msg, %2:Msg)), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, null) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> 2 X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> null X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 115 rewrites: 451 Msg: g(f(g(g(%1:Msg, u(%2:Msg, %3:Msg)), %4:Msg), u(g(%5:Msg, %1:Msg), g( %6:Msg, g(%7:Msg, u(%2:Msg, %10:Msg, f(%6:Msg, u(%2:Msg, %3:Msg))))))), f( u(%3:Msg, %10:Msg), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %1:Msg X15:Msg --> u(%2:Msg, %3:Msg) X16:Msg --> %4:Msg X14:Msg --> 2 X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> u(%2:Msg, %10:Msg, f(%6:Msg, u(%2:Msg, %3:Msg))) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 116 rewrites: 451 Msg: g(f(g(g(%1:Msg, u(%2:Msg, %3:Msg)), %4:Msg), u(g(%5:Msg, %1:Msg), g( %6:Msg, g(%7:Msg, u(%2:Msg, f(%6:Msg, u(%2:Msg, %3:Msg))))))), f(%3:Msg, g( f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %1:Msg X15:Msg --> u(%2:Msg, %3:Msg) X16:Msg --> %4:Msg X14:Msg --> 2 X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> u(%2:Msg, f(%6:Msg, u(%2:Msg, %3:Msg))) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 117 rewrites: 451 Msg: g(f(g(g(%1:Msg, %2:Msg), %3:Msg), u(g(%4:Msg, %1:Msg), g(%5:Msg, g(%6:Msg, u(%2:Msg, f(%5:Msg, %2:Msg)))))), f(null, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %1:Msg X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> 2 X12:Msg --> %4:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> u(%2:Msg, f(%5:Msg, %2:Msg)) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 118 rewrites: 451 Msg: g(f(g(g(%2:Msg, %3:Msg), %4:Msg), u(g(%5:Msg, %2:Msg), g(%6:Msg, g(%7:Msg, u(%1:Msg, %3:Msg, f(%6:Msg, %3:Msg)))))), f(%1:Msg, g(f(%8:Msg, %8:Msg), g( 3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> 2 X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> u(%1:Msg, %3:Msg, f(%6:Msg, %3:Msg)) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 119 rewrites: 451 Msg: g(f(g(g(%1:Msg, null), %2:Msg), u(g(%3:Msg, %1:Msg), g(%4:Msg, g(%5:Msg, u(%6:Msg, f(%4:Msg, null)))))), f(%6:Msg, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %1:Msg X15:Msg --> null X16:Msg --> %2:Msg X14:Msg --> 2 X12:Msg --> %3:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> u(%6:Msg, f(%4:Msg, null)) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 120 rewrites: 451 Msg: g(f(u(2, %2:Msg), null), f(u(%8:Msg, %9:Msg, f(%3:Msg, u(%1:Msg, %9:Msg))), g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, u(%1:Msg, %8:Msg)) X15:Msg --> u(%1:Msg, %9:Msg) X16:Msg --> %7:Msg X14:Msg --> u(%2:Msg, g(g(g(%6:Msg, u(%1:Msg, %8:Msg)), u(%1:Msg, %9:Msg)), %7:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %6:Msg X9:Msg --> u(%1:Msg, %8:Msg) X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 121 rewrites: 451 Msg: g(f(u(2, %1:Msg), null), f(u(%8:Msg, f(%3:Msg, %2:Msg)), g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, u(%2:Msg, %8:Msg)) X15:Msg --> %2:Msg X16:Msg --> %7:Msg X14:Msg --> u(%1:Msg, g(g(g(%6:Msg, u(%2:Msg, %8:Msg)), %2:Msg), %7:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %6:Msg X9:Msg --> u(%2:Msg, %8:Msg) X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 122 rewrites: 451 Msg: g(f(u(2, %1:Msg), null), f(u(%8:Msg, f(%3:Msg, u(%2:Msg, %8:Msg))), g(f( %4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, %2:Msg) X15:Msg --> u(%2:Msg, %8:Msg) X16:Msg --> %7:Msg X14:Msg --> u(%1:Msg, g(g(g(%6:Msg, %2:Msg), u(%2:Msg, %8:Msg)), %7:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %6:Msg X9:Msg --> %2:Msg X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 123 rewrites: 451 Msg: g(f(u(2, %1:Msg), null), f(f(%3:Msg, %2:Msg), g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, %2:Msg) X15:Msg --> %2:Msg X16:Msg --> %7:Msg X14:Msg --> u(%1:Msg, g(g(g(%6:Msg, %2:Msg), %2:Msg), %7:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %6:Msg X9:Msg --> %2:Msg X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 124 rewrites: 451 Msg: g(f(u(2, %1:Msg), null), f(u(%2:Msg, %8:Msg), g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, u(%8:Msg, f(%3:Msg, %2:Msg))) X15:Msg --> %2:Msg X16:Msg --> %7:Msg X14:Msg --> u(%1:Msg, g(g(g(%6:Msg, u(%8:Msg, f(%3:Msg, %2:Msg))), %2:Msg), %7:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %6:Msg X9:Msg --> u(%8:Msg, f(%3:Msg, %2:Msg)) X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 125 rewrites: 451 Msg: g(f(u(2, %1:Msg), null), f(%2:Msg, g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, f(%3:Msg, %2:Msg)) X15:Msg --> %2:Msg X16:Msg --> %7:Msg X14:Msg --> u(%1:Msg, g(g(g(%6:Msg, f(%3:Msg, %2:Msg)), %2:Msg), %7:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %6:Msg X9:Msg --> f(%3:Msg, %2:Msg) X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 126 rewrites: 451 Msg: g(f(u(2, %1:Msg), null), f(u(%2:Msg, f(%3:Msg, %2:Msg)), g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, null) X15:Msg --> %2:Msg X16:Msg --> %7:Msg X14:Msg --> u(%1:Msg, g(g(g(%6:Msg, null), %2:Msg), %7:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %6:Msg X9:Msg --> null X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 127 rewrites: 451 Msg: g(f(u(2, %1:Msg), null), f(u(%2:Msg, f(%3:Msg, null)), g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, %2:Msg) X15:Msg --> null X16:Msg --> %7:Msg X14:Msg --> u(%1:Msg, g(g(g(%6:Msg, %2:Msg), null), %7:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %6:Msg X9:Msg --> %2:Msg X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 128 rewrites: 451 Msg: g(f(u(2, %1:Msg), u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, u(%6:Msg, %11:Msg, f(%4:Msg, u(%6:Msg, %7:Msg))))))), f(u(%7:Msg, %11:Msg), g(f( %8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %3:Msg X15:Msg --> u(%6:Msg, %7:Msg) X16:Msg --> %10:Msg X14:Msg --> u(%1:Msg, g(g(%3:Msg, u(%6:Msg, %7:Msg)), %10:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> u(%6:Msg, %11:Msg, f(%4:Msg, u(%6:Msg, %7:Msg))) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 129 rewrites: 451 Msg: g(f(u(2, %1:Msg), u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, u(%6:Msg, f( %4:Msg, u(%6:Msg, %7:Msg))))))), f(%7:Msg, g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %3:Msg X15:Msg --> u(%6:Msg, %7:Msg) X16:Msg --> %10:Msg X14:Msg --> u(%1:Msg, g(g(%3:Msg, u(%6:Msg, %7:Msg)), %10:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> u(%6:Msg, f(%4:Msg, u(%6:Msg, %7:Msg))) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 130 rewrites: 451 Msg: g(f(u(2, %1:Msg), u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, u(%6:Msg, f( %4:Msg, %6:Msg)))))), f(null, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %3:Msg X15:Msg --> %6:Msg X16:Msg --> %9:Msg X14:Msg --> u(%1:Msg, g(g(%3:Msg, %6:Msg), %9:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> u(%6:Msg, f(%4:Msg, %6:Msg)) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 131 rewrites: 451 Msg: g(f(u(2, %2:Msg), u(g(%3:Msg, %4:Msg), g(%5:Msg, g(%6:Msg, u(%1:Msg, %7:Msg, f(%5:Msg, %7:Msg)))))), f(%1:Msg, g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %4:Msg X15:Msg --> %7:Msg X16:Msg --> %10:Msg X14:Msg --> u(%2:Msg, g(g(%4:Msg, %7:Msg), %10:Msg)) X12:Msg --> %3:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> u(%1:Msg, %7:Msg, f(%5:Msg, %7:Msg)) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 132 rewrites: 451 Msg: g(f(u(2, %1:Msg), u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, u(%6:Msg, f( %4:Msg, null)))))), f(%6:Msg, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %3:Msg X15:Msg --> null X16:Msg --> %9:Msg X14:Msg --> u(%1:Msg, g(g(%3:Msg, null), %9:Msg)) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> u(%6:Msg, f(%4:Msg, null)) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 133 rewrites: 451 Msg: g(f(2, null), f(u(%7:Msg, %8:Msg, f(%2:Msg, u(%1:Msg, %8:Msg))), g(f( %3:Msg, %3:Msg), g(3, %4:Msg)))) X3:Msg --> g(%5:Msg, u(%1:Msg, %7:Msg)) X15:Msg --> u(%1:Msg, %8:Msg) X16:Msg --> %6:Msg X14:Msg --> g(g(g(%5:Msg, u(%1:Msg, %7:Msg)), u(%1:Msg, %8:Msg)), %6:Msg) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %5:Msg X9:Msg --> u(%1:Msg, %7:Msg) X2:Msg --> %3:Msg X6:Msg --> %4:Msg Variant 134 rewrites: 451 Msg: g(f(2, null), f(u(%7:Msg, f(%2:Msg, %1:Msg)), g(f(%3:Msg, %3:Msg), g(3, %4:Msg)))) X3:Msg --> g(%5:Msg, u(%1:Msg, %7:Msg)) X15:Msg --> %1:Msg X16:Msg --> %6:Msg X14:Msg --> g(g(g(%5:Msg, u(%1:Msg, %7:Msg)), %1:Msg), %6:Msg) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %5:Msg X9:Msg --> u(%1:Msg, %7:Msg) X2:Msg --> %3:Msg X6:Msg --> %4:Msg Variant 135 rewrites: 451 Msg: g(f(2, null), f(u(%7:Msg, f(%2:Msg, u(%1:Msg, %7:Msg))), g(f(%3:Msg, %3:Msg), g(3, %4:Msg)))) X3:Msg --> g(%5:Msg, %1:Msg) X15:Msg --> u(%1:Msg, %7:Msg) X16:Msg --> %6:Msg X14:Msg --> g(g(g(%5:Msg, %1:Msg), u(%1:Msg, %7:Msg)), %6:Msg) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %5:Msg X9:Msg --> %1:Msg X2:Msg --> %3:Msg X6:Msg --> %4:Msg Variant 136 rewrites: 451 Msg: g(f(2, null), f(f(%2:Msg, %1:Msg), g(f(%3:Msg, %3:Msg), g(3, %4:Msg)))) X3:Msg --> g(%5:Msg, %1:Msg) X15:Msg --> %1:Msg X16:Msg --> %6:Msg X14:Msg --> g(g(g(%5:Msg, %1:Msg), %1:Msg), %6:Msg) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %5:Msg X9:Msg --> %1:Msg X2:Msg --> %3:Msg X6:Msg --> %4:Msg Variant 137 rewrites: 451 Msg: g(f(2, null), f(u(%1:Msg, %7:Msg), g(f(%3:Msg, %3:Msg), g(3, %4:Msg)))) X3:Msg --> g(%5:Msg, u(%7:Msg, f(%2:Msg, %1:Msg))) X15:Msg --> %1:Msg X16:Msg --> %6:Msg X14:Msg --> g(g(g(%5:Msg, u(%7:Msg, f(%2:Msg, %1:Msg))), %1:Msg), %6:Msg) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %5:Msg X9:Msg --> u(%7:Msg, f(%2:Msg, %1:Msg)) X2:Msg --> %3:Msg X6:Msg --> %4:Msg Variant 138 rewrites: 451 Msg: g(f(2, null), f(%1:Msg, g(f(%3:Msg, %3:Msg), g(3, %4:Msg)))) X3:Msg --> g(%5:Msg, f(%2:Msg, %1:Msg)) X15:Msg --> %1:Msg X16:Msg --> %6:Msg X14:Msg --> g(g(g(%5:Msg, f(%2:Msg, %1:Msg)), %1:Msg), %6:Msg) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %5:Msg X9:Msg --> f(%2:Msg, %1:Msg) X2:Msg --> %3:Msg X6:Msg --> %4:Msg Variant 139 rewrites: 451 Msg: g(f(2, null), f(u(%1:Msg, f(%2:Msg, %1:Msg)), g(f(%3:Msg, %3:Msg), g(3, %4:Msg)))) X3:Msg --> g(%5:Msg, null) X15:Msg --> %1:Msg X16:Msg --> %6:Msg X14:Msg --> g(g(g(%5:Msg, null), %1:Msg), %6:Msg) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %5:Msg X9:Msg --> null X2:Msg --> %3:Msg X6:Msg --> %4:Msg Variant 140 rewrites: 451 Msg: g(f(2, null), f(u(%1:Msg, f(%2:Msg, null)), g(f(%3:Msg, %3:Msg), g(3, %4:Msg)))) X3:Msg --> g(%5:Msg, %1:Msg) X15:Msg --> null X16:Msg --> %6:Msg X14:Msg --> g(g(g(%5:Msg, %1:Msg), null), %6:Msg) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %5:Msg X9:Msg --> %1:Msg X2:Msg --> %3:Msg X6:Msg --> %4:Msg Variant 141 rewrites: 451 Msg: g(f(2, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, u(%5:Msg, %10:Msg, f( %3:Msg, u(%5:Msg, %6:Msg))))))), f(u(%6:Msg, %10:Msg), g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %2:Msg X15:Msg --> u(%5:Msg, %6:Msg) X16:Msg --> %9:Msg X14:Msg --> g(g(%2:Msg, u(%5:Msg, %6:Msg)), %9:Msg) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> u(%5:Msg, %10:Msg, f(%3:Msg, u(%5:Msg, %6:Msg))) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 142 rewrites: 451 Msg: g(f(2, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, u(%5:Msg, f(%3:Msg, u( %5:Msg, %6:Msg))))))), f(%6:Msg, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %2:Msg X15:Msg --> u(%5:Msg, %6:Msg) X16:Msg --> %9:Msg X14:Msg --> g(g(%2:Msg, u(%5:Msg, %6:Msg)), %9:Msg) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> u(%5:Msg, f(%3:Msg, u(%5:Msg, %6:Msg))) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 143 rewrites: 451 Msg: g(f(2, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, u(%5:Msg, f(%3:Msg, %5:Msg)))))), f(null, g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %5:Msg X16:Msg --> %8:Msg X14:Msg --> g(g(%2:Msg, %5:Msg), %8:Msg) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> u(%5:Msg, f(%3:Msg, %5:Msg)) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 144 rewrites: 451 Msg: g(f(2, u(g(%2:Msg, %3:Msg), g(%4:Msg, g(%5:Msg, u(%1:Msg, %6:Msg, f( %4:Msg, %6:Msg)))))), f(%1:Msg, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %3:Msg X15:Msg --> %6:Msg X16:Msg --> %9:Msg X14:Msg --> g(g(%3:Msg, %6:Msg), %9:Msg) X12:Msg --> %2:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> u(%1:Msg, %6:Msg, f(%4:Msg, %6:Msg)) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 145 rewrites: 451 Msg: g(f(2, u(g(%1:Msg, %2:Msg), g(%3:Msg, g(%4:Msg, u(%5:Msg, f(%3:Msg, null)))))), f(%5:Msg, g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> %2:Msg X15:Msg --> null X16:Msg --> %8:Msg X14:Msg --> g(g(%2:Msg, null), %8:Msg) X12:Msg --> %1:Msg X8:Msg --> %3:Msg X10:Msg --> %4:Msg X9:Msg --> u(%5:Msg, f(%3:Msg, null)) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 146 rewrites: 451 Msg: g(f(u(2, g(g(g(%2:Msg, u(%1:Msg, %8:Msg)), u(%1:Msg, %7:Msg)), %3:Msg)), null), f(u(%7:Msg, %8:Msg, f(%4:Msg, u(%1:Msg, %7:Msg))), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%2:Msg, u(%1:Msg, %8:Msg)) X15:Msg --> u(%1:Msg, %7:Msg) X16:Msg --> %3:Msg X14:Msg --> null X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %2:Msg X9:Msg --> u(%1:Msg, %8:Msg) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 147 rewrites: 451 Msg: g(f(u(2, g(g(g(%1:Msg, %2:Msg), u(%2:Msg, %7:Msg)), %3:Msg)), null), f(u( %7:Msg, f(%4:Msg, u(%2:Msg, %7:Msg))), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, %2:Msg) X15:Msg --> u(%2:Msg, %7:Msg) X16:Msg --> %3:Msg X14:Msg --> null X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> %2:Msg X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 148 rewrites: 451 Msg: g(f(u(2, g(g(g(%1:Msg, u(%2:Msg, %7:Msg)), %2:Msg), %3:Msg)), null), f(u( %7:Msg, f(%4:Msg, %2:Msg)), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, u(%2:Msg, %7:Msg)) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> null X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> u(%2:Msg, %7:Msg) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 149 rewrites: 451 Msg: g(f(u(2, g(g(g(%1:Msg, %2:Msg), %2:Msg), %3:Msg)), null), f(f(%4:Msg, %2:Msg), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, %2:Msg) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> null X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> %2:Msg X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 150 rewrites: 451 Msg: g(f(u(2, g(g(g(%1:Msg, u(%7:Msg, f(%4:Msg, %2:Msg))), %2:Msg), %3:Msg)), null), f(u(%2:Msg, %7:Msg), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, u(%7:Msg, f(%4:Msg, %2:Msg))) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> null X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> u(%7:Msg, f(%4:Msg, %2:Msg)) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 151 rewrites: 451 Msg: g(f(u(2, g(g(g(%1:Msg, f(%4:Msg, %2:Msg)), %2:Msg), %3:Msg)), null), f( %2:Msg, g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, f(%4:Msg, %2:Msg)) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> null X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> f(%4:Msg, %2:Msg) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 152 rewrites: 451 Msg: g(f(u(2, g(g(g(%1:Msg, %2:Msg), null), %3:Msg)), null), f(u(%2:Msg, f( %4:Msg, null)), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, %2:Msg) X15:Msg --> null X16:Msg --> %3:Msg X14:Msg --> null X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> %2:Msg X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 153 rewrites: 451 Msg: g(f(u(2, g(g(g(%1:Msg, null), %2:Msg), %3:Msg)), null), f(u(%2:Msg, f( %4:Msg, %2:Msg)), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%1:Msg, null) X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> null X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %1:Msg X9:Msg --> null X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 154 rewrites: 451 Msg: g(f(u(2, g(g(%1:Msg, u(%2:Msg, %3:Msg)), %4:Msg)), u(g(%5:Msg, %1:Msg), g( %6:Msg, g(%7:Msg, u(%2:Msg, %10:Msg, f(%6:Msg, u(%2:Msg, %3:Msg))))))), f( u(%3:Msg, %10:Msg), g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %1:Msg X15:Msg --> u(%2:Msg, %3:Msg) X16:Msg --> %4:Msg X14:Msg --> null X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> u(%2:Msg, %10:Msg, f(%6:Msg, u(%2:Msg, %3:Msg))) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 155 rewrites: 451 Msg: g(f(u(2, g(g(%1:Msg, u(%2:Msg, %3:Msg)), %4:Msg)), u(g(%5:Msg, %1:Msg), g( %6:Msg, g(%7:Msg, u(%2:Msg, f(%6:Msg, u(%2:Msg, %3:Msg))))))), f(%3:Msg, g( f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %1:Msg X15:Msg --> u(%2:Msg, %3:Msg) X16:Msg --> %4:Msg X14:Msg --> null X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> u(%2:Msg, f(%6:Msg, u(%2:Msg, %3:Msg))) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 156 rewrites: 451 Msg: g(f(u(2, g(g(%1:Msg, %2:Msg), %3:Msg)), u(g(%4:Msg, %1:Msg), g(%5:Msg, g( %6:Msg, u(%2:Msg, f(%5:Msg, %2:Msg)))))), f(null, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %1:Msg X15:Msg --> %2:Msg X16:Msg --> %3:Msg X14:Msg --> null X12:Msg --> %4:Msg X8:Msg --> %5:Msg X10:Msg --> %6:Msg X9:Msg --> u(%2:Msg, f(%5:Msg, %2:Msg)) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 157 rewrites: 451 Msg: g(f(u(2, g(g(%2:Msg, %3:Msg), %4:Msg)), u(g(%5:Msg, %2:Msg), g(%6:Msg, g( %7:Msg, u(%1:Msg, %3:Msg, f(%6:Msg, %3:Msg)))))), f(%1:Msg, g(f(%8:Msg, %8:Msg), g(3, %9:Msg)))) X3:Msg --> %2:Msg X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> null X12:Msg --> %5:Msg X8:Msg --> %6:Msg X10:Msg --> %7:Msg X9:Msg --> u(%1:Msg, %3:Msg, f(%6:Msg, %3:Msg)) X2:Msg --> %8:Msg X6:Msg --> %9:Msg Variant 158 rewrites: 451 Msg: g(f(u(2, g(g(%1:Msg, null), %2:Msg)), u(g(%3:Msg, %1:Msg), g(%4:Msg, g( %5:Msg, u(%6:Msg, f(%4:Msg, null)))))), f(%6:Msg, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> %1:Msg X15:Msg --> null X16:Msg --> %2:Msg X14:Msg --> null X12:Msg --> %3:Msg X8:Msg --> %4:Msg X10:Msg --> %5:Msg X9:Msg --> u(%6:Msg, f(%4:Msg, null)) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 159 rewrites: 451 Msg: g(f(u(2, %1:Msg, g(g(g(%2:Msg, u(%3:Msg, %9:Msg, f(%6:Msg, u(%3:Msg, %4:Msg)))), u(%3:Msg, %4:Msg)), %5:Msg)), null), f(u(%4:Msg, %9:Msg), g(f( %7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> g(%2:Msg, u(%3:Msg, %9:Msg, f(%6:Msg, u(%3:Msg, %4:Msg)))) X15:Msg --> u(%3:Msg, %4:Msg) X16:Msg --> %5:Msg X14:Msg --> %1:Msg X12:Msg --> %6:Msg X8:Msg --> %6:Msg X10:Msg --> %2:Msg X9:Msg --> u(%3:Msg, %9:Msg, f(%6:Msg, u(%3:Msg, %4:Msg))) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 160 rewrites: 451 Msg: g(f(u(2, %1:Msg, g(g(g(%2:Msg, u(%3:Msg, f(%6:Msg, u(%3:Msg, %4:Msg)))), u(%3:Msg, %4:Msg)), %5:Msg)), null), f(%4:Msg, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> g(%2:Msg, u(%3:Msg, f(%6:Msg, u(%3:Msg, %4:Msg)))) X15:Msg --> u(%3:Msg, %4:Msg) X16:Msg --> %5:Msg X14:Msg --> %1:Msg X12:Msg --> %6:Msg X8:Msg --> %6:Msg X10:Msg --> %2:Msg X9:Msg --> u(%3:Msg, f(%6:Msg, u(%3:Msg, %4:Msg))) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 161 rewrites: 451 Msg: g(f(u(2, %1:Msg, g(g(g(%2:Msg, u(%3:Msg, f(%5:Msg, %3:Msg))), %3:Msg), %4:Msg)), null), f(null, g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%2:Msg, u(%3:Msg, f(%5:Msg, %3:Msg))) X15:Msg --> %3:Msg X16:Msg --> %4:Msg X14:Msg --> %1:Msg X12:Msg --> %5:Msg X8:Msg --> %5:Msg X10:Msg --> %2:Msg X9:Msg --> u(%3:Msg, f(%5:Msg, %3:Msg)) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 162 rewrites: 451 Msg: g(f(u(2, %2:Msg, g(g(g(%3:Msg, u(%1:Msg, %4:Msg, f(%6:Msg, %4:Msg))), %4:Msg), %5:Msg)), null), f(%1:Msg, g(f(%7:Msg, %7:Msg), g(3, %8:Msg)))) X3:Msg --> g(%3:Msg, u(%1:Msg, %4:Msg, f(%6:Msg, %4:Msg))) X15:Msg --> %4:Msg X16:Msg --> %5:Msg X14:Msg --> %2:Msg X12:Msg --> %6:Msg X8:Msg --> %6:Msg X10:Msg --> %3:Msg X9:Msg --> u(%1:Msg, %4:Msg, f(%6:Msg, %4:Msg)) X2:Msg --> %7:Msg X6:Msg --> %8:Msg Variant 163 rewrites: 451 Msg: g(f(u(2, %1:Msg, g(g(g(%2:Msg, u(%3:Msg, f(%4:Msg, null))), null), %5:Msg)), null), f(%3:Msg, g(f(%6:Msg, %6:Msg), g(3, %7:Msg)))) X3:Msg --> g(%2:Msg, u(%3:Msg, f(%4:Msg, null))) X15:Msg --> null X16:Msg --> %5:Msg X14:Msg --> %1:Msg X12:Msg --> %4:Msg X8:Msg --> %4:Msg X10:Msg --> %2:Msg X9:Msg --> u(%3:Msg, f(%4:Msg, null)) X2:Msg --> %6:Msg X6:Msg --> %7:Msg Variant 164 rewrites: 728 Msg: g(f(null, null), f(u(#7:Msg, #8:Msg, f(#2:Msg, u(#1:Msg, #8:Msg))), g(f( #3:Msg, #3:Msg), g(3, #4:Msg)))) X3:Msg --> g(#5:Msg, u(#1:Msg, #7:Msg)) X15:Msg --> u(#1:Msg, #8:Msg) X16:Msg --> #6:Msg X14:Msg --> u(2, g(g(g(#5:Msg, u(#1:Msg, #7:Msg)), u(#1:Msg, #8:Msg)), #6:Msg)) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #5:Msg X9:Msg --> u(#1:Msg, #7:Msg) X2:Msg --> #3:Msg X6:Msg --> #4:Msg Variant 165 rewrites: 728 Msg: g(f(null, null), f(u(#7:Msg, f(#2:Msg, #1:Msg)), g(f(#3:Msg, #3:Msg), g(3, #4:Msg)))) X3:Msg --> g(#5:Msg, u(#1:Msg, #7:Msg)) X15:Msg --> #1:Msg X16:Msg --> #6:Msg X14:Msg --> u(2, g(g(g(#5:Msg, u(#1:Msg, #7:Msg)), #1:Msg), #6:Msg)) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #5:Msg X9:Msg --> u(#1:Msg, #7:Msg) X2:Msg --> #3:Msg X6:Msg --> #4:Msg Variant 166 rewrites: 728 Msg: g(f(null, null), f(u(#7:Msg, f(#2:Msg, u(#1:Msg, #7:Msg))), g(f(#3:Msg, #3:Msg), g(3, #4:Msg)))) X3:Msg --> g(#5:Msg, #1:Msg) X15:Msg --> u(#1:Msg, #7:Msg) X16:Msg --> #6:Msg X14:Msg --> u(2, g(g(g(#5:Msg, #1:Msg), u(#1:Msg, #7:Msg)), #6:Msg)) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #5:Msg X9:Msg --> #1:Msg X2:Msg --> #3:Msg X6:Msg --> #4:Msg Variant 167 rewrites: 728 Msg: g(f(null, null), f(f(#2:Msg, #1:Msg), g(f(#3:Msg, #3:Msg), g(3, #4:Msg)))) X3:Msg --> g(#5:Msg, #1:Msg) X15:Msg --> #1:Msg X16:Msg --> #6:Msg X14:Msg --> u(2, g(g(g(#5:Msg, #1:Msg), #1:Msg), #6:Msg)) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #5:Msg X9:Msg --> #1:Msg X2:Msg --> #3:Msg X6:Msg --> #4:Msg Variant 168 rewrites: 728 Msg: g(f(null, null), f(u(#1:Msg, #7:Msg), g(f(#3:Msg, #3:Msg), g(3, #4:Msg)))) X3:Msg --> g(#5:Msg, u(#7:Msg, f(#2:Msg, #1:Msg))) X15:Msg --> #1:Msg X16:Msg --> #6:Msg X14:Msg --> u(2, g(g(g(#5:Msg, u(#7:Msg, f(#2:Msg, #1:Msg))), #1:Msg), #6:Msg)) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #5:Msg X9:Msg --> u(#7:Msg, f(#2:Msg, #1:Msg)) X2:Msg --> #3:Msg X6:Msg --> #4:Msg Variant 169 rewrites: 728 Msg: g(f(null, null), f(#1:Msg, g(f(#3:Msg, #3:Msg), g(3, #4:Msg)))) X3:Msg --> g(#5:Msg, f(#2:Msg, #1:Msg)) X15:Msg --> #1:Msg X16:Msg --> #6:Msg X14:Msg --> u(2, g(g(g(#5:Msg, f(#2:Msg, #1:Msg)), #1:Msg), #6:Msg)) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #5:Msg X9:Msg --> f(#2:Msg, #1:Msg) X2:Msg --> #3:Msg X6:Msg --> #4:Msg Variant 170 rewrites: 728 Msg: g(f(null, null), f(u(#1:Msg, f(#2:Msg, #1:Msg)), g(f(#3:Msg, #3:Msg), g(3, #4:Msg)))) X3:Msg --> g(#5:Msg, null) X15:Msg --> #1:Msg X16:Msg --> #6:Msg X14:Msg --> u(2, g(g(g(#5:Msg, null), #1:Msg), #6:Msg)) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #5:Msg X9:Msg --> null X2:Msg --> #3:Msg X6:Msg --> #4:Msg Variant 171 rewrites: 728 Msg: g(f(null, null), f(u(#1:Msg, f(#2:Msg, null)), g(f(#3:Msg, #3:Msg), g(3, #4:Msg)))) X3:Msg --> g(#5:Msg, #1:Msg) X15:Msg --> null X16:Msg --> #6:Msg X14:Msg --> u(2, g(g(g(#5:Msg, #1:Msg), null), #6:Msg)) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #5:Msg X9:Msg --> #1:Msg X2:Msg --> #3:Msg X6:Msg --> #4:Msg Variant 172 rewrites: 728 Msg: g(f(null, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, u(#5:Msg, #10:Msg, f( #3:Msg, u(#5:Msg, #6:Msg))))))), f(u(#6:Msg, #10:Msg), g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #2:Msg X15:Msg --> u(#5:Msg, #6:Msg) X16:Msg --> #9:Msg X14:Msg --> u(2, g(g(#2:Msg, u(#5:Msg, #6:Msg)), #9:Msg)) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> u(#5:Msg, #10:Msg, f(#3:Msg, u(#5:Msg, #6:Msg))) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 173 rewrites: 728 Msg: g(f(null, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, u(#5:Msg, f(#3:Msg, u( #5:Msg, #6:Msg))))))), f(#6:Msg, g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #2:Msg X15:Msg --> u(#5:Msg, #6:Msg) X16:Msg --> #9:Msg X14:Msg --> u(2, g(g(#2:Msg, u(#5:Msg, #6:Msg)), #9:Msg)) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> u(#5:Msg, f(#3:Msg, u(#5:Msg, #6:Msg))) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 174 rewrites: 728 Msg: g(f(null, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, u(#5:Msg, f(#3:Msg, #5:Msg)))))), f(null, g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> #2:Msg X15:Msg --> #5:Msg X16:Msg --> #8:Msg X14:Msg --> u(2, g(g(#2:Msg, #5:Msg), #8:Msg)) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> u(#5:Msg, f(#3:Msg, #5:Msg)) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 175 rewrites: 728 Msg: g(f(null, u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, u(#1:Msg, #6:Msg, f( #4:Msg, #6:Msg)))))), f(#1:Msg, g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #3:Msg X15:Msg --> #6:Msg X16:Msg --> #9:Msg X14:Msg --> u(2, g(g(#3:Msg, #6:Msg), #9:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> u(#1:Msg, #6:Msg, f(#4:Msg, #6:Msg)) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 176 rewrites: 728 Msg: g(f(null, u(g(#1:Msg, #2:Msg), g(#3:Msg, g(#4:Msg, u(#5:Msg, f(#3:Msg, null)))))), f(#5:Msg, g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> #2:Msg X15:Msg --> null X16:Msg --> #8:Msg X14:Msg --> u(2, g(g(#2:Msg, null), #8:Msg)) X12:Msg --> #1:Msg X8:Msg --> #3:Msg X10:Msg --> #4:Msg X9:Msg --> u(#5:Msg, f(#3:Msg, null)) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 177 rewrites: 728 Msg: g(f(#2:Msg, null), f(u(#8:Msg, #9:Msg, f(#3:Msg, u(#1:Msg, #9:Msg))), g(f( #4:Msg, #4:Msg), g(3, #5:Msg)))) X3:Msg --> g(#6:Msg, u(#1:Msg, #8:Msg)) X15:Msg --> u(#1:Msg, #9:Msg) X16:Msg --> #7:Msg X14:Msg --> u(2, #2:Msg, g(g(g(#6:Msg, u(#1:Msg, #8:Msg)), u(#1:Msg, #9:Msg)), #7:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #6:Msg X9:Msg --> u(#1:Msg, #8:Msg) X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 178 rewrites: 728 Msg: g(f(#1:Msg, null), f(u(#8:Msg, f(#3:Msg, #2:Msg)), g(f(#4:Msg, #4:Msg), g( 3, #5:Msg)))) X3:Msg --> g(#6:Msg, u(#2:Msg, #8:Msg)) X15:Msg --> #2:Msg X16:Msg --> #7:Msg X14:Msg --> u(2, #1:Msg, g(g(g(#6:Msg, u(#2:Msg, #8:Msg)), #2:Msg), #7:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #6:Msg X9:Msg --> u(#2:Msg, #8:Msg) X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 179 rewrites: 728 Msg: g(f(#1:Msg, null), f(u(#8:Msg, f(#3:Msg, u(#2:Msg, #8:Msg))), g(f(#4:Msg, #4:Msg), g(3, #5:Msg)))) X3:Msg --> g(#6:Msg, #2:Msg) X15:Msg --> u(#2:Msg, #8:Msg) X16:Msg --> #7:Msg X14:Msg --> u(2, #1:Msg, g(g(g(#6:Msg, #2:Msg), u(#2:Msg, #8:Msg)), #7:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #6:Msg X9:Msg --> #2:Msg X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 180 rewrites: 728 Msg: g(f(#1:Msg, null), f(f(#3:Msg, #2:Msg), g(f(#4:Msg, #4:Msg), g(3, #5:Msg)))) X3:Msg --> g(#6:Msg, #2:Msg) X15:Msg --> #2:Msg X16:Msg --> #7:Msg X14:Msg --> u(2, #1:Msg, g(g(g(#6:Msg, #2:Msg), #2:Msg), #7:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #6:Msg X9:Msg --> #2:Msg X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 181 rewrites: 728 Msg: g(f(#1:Msg, null), f(u(#2:Msg, #8:Msg), g(f(#4:Msg, #4:Msg), g(3, #5:Msg)))) X3:Msg --> g(#6:Msg, u(#8:Msg, f(#3:Msg, #2:Msg))) X15:Msg --> #2:Msg X16:Msg --> #7:Msg X14:Msg --> u(2, #1:Msg, g(g(g(#6:Msg, u(#8:Msg, f(#3:Msg, #2:Msg))), #2:Msg), #7:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #6:Msg X9:Msg --> u(#8:Msg, f(#3:Msg, #2:Msg)) X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 182 rewrites: 728 Msg: g(f(#1:Msg, null), f(#2:Msg, g(f(#4:Msg, #4:Msg), g(3, #5:Msg)))) X3:Msg --> g(#6:Msg, f(#3:Msg, #2:Msg)) X15:Msg --> #2:Msg X16:Msg --> #7:Msg X14:Msg --> u(2, #1:Msg, g(g(g(#6:Msg, f(#3:Msg, #2:Msg)), #2:Msg), #7:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #6:Msg X9:Msg --> f(#3:Msg, #2:Msg) X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 183 rewrites: 728 Msg: g(f(#1:Msg, null), f(u(#2:Msg, f(#3:Msg, #2:Msg)), g(f(#4:Msg, #4:Msg), g( 3, #5:Msg)))) X3:Msg --> g(#6:Msg, null) X15:Msg --> #2:Msg X16:Msg --> #7:Msg X14:Msg --> u(2, #1:Msg, g(g(g(#6:Msg, null), #2:Msg), #7:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #6:Msg X9:Msg --> null X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 184 rewrites: 728 Msg: g(f(#1:Msg, null), f(u(#2:Msg, f(#3:Msg, null)), g(f(#4:Msg, #4:Msg), g(3, #5:Msg)))) X3:Msg --> g(#6:Msg, #2:Msg) X15:Msg --> null X16:Msg --> #7:Msg X14:Msg --> u(2, #1:Msg, g(g(g(#6:Msg, #2:Msg), null), #7:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #6:Msg X9:Msg --> #2:Msg X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 185 rewrites: 728 Msg: g(f(#1:Msg, u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, u(#6:Msg, #11:Msg, f( #4:Msg, u(#6:Msg, #7:Msg))))))), f(u(#7:Msg, #11:Msg), g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #3:Msg X15:Msg --> u(#6:Msg, #7:Msg) X16:Msg --> #10:Msg X14:Msg --> u(2, #1:Msg, g(g(#3:Msg, u(#6:Msg, #7:Msg)), #10:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> u(#6:Msg, #11:Msg, f(#4:Msg, u(#6:Msg, #7:Msg))) X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 186 rewrites: 728 Msg: g(f(#1:Msg, u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, u(#6:Msg, f(#4:Msg, u(#6:Msg, #7:Msg))))))), f(#7:Msg, g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #3:Msg X15:Msg --> u(#6:Msg, #7:Msg) X16:Msg --> #10:Msg X14:Msg --> u(2, #1:Msg, g(g(#3:Msg, u(#6:Msg, #7:Msg)), #10:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> u(#6:Msg, f(#4:Msg, u(#6:Msg, #7:Msg))) X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 187 rewrites: 728 Msg: g(f(#1:Msg, u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, u(#6:Msg, f(#4:Msg, #6:Msg)))))), f(null, g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #3:Msg X15:Msg --> #6:Msg X16:Msg --> #9:Msg X14:Msg --> u(2, #1:Msg, g(g(#3:Msg, #6:Msg), #9:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> u(#6:Msg, f(#4:Msg, #6:Msg)) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 188 rewrites: 728 Msg: g(f(#2:Msg, u(g(#3:Msg, #4:Msg), g(#5:Msg, g(#6:Msg, u(#1:Msg, #7:Msg, f( #5:Msg, #7:Msg)))))), f(#1:Msg, g(f(#8:Msg, #8:Msg), g(3, #9:Msg)))) X3:Msg --> #4:Msg X15:Msg --> #7:Msg X16:Msg --> #10:Msg X14:Msg --> u(2, #2:Msg, g(g(#4:Msg, #7:Msg), #10:Msg)) X12:Msg --> #3:Msg X8:Msg --> #5:Msg X10:Msg --> #6:Msg X9:Msg --> u(#1:Msg, #7:Msg, f(#5:Msg, #7:Msg)) X2:Msg --> #8:Msg X6:Msg --> #9:Msg Variant 189 rewrites: 728 Msg: g(f(#1:Msg, u(g(#2:Msg, #3:Msg), g(#4:Msg, g(#5:Msg, u(#6:Msg, f(#4:Msg, null)))))), f(#6:Msg, g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> #3:Msg X15:Msg --> null X16:Msg --> #9:Msg X14:Msg --> u(2, #1:Msg, g(g(#3:Msg, null), #9:Msg)) X12:Msg --> #2:Msg X8:Msg --> #4:Msg X10:Msg --> #5:Msg X9:Msg --> u(#6:Msg, f(#4:Msg, null)) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 190 rewrites: 728 Msg: g(f(u(#1:Msg, g(g(g(#2:Msg, u(#3:Msg, #9:Msg, f(#6:Msg, u(#3:Msg, #4:Msg)))), u(#3:Msg, #4:Msg)), #5:Msg)), null), f(u(#4:Msg, #9:Msg), g(f( #7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> g(#2:Msg, u(#3:Msg, #9:Msg, f(#6:Msg, u(#3:Msg, #4:Msg)))) X15:Msg --> u(#3:Msg, #4:Msg) X16:Msg --> #5:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #6:Msg X8:Msg --> #6:Msg X10:Msg --> #2:Msg X9:Msg --> u(#3:Msg, #9:Msg, f(#6:Msg, u(#3:Msg, #4:Msg))) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 191 rewrites: 728 Msg: g(f(u(#1:Msg, g(g(g(#2:Msg, u(#3:Msg, f(#6:Msg, u(#3:Msg, #4:Msg)))), u( #3:Msg, #4:Msg)), #5:Msg)), null), f(#4:Msg, g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> g(#2:Msg, u(#3:Msg, f(#6:Msg, u(#3:Msg, #4:Msg)))) X15:Msg --> u(#3:Msg, #4:Msg) X16:Msg --> #5:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #6:Msg X8:Msg --> #6:Msg X10:Msg --> #2:Msg X9:Msg --> u(#3:Msg, f(#6:Msg, u(#3:Msg, #4:Msg))) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 192 rewrites: 728 Msg: g(f(u(#1:Msg, g(g(g(#2:Msg, u(#3:Msg, f(#5:Msg, #3:Msg))), #3:Msg), #4:Msg)), null), f(null, g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, u(#3:Msg, f(#5:Msg, #3:Msg))) X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #2:Msg X9:Msg --> u(#3:Msg, f(#5:Msg, #3:Msg)) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 193 rewrites: 728 Msg: g(f(u(#2:Msg, g(g(g(#3:Msg, u(#1:Msg, #4:Msg, f(#6:Msg, #4:Msg))), #4:Msg), #5:Msg)), null), f(#1:Msg, g(f(#7:Msg, #7:Msg), g(3, #8:Msg)))) X3:Msg --> g(#3:Msg, u(#1:Msg, #4:Msg, f(#6:Msg, #4:Msg))) X15:Msg --> #4:Msg X16:Msg --> #5:Msg X14:Msg --> u(2, #2:Msg) X12:Msg --> #6:Msg X8:Msg --> #6:Msg X10:Msg --> #3:Msg X9:Msg --> u(#1:Msg, #4:Msg, f(#6:Msg, #4:Msg)) X2:Msg --> #7:Msg X6:Msg --> #8:Msg Variant 194 rewrites: 728 Msg: g(f(u(#1:Msg, g(g(g(#2:Msg, u(#3:Msg, f(#4:Msg, null))), null), #5:Msg)), null), f(#3:Msg, g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, u(#3:Msg, f(#4:Msg, null))) X15:Msg --> null X16:Msg --> #5:Msg X14:Msg --> u(2, #1:Msg) X12:Msg --> #4:Msg X8:Msg --> #4:Msg X10:Msg --> #2:Msg X9:Msg --> u(#3:Msg, f(#4:Msg, null)) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 195 rewrites: 728 Msg: g(f(g(g(g(#1:Msg, u(#2:Msg, #8:Msg, f(#5:Msg, u(#2:Msg, #3:Msg)))), u( #2:Msg, #3:Msg)), #4:Msg), null), f(u(#3:Msg, #8:Msg), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#1:Msg, u(#2:Msg, #8:Msg, f(#5:Msg, u(#2:Msg, #3:Msg)))) X15:Msg --> u(#2:Msg, #3:Msg) X16:Msg --> #4:Msg X14:Msg --> 2 X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #1:Msg X9:Msg --> u(#2:Msg, #8:Msg, f(#5:Msg, u(#2:Msg, #3:Msg))) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 196 rewrites: 728 Msg: g(f(g(g(g(#1:Msg, u(#2:Msg, f(#5:Msg, u(#2:Msg, #3:Msg)))), u(#2:Msg, #3:Msg)), #4:Msg), null), f(#3:Msg, g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#1:Msg, u(#2:Msg, f(#5:Msg, u(#2:Msg, #3:Msg)))) X15:Msg --> u(#2:Msg, #3:Msg) X16:Msg --> #4:Msg X14:Msg --> 2 X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #1:Msg X9:Msg --> u(#2:Msg, f(#5:Msg, u(#2:Msg, #3:Msg))) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 197 rewrites: 728 Msg: g(f(g(g(g(#1:Msg, u(#2:Msg, f(#4:Msg, #2:Msg))), #2:Msg), #3:Msg), null), f(null, g(f(#5:Msg, #5:Msg), g(3, #6:Msg)))) X3:Msg --> g(#1:Msg, u(#2:Msg, f(#4:Msg, #2:Msg))) X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> 2 X12:Msg --> #4:Msg X8:Msg --> #4:Msg X10:Msg --> #1:Msg X9:Msg --> u(#2:Msg, f(#4:Msg, #2:Msg)) X2:Msg --> #5:Msg X6:Msg --> #6:Msg Variant 198 rewrites: 728 Msg: g(f(g(g(g(#2:Msg, u(#1:Msg, #3:Msg, f(#5:Msg, #3:Msg))), #3:Msg), #4:Msg), null), f(#1:Msg, g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, u(#1:Msg, #3:Msg, f(#5:Msg, #3:Msg))) X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> 2 X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #2:Msg X9:Msg --> u(#1:Msg, #3:Msg, f(#5:Msg, #3:Msg)) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 199 rewrites: 728 Msg: g(f(g(g(g(#1:Msg, u(#2:Msg, f(#3:Msg, null))), null), #4:Msg), null), f( #2:Msg, g(f(#5:Msg, #5:Msg), g(3, #6:Msg)))) X3:Msg --> g(#1:Msg, u(#2:Msg, f(#3:Msg, null))) X15:Msg --> null X16:Msg --> #4:Msg X14:Msg --> 2 X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #1:Msg X9:Msg --> u(#2:Msg, f(#3:Msg, null)) X2:Msg --> #5:Msg X6:Msg --> #6:Msg Variant 200 rewrites: 728 Msg: g(f(u(2, #1:Msg), null), f(u(#2:Msg, #9:Msg), g(f(#5:Msg, #5:Msg), g(3, #6:Msg)))) X3:Msg --> g(#7:Msg, u(#4:Msg, #9:Msg, f(#3:Msg, u(#2:Msg, #4:Msg)))) X15:Msg --> u(#2:Msg, #4:Msg) X16:Msg --> #8:Msg X14:Msg --> u(#1:Msg, g(g(g(#7:Msg, u(#4:Msg, #9:Msg, f(#3:Msg, u(#2:Msg, #4:Msg)))), u(#2:Msg, #4:Msg)), #8:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #7:Msg X9:Msg --> u(#4:Msg, #9:Msg, f(#3:Msg, u(#2:Msg, #4:Msg))) X2:Msg --> #5:Msg X6:Msg --> #6:Msg Variant 201 rewrites: 728 Msg: g(f(u(2, #1:Msg), null), f(#2:Msg, g(f(#5:Msg, #5:Msg), g(3, #6:Msg)))) X3:Msg --> g(#7:Msg, u(#4:Msg, f(#3:Msg, u(#2:Msg, #4:Msg)))) X15:Msg --> u(#2:Msg, #4:Msg) X16:Msg --> #8:Msg X14:Msg --> u(#1:Msg, g(g(g(#7:Msg, u(#4:Msg, f(#3:Msg, u(#2:Msg, #4:Msg)))), u(#2:Msg, #4:Msg)), #8:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #7:Msg X9:Msg --> u(#4:Msg, f(#3:Msg, u(#2:Msg, #4:Msg))) X2:Msg --> #5:Msg X6:Msg --> #6:Msg Variant 202 rewrites: 728 Msg: g(f(u(2, #1:Msg), null), f(null, g(f(#4:Msg, #4:Msg), g(3, #5:Msg)))) X3:Msg --> g(#6:Msg, u(#3:Msg, f(#2:Msg, #3:Msg))) X15:Msg --> #3:Msg X16:Msg --> #7:Msg X14:Msg --> u(#1:Msg, g(g(g(#6:Msg, u(#3:Msg, f(#2:Msg, #3:Msg))), #3:Msg), #7:Msg)) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #6:Msg X9:Msg --> u(#3:Msg, f(#2:Msg, #3:Msg)) X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 203 rewrites: 728 Msg: g(f(u(2, #2:Msg), null), f(#1:Msg, g(f(#5:Msg, #5:Msg), g(3, #6:Msg)))) X3:Msg --> g(#7:Msg, u(#1:Msg, #4:Msg, f(#3:Msg, #4:Msg))) X15:Msg --> #4:Msg X16:Msg --> #8:Msg X14:Msg --> u(#2:Msg, g(g(g(#7:Msg, u(#1:Msg, #4:Msg, f(#3:Msg, #4:Msg))), #4:Msg), #8:Msg)) X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #7:Msg X9:Msg --> u(#1:Msg, #4:Msg, f(#3:Msg, #4:Msg)) X2:Msg --> #5:Msg X6:Msg --> #6:Msg Variant 204 rewrites: 728 Msg: g(f(u(2, #1:Msg), null), f(#2:Msg, g(f(#3:Msg, #3:Msg), g(3, #4:Msg)))) X3:Msg --> g(#5:Msg, u(#2:Msg, f(#6:Msg, null))) X15:Msg --> null X16:Msg --> #7:Msg X14:Msg --> u(#1:Msg, g(g(g(#5:Msg, u(#2:Msg, f(#6:Msg, null))), null), #7:Msg)) X12:Msg --> #6:Msg X8:Msg --> #6:Msg X10:Msg --> #5:Msg X9:Msg --> u(#2:Msg, f(#6:Msg, null)) X2:Msg --> #3:Msg X6:Msg --> #4:Msg Variant 205 rewrites: 728 Msg: g(f(2, null), f(u(#1:Msg, #8:Msg), g(f(#4:Msg, #4:Msg), g(3, #5:Msg)))) X3:Msg --> g(#6:Msg, u(#3:Msg, #8:Msg, f(#2:Msg, u(#1:Msg, #3:Msg)))) X15:Msg --> u(#1:Msg, #3:Msg) X16:Msg --> #7:Msg X14:Msg --> g(g(g(#6:Msg, u(#3:Msg, #8:Msg, f(#2:Msg, u(#1:Msg, #3:Msg)))), u( #1:Msg, #3:Msg)), #7:Msg) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #6:Msg X9:Msg --> u(#3:Msg, #8:Msg, f(#2:Msg, u(#1:Msg, #3:Msg))) X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 206 rewrites: 728 Msg: g(f(2, null), f(#1:Msg, g(f(#4:Msg, #4:Msg), g(3, #5:Msg)))) X3:Msg --> g(#6:Msg, u(#3:Msg, f(#2:Msg, u(#1:Msg, #3:Msg)))) X15:Msg --> u(#1:Msg, #3:Msg) X16:Msg --> #7:Msg X14:Msg --> g(g(g(#6:Msg, u(#3:Msg, f(#2:Msg, u(#1:Msg, #3:Msg)))), u(#1:Msg, #3:Msg)), #7:Msg) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #6:Msg X9:Msg --> u(#3:Msg, f(#2:Msg, u(#1:Msg, #3:Msg))) X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 207 rewrites: 728 Msg: g(f(2, null), f(null, g(f(#3:Msg, #3:Msg), g(3, #4:Msg)))) X3:Msg --> g(#5:Msg, u(#2:Msg, f(#1:Msg, #2:Msg))) X15:Msg --> #2:Msg X16:Msg --> #6:Msg X14:Msg --> g(g(g(#5:Msg, u(#2:Msg, f(#1:Msg, #2:Msg))), #2:Msg), #6:Msg) X12:Msg --> #1:Msg X8:Msg --> #1:Msg X10:Msg --> #5:Msg X9:Msg --> u(#2:Msg, f(#1:Msg, #2:Msg)) X2:Msg --> #3:Msg X6:Msg --> #4:Msg Variant 208 rewrites: 728 Msg: g(f(2, null), f(#1:Msg, g(f(#4:Msg, #4:Msg), g(3, #5:Msg)))) X3:Msg --> g(#6:Msg, u(#1:Msg, #3:Msg, f(#2:Msg, #3:Msg))) X15:Msg --> #3:Msg X16:Msg --> #7:Msg X14:Msg --> g(g(g(#6:Msg, u(#1:Msg, #3:Msg, f(#2:Msg, #3:Msg))), #3:Msg), #7:Msg) X12:Msg --> #2:Msg X8:Msg --> #2:Msg X10:Msg --> #6:Msg X9:Msg --> u(#1:Msg, #3:Msg, f(#2:Msg, #3:Msg)) X2:Msg --> #4:Msg X6:Msg --> #5:Msg Variant 209 rewrites: 728 Msg: g(f(2, null), f(#1:Msg, g(f(#2:Msg, #2:Msg), g(3, #3:Msg)))) X3:Msg --> g(#4:Msg, u(#1:Msg, f(#5:Msg, null))) X15:Msg --> null X16:Msg --> #6:Msg X14:Msg --> g(g(g(#4:Msg, u(#1:Msg, f(#5:Msg, null))), null), #6:Msg) X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #4:Msg X9:Msg --> u(#1:Msg, f(#5:Msg, null)) X2:Msg --> #2:Msg X6:Msg --> #3:Msg Variant 210 rewrites: 728 Msg: g(f(u(2, g(g(g(#1:Msg, u(#2:Msg, #8:Msg, f(#5:Msg, u(#2:Msg, #3:Msg)))), u(#2:Msg, #3:Msg)), #4:Msg)), null), f(u(#3:Msg, #8:Msg), g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#1:Msg, u(#2:Msg, #8:Msg, f(#5:Msg, u(#2:Msg, #3:Msg)))) X15:Msg --> u(#2:Msg, #3:Msg) X16:Msg --> #4:Msg X14:Msg --> null X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #1:Msg X9:Msg --> u(#2:Msg, #8:Msg, f(#5:Msg, u(#2:Msg, #3:Msg))) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 211 rewrites: 728 Msg: g(f(u(2, g(g(g(#1:Msg, u(#2:Msg, f(#5:Msg, u(#2:Msg, #3:Msg)))), u(#2:Msg, #3:Msg)), #4:Msg)), null), f(#3:Msg, g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#1:Msg, u(#2:Msg, f(#5:Msg, u(#2:Msg, #3:Msg)))) X15:Msg --> u(#2:Msg, #3:Msg) X16:Msg --> #4:Msg X14:Msg --> null X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #1:Msg X9:Msg --> u(#2:Msg, f(#5:Msg, u(#2:Msg, #3:Msg))) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 212 rewrites: 728 Msg: g(f(u(2, g(g(g(#1:Msg, u(#2:Msg, f(#4:Msg, #2:Msg))), #2:Msg), #3:Msg)), null), f(null, g(f(#5:Msg, #5:Msg), g(3, #6:Msg)))) X3:Msg --> g(#1:Msg, u(#2:Msg, f(#4:Msg, #2:Msg))) X15:Msg --> #2:Msg X16:Msg --> #3:Msg X14:Msg --> null X12:Msg --> #4:Msg X8:Msg --> #4:Msg X10:Msg --> #1:Msg X9:Msg --> u(#2:Msg, f(#4:Msg, #2:Msg)) X2:Msg --> #5:Msg X6:Msg --> #6:Msg Variant 213 rewrites: 728 Msg: g(f(u(2, g(g(g(#2:Msg, u(#1:Msg, #3:Msg, f(#5:Msg, #3:Msg))), #3:Msg), #4:Msg)), null), f(#1:Msg, g(f(#6:Msg, #6:Msg), g(3, #7:Msg)))) X3:Msg --> g(#2:Msg, u(#1:Msg, #3:Msg, f(#5:Msg, #3:Msg))) X15:Msg --> #3:Msg X16:Msg --> #4:Msg X14:Msg --> null X12:Msg --> #5:Msg X8:Msg --> #5:Msg X10:Msg --> #2:Msg X9:Msg --> u(#1:Msg, #3:Msg, f(#5:Msg, #3:Msg)) X2:Msg --> #6:Msg X6:Msg --> #7:Msg Variant 214 rewrites: 728 Msg: g(f(u(2, g(g(g(#1:Msg, u(#2:Msg, f(#3:Msg, null))), null), #4:Msg)), null), f(#2:Msg, g(f(#5:Msg, #5:Msg), g(3, #6:Msg)))) X3:Msg --> g(#1:Msg, u(#2:Msg, f(#3:Msg, null))) X15:Msg --> null X16:Msg --> #4:Msg X14:Msg --> null X12:Msg --> #3:Msg X8:Msg --> #3:Msg X10:Msg --> #1:Msg X9:Msg --> u(#2:Msg, f(#3:Msg, null)) X2:Msg --> #5:Msg X6:Msg --> #6:Msg Variant 215 rewrites: 820 Msg: g(f(null, null), f(u(%1:Msg, %8:Msg), g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, u(%3:Msg, %8:Msg, f(%2:Msg, u(%1:Msg, %3:Msg)))) X15:Msg --> u(%1:Msg, %3:Msg) X16:Msg --> %7:Msg X14:Msg --> u(2, g(g(g(%6:Msg, u(%3:Msg, %8:Msg, f(%2:Msg, u(%1:Msg, %3:Msg)))), u(%1:Msg, %3:Msg)), %7:Msg)) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %6:Msg X9:Msg --> u(%3:Msg, %8:Msg, f(%2:Msg, u(%1:Msg, %3:Msg))) X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 216 rewrites: 820 Msg: g(f(null, null), f(%1:Msg, g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, u(%3:Msg, f(%2:Msg, u(%1:Msg, %3:Msg)))) X15:Msg --> u(%1:Msg, %3:Msg) X16:Msg --> %7:Msg X14:Msg --> u(2, g(g(g(%6:Msg, u(%3:Msg, f(%2:Msg, u(%1:Msg, %3:Msg)))), u( %1:Msg, %3:Msg)), %7:Msg)) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %6:Msg X9:Msg --> u(%3:Msg, f(%2:Msg, u(%1:Msg, %3:Msg))) X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 217 rewrites: 820 Msg: g(f(null, null), f(null, g(f(%3:Msg, %3:Msg), g(3, %4:Msg)))) X3:Msg --> g(%5:Msg, u(%2:Msg, f(%1:Msg, %2:Msg))) X15:Msg --> %2:Msg X16:Msg --> %6:Msg X14:Msg --> u(2, g(g(g(%5:Msg, u(%2:Msg, f(%1:Msg, %2:Msg))), %2:Msg), %6:Msg)) X12:Msg --> %1:Msg X8:Msg --> %1:Msg X10:Msg --> %5:Msg X9:Msg --> u(%2:Msg, f(%1:Msg, %2:Msg)) X2:Msg --> %3:Msg X6:Msg --> %4:Msg Variant 218 rewrites: 820 Msg: g(f(null, null), f(%1:Msg, g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, u(%1:Msg, %3:Msg, f(%2:Msg, %3:Msg))) X15:Msg --> %3:Msg X16:Msg --> %7:Msg X14:Msg --> u(2, g(g(g(%6:Msg, u(%1:Msg, %3:Msg, f(%2:Msg, %3:Msg))), %3:Msg), %7:Msg)) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %6:Msg X9:Msg --> u(%1:Msg, %3:Msg, f(%2:Msg, %3:Msg)) X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 219 rewrites: 820 Msg: g(f(null, null), f(%1:Msg, g(f(%2:Msg, %2:Msg), g(3, %3:Msg)))) X3:Msg --> g(%4:Msg, u(%1:Msg, f(%5:Msg, null))) X15:Msg --> null X16:Msg --> %6:Msg X14:Msg --> u(2, g(g(g(%4:Msg, u(%1:Msg, f(%5:Msg, null))), null), %6:Msg)) X12:Msg --> %5:Msg X8:Msg --> %5:Msg X10:Msg --> %4:Msg X9:Msg --> u(%1:Msg, f(%5:Msg, null)) X2:Msg --> %2:Msg X6:Msg --> %3:Msg Variant 220 rewrites: 820 Msg: g(f(%1:Msg, null), f(u(%2:Msg, %9:Msg), g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%7:Msg, u(%4:Msg, %9:Msg, f(%3:Msg, u(%2:Msg, %4:Msg)))) X15:Msg --> u(%2:Msg, %4:Msg) X16:Msg --> %8:Msg X14:Msg --> u(2, %1:Msg, g(g(g(%7:Msg, u(%4:Msg, %9:Msg, f(%3:Msg, u(%2:Msg, %4:Msg)))), u(%2:Msg, %4:Msg)), %8:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %7:Msg X9:Msg --> u(%4:Msg, %9:Msg, f(%3:Msg, u(%2:Msg, %4:Msg))) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 221 rewrites: 820 Msg: g(f(%1:Msg, null), f(%2:Msg, g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%7:Msg, u(%4:Msg, f(%3:Msg, u(%2:Msg, %4:Msg)))) X15:Msg --> u(%2:Msg, %4:Msg) X16:Msg --> %8:Msg X14:Msg --> u(2, %1:Msg, g(g(g(%7:Msg, u(%4:Msg, f(%3:Msg, u(%2:Msg, %4:Msg)))), u(%2:Msg, %4:Msg)), %8:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %7:Msg X9:Msg --> u(%4:Msg, f(%3:Msg, u(%2:Msg, %4:Msg))) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 222 rewrites: 820 Msg: g(f(%1:Msg, null), f(null, g(f(%4:Msg, %4:Msg), g(3, %5:Msg)))) X3:Msg --> g(%6:Msg, u(%3:Msg, f(%2:Msg, %3:Msg))) X15:Msg --> %3:Msg X16:Msg --> %7:Msg X14:Msg --> u(2, %1:Msg, g(g(g(%6:Msg, u(%3:Msg, f(%2:Msg, %3:Msg))), %3:Msg), %7:Msg)) X12:Msg --> %2:Msg X8:Msg --> %2:Msg X10:Msg --> %6:Msg X9:Msg --> u(%3:Msg, f(%2:Msg, %3:Msg)) X2:Msg --> %4:Msg X6:Msg --> %5:Msg Variant 223 rewrites: 820 Msg: g(f(%2:Msg, null), f(%1:Msg, g(f(%5:Msg, %5:Msg), g(3, %6:Msg)))) X3:Msg --> g(%7:Msg, u(%1:Msg, %4:Msg, f(%3:Msg, %4:Msg))) X15:Msg --> %4:Msg X16:Msg --> %8:Msg X14:Msg --> u(2, %2:Msg, g(g(g(%7:Msg, u(%1:Msg, %4:Msg, f(%3:Msg, %4:Msg))), %4:Msg), %8:Msg)) X12:Msg --> %3:Msg X8:Msg --> %3:Msg X10:Msg --> %7:Msg X9:Msg --> u(%1:Msg, %4:Msg, f(%3:Msg, %4:Msg)) X2:Msg --> %5:Msg X6:Msg --> %6:Msg Variant 224 rewrites: 820 Msg: g(f(%1:Msg, null), f(%2:Msg, g(f(%3:Msg, %3:Msg), g(3, %4:Msg)))) X3:Msg --> g(%5:Msg, u(%2:Msg, f(%6:Msg, null))) X15:Msg --> null X16:Msg --> %7:Msg X14:Msg --> u(2, %1:Msg, g(g(g(%5:Msg, u(%2:Msg, f(%6:Msg, null))), null), %7:Msg)) X12:Msg --> %6:Msg X8:Msg --> %6:Msg X10:Msg --> %5:Msg X9:Msg --> u(%2:Msg, f(%6:Msg, null)) X2:Msg --> %3:Msg X6:Msg --> %4:Msg No more variants. rewrites: 828 ========================================== get variants in XOR : cst1 + X . Variant 1 rewrites: 0 XOR: cst1 + #1:XOR X --> #1:XOR Variant 2 rewrites: 3 Elem: cst1 X --> 0 Variant 3 rewrites: 3 XOR: 0 X --> cst1 Variant 4 rewrites: 3 XOR: %1:XOR X --> cst1 + %1:XOR No more variants. rewrites: 3 ========================================== get variants in XOR : cst2 + X . Variant 1 rewrites: 0 XOR: cst2 + #1:XOR X --> #1:XOR Variant 2 rewrites: 3 Elem: cst2 X --> 0 Variant 3 rewrites: 3 XOR: 0 X --> cst2 Variant 4 rewrites: 3 XOR: %1:XOR X --> cst2 + %1:XOR No more variants. rewrites: 3 ========================================== get variants in XOR : cst2 + X such that X + a irreducible . Variant 1 rewrites: 0 XOR: cst2 + #1:XOR X --> #1:XOR Variant 2 rewrites: 2 XOR: 0 X --> cst2 Variant 3 rewrites: 2 XOR: %1:XOR X --> cst2 + %1:XOR No more variants. rewrites: 2 ========================================== get variants in XOR : X + cst1 + Y . Variant 1 rewrites: 0 XOR: cst1 + #1:XOR + #2:XOR X --> #1:XOR Y --> #2:XOR Variant 2 rewrites: 10 XOR: cst1 + %1:XOR X --> 0 Y --> %1:XOR Variant 3 rewrites: 10 XOR: cst1 + %1:XOR X --> %1:XOR Y --> 0 Variant 4 rewrites: 10 XOR: %1:XOR + %2:XOR X --> cst1 + %2:XOR Y --> %1:XOR Variant 5 rewrites: 10 XOR: %1:XOR X --> cst1 Y --> %1:XOR Variant 6 rewrites: 10 XOR: %1:XOR + %2:XOR X --> %1:XOR Y --> cst1 + %2:XOR Variant 7 rewrites: 10 XOR: %1:XOR X --> %1:XOR Y --> cst1 Variant 8 rewrites: 10 XOR: cst1 + %2:XOR + %3:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR + %3:XOR Variant 9 rewrites: 10 XOR: cst1 + %2:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR Variant 10 rewrites: 10 XOR: cst1 + %2:XOR X --> %1:XOR Y --> %1:XOR + %2:XOR Variant 11 rewrites: 10 Elem: cst1 X --> %1:XOR Y --> %1:XOR Variant 12 rewrites: 38 XOR: #1:XOR X --> 0 Y --> cst1 + #1:XOR Variant 13 rewrites: 38 XOR: #1:XOR X --> cst1 + #1:XOR Y --> 0 Variant 14 rewrites: 38 XOR: 0 X --> cst1 + #1:XOR Y --> #1:XOR Variant 15 rewrites: 38 XOR: #2:XOR + #3:XOR X --> cst1 + #1:XOR + #3:XOR Y --> #1:XOR + #2:XOR Variant 16 rewrites: 38 XOR: #1:XOR X --> cst1 + #2:XOR Y --> #1:XOR + #2:XOR Variant 17 rewrites: 38 XOR: #1:XOR X --> cst1 + #1:XOR + #2:XOR Y --> #2:XOR Variant 18 rewrites: 38 XOR: 0 X --> #1:XOR Y --> cst1 + #1:XOR Variant 19 rewrites: 38 XOR: #2:XOR + #3:XOR X --> #1:XOR + #2:XOR Y --> cst1 + #1:XOR + #3:XOR Variant 20 rewrites: 38 XOR: #1:XOR X --> #1:XOR + #2:XOR Y --> cst1 + #2:XOR Variant 21 rewrites: 38 XOR: #1:XOR X --> #2:XOR Y --> cst1 + #1:XOR + #2:XOR No more variants. rewrites: 46 ========================================== get variants in XOR : X + cst1 + Y such that X + cst1, X + cst2 irreducible . Variant 1 rewrites: 0 XOR: cst1 + #1:XOR + #2:XOR X --> #1:XOR Y --> #2:XOR Variant 2 rewrites: 7 XOR: cst1 + %1:XOR X --> %1:XOR Y --> 0 Variant 3 rewrites: 7 XOR: %1:XOR + %2:XOR X --> %1:XOR Y --> cst1 + %2:XOR Variant 4 rewrites: 7 XOR: %1:XOR X --> %1:XOR Y --> cst1 Variant 5 rewrites: 7 XOR: cst1 + %2:XOR + %3:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR + %3:XOR Variant 6 rewrites: 7 XOR: cst1 + %2:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR Variant 7 rewrites: 7 XOR: cst1 + %2:XOR X --> %1:XOR Y --> %1:XOR + %2:XOR Variant 8 rewrites: 7 Elem: cst1 X --> %1:XOR Y --> %1:XOR Variant 9 rewrites: 19 XOR: 0 X --> #1:XOR Y --> cst1 + #1:XOR Variant 10 rewrites: 19 XOR: #2:XOR + #3:XOR X --> #1:XOR + #2:XOR Y --> cst1 + #1:XOR + #3:XOR Variant 11 rewrites: 19 XOR: #1:XOR X --> #1:XOR + #2:XOR Y --> cst1 + #2:XOR Variant 12 rewrites: 19 XOR: #1:XOR X --> #2:XOR Y --> cst1 + #1:XOR + #2:XOR No more variants. rewrites: 23 Bye. Maude-Maude3.5.1/tests/Misc/variantNarrowing0000775000175000017510000000037415036121435020402 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/variantNarrowing.maude -no-banner -no-advise \ > variantNarrowing.out 2>&1 diff $srcdir/variantNarrowing.expected variantNarrowing.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/variantMatching.maude0000664000175000017510000000350715036121435021256 0ustar nileshnileshset show timing off . *** *** We variant matching against equivalent variant unification problems. *** fmod FOO is sort Foo . ops f g h : Foo Foo -> Foo . op 1f : -> Foo . vars W X Y Z A B C D E : Foo . ops w x y z a b c d e : -> Foo . eq f(X, 1f) = X [variant] . eq f(1f, X) = X [variant] . endfm variant unify f(X, g(Y, Z)) =? f(x, g(y, z)) . variant match f(X, g(Y, Z)) <=? f(X, g(Y, Z)) . variant unify g(f(X, Y), Z) =? g(a, g(a, b)) . variant match g(f(X, Y), Z) <=? g(a, g(A, B)) . variant unify f(1f, g(Y, Z)) =? g(y, z) . variant match f(1f, g(Y, Z)) <=? g(Y, Z) . variant unify g(f(X, Y), Z) =? g(a, f(b, c)) . variant match g(f(X, Y), Z) <=? g(A, f(B, C)) . fmod LEFT-ID is sorts Elt Magma . subsort Elt < Magma . op __ : Magma Magma -> Magma [gather(E e)] . ops a b c d e x y z : -> Elt . var X : [Magma] . eq e X = X [variant] . endfm variant unify X:Magma a =? y a a . variant match X:Magma a <=? Y:Magma a a . variant unify a X:Magma =? a a y . variant match a X:Magma <=? a a Y:Magma . fmod RIGHT-ID is sorts Elt Magma . subsort Elt < Magma . op __ : Magma Magma -> Magma [gather(e E)] . ops a b c d e x y z : -> Elt . var X : [Magma] . eq X e = X [variant] . endfm variant unify X:Magma a =? y a a . variant match X:Magma a <=? Y:Magma a a . variant unify a X:Magma =? a a y . variant match a X:Magma <=? a a Y:Magma . fmod XOR is sort XOR . sort Elem . ops a b c d w x y z : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm variant unify X + Y =? c . variant match X + Y <=? c . variant unify X + Y =? c + d . variant match X + Y <=? c + d . variant match X + Y <=? #1:Elem + d . variant match X + Y <=? #1:Elem + #2:Elem . Maude-Maude3.5.1/tests/Misc/variantMatching.expected0000664000175000017510000001205115036121435021756 0ustar nileshnilesh========================================== variant unify in FOO : f(X, g(Y, Z)) =? f(x, g(y, z)) . Unifier 1 rewrites: 1 X --> x Y --> y Z --> z No more unifiers. rewrites: 1 ========================================== variant match in FOO : f(X, g(Y, Z)) <=? f(X, g(Y, Z)) . rewrites: 1 Matcher 1 X --> X Y --> Y Z --> Z No more matchers. ========================================== variant unify in FOO : g(f(X, Y), Z) =? g(a, g(a, b)) . Unifier 1 rewrites: 2 X --> a Y --> 1f Z --> g(a, b) Unifier 2 rewrites: 2 X --> 1f Y --> a Z --> g(a, b) No more unifiers. rewrites: 2 ========================================== variant match in FOO : g(f(X, Y), Z) <=? g(a, g(A, B)) . rewrites: 2 Matcher 1 X --> a Y --> 1f Z --> g(A, B) Matcher 2 X --> 1f Y --> a Z --> g(A, B) No more matchers. ========================================== variant unify in FOO : f(1f, g(Y, Z)) =? g(y, z) . Unifier 1 rewrites: 1 Y --> y Z --> z No more unifiers. rewrites: 1 ========================================== variant match in FOO : f(1f, g(Y, Z)) <=? g(Y, Z) . rewrites: 1 Matcher 1 Y --> Y Z --> Z No more matchers. ========================================== variant unify in FOO : g(f(X, Y), Z) =? g(a, f(b, c)) . Unifier 1 rewrites: 2 X --> a Y --> 1f Z --> f(b, c) Unifier 2 rewrites: 2 X --> 1f Y --> a Z --> f(b, c) No more unifiers. rewrites: 2 ========================================== variant match in FOO : g(f(X, Y), Z) <=? g(A, f(B, C)) . rewrites: 2 Matcher 1 X --> A Y --> 1f Z --> f(B, C) Matcher 2 X --> 1f Y --> A Z --> f(B, C) No more matchers. ========================================== variant unify in LEFT-ID : X:Magma a =? y a a . Unifier 1 rewrites: 1 X:Magma --> y a No more unifiers. rewrites: 1 ========================================== variant match in LEFT-ID : X:Magma a <=? Y:Magma a a . rewrites: 1 Matcher 1 X:Magma --> Y:Magma a No more matchers. ========================================== variant unify in LEFT-ID : a X:Magma =? a a y . No unifiers. rewrites: 0 ========================================== variant match in LEFT-ID : a X:Magma <=? a a Y:Magma . rewrites: 0 No matchers. ========================================== variant unify in RIGHT-ID : X:Magma a =? y a a . No unifiers. rewrites: 0 ========================================== variant match in RIGHT-ID : X:Magma a <=? Y:Magma a a . rewrites: 0 No matchers. ========================================== variant unify in RIGHT-ID : a X:Magma =? a a y . Unifier 1 rewrites: 1 X:Magma --> a y No more unifiers. rewrites: 1 ========================================== variant match in RIGHT-ID : a X:Magma <=? a a Y:Magma . rewrites: 1 Matcher 1 X:Magma --> a Y:Magma No more matchers. ========================================== variant unify in XOR : X + Y =? c . Unifier 1 rewrites: 10 X --> 0 Y --> c Unifier 2 rewrites: 10 X --> c Y --> 0 Unifier 3 rewrites: 10 X --> c + #1:XOR Y --> #1:XOR Unifier 4 rewrites: 10 X --> #1:XOR Y --> c + #1:XOR No more unifiers. rewrites: 10 ========================================== variant match in XOR : X + Y <=? c . rewrites: 10 Matcher 1 X --> 0 Y --> c Matcher 2 X --> c Y --> 0 Matcher 3 X --> c + #1:XOR Y --> #1:XOR Matcher 4 X --> #1:XOR Y --> c + #1:XOR No more matchers. ========================================== variant unify in XOR : X + Y =? c + d . Unifier 1 rewrites: 6 X --> c Y --> d Unifier 2 rewrites: 6 X --> d Y --> c Unifier 3 rewrites: 10 X --> 0 Y --> c + d Unifier 4 rewrites: 10 X --> c + d Y --> 0 Unifier 5 rewrites: 10 X --> c + #1:XOR Y --> d + #1:XOR Unifier 6 rewrites: 10 X --> d + #1:XOR Y --> c + #1:XOR Unifier 7 rewrites: 10 X --> c + d + #1:XOR Y --> #1:XOR Unifier 8 rewrites: 10 X --> #1:XOR Y --> c + d + #1:XOR No more unifiers. rewrites: 10 ========================================== variant match in XOR : X + Y <=? c + d . rewrites: 10 Matcher 1 X --> c Y --> d Matcher 2 X --> d Y --> c Matcher 3 X --> 0 Y --> c + d Matcher 4 X --> c + d Y --> 0 Matcher 5 X --> c + #1:XOR Y --> d + #1:XOR Matcher 6 X --> d + #1:XOR Y --> c + #1:XOR Matcher 7 X --> c + d + #1:XOR Y --> #1:XOR Matcher 8 X --> #1:XOR Y --> c + d + #1:XOR No more matchers. ========================================== variant match in XOR : X + Y <=? #1:Elem + d . rewrites: 10 Matcher 1 X --> d Y --> #1:Elem Matcher 2 X --> #1:Elem Y --> d Matcher 3 X --> 0 Y --> d + #1:Elem Matcher 4 X --> d + #1:Elem Y --> 0 Matcher 5 X --> d + #2:XOR Y --> #2:XOR + #1:Elem Matcher 6 X --> #2:XOR + #1:Elem Y --> d + #2:XOR Matcher 7 X --> d + #2:XOR + #1:Elem Y --> #2:XOR Matcher 8 X --> #2:XOR Y --> d + #2:XOR + #1:Elem No more matchers. ========================================== variant match in XOR : X + Y <=? #1:Elem + #2:Elem . rewrites: 10 Matcher 1 X --> #1:Elem Y --> #2:Elem Matcher 2 X --> #2:Elem Y --> #1:Elem Matcher 3 X --> 0 Y --> #1:Elem + #2:Elem Matcher 4 X --> #1:Elem + #2:Elem Y --> 0 Matcher 5 X --> #3:XOR + #1:Elem Y --> #3:XOR + #2:Elem Matcher 6 X --> #3:XOR + #2:Elem Y --> #3:XOR + #1:Elem Matcher 7 X --> #3:XOR + #1:Elem + #2:Elem Y --> #3:XOR Matcher 8 X --> #3:XOR Y --> #3:XOR + #1:Elem + #2:Elem No more matchers. Bye. Maude-Maude3.5.1/tests/Misc/variantMatching0000775000175000017510000000037015036121435020162 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/variantMatching.maude -no-banner -no-advise \ > variantMatching.out 2>&1 diff $srcdir/variantMatching.expected variantMatching.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/unification3.maude0000664000175000017510000000407615036121435020534 0ustar nileshnilesh*** Unification problems where the order sorting interacts with collapse *** 9/14/10 set show timing off . fmod FOO is sorts Small Big . subsort Small < Big . op f : Big Big -> Big [assoc comm id: 1f] . op 1f : -> Small . op h : Small -> Big . endfm *** only collapse version is sortable unify X:Big =? h(f(Y:Big, Z:Big)) . fmod FOO1 is sorts Small Big . subsort Small < Big . op f : Big Big -> Big [assoc comm id: 1f] . op f : Small Small -> Small [ditto] . op 1f : -> Big . endfm *** collapse version is no longer covered unify X:Small =? f(Y:Big, Z:Big) . fmod FOO2 is sorts Small Big . subsort Small < Big . op a : -> Small . op g : Big -> Big . op f : Big Big -> Big [assoc comm id: g(a)] . op f : Small Small -> Small [assoc comm id: g(a)] . op 1f : -> Small . endfm *** only collapse version is sortable unify X:Small =? f(g(Y:Small), Z:Small) . fmod FOO3 is sorts Small Big . subsort Small < Big . op a : -> Big . op g : Big -> Big . op g : Small -> Small . op f : Big Big -> Big [assoc comm id: g(a)] . op f : Small Small -> Small [assoc comm id: g(a)] . op 1f : -> Small . endfm *** collapse version is no longer covered unify X:Small =? f(g(Y:Big), Z:Small) . fmod FOO4 is sorts Small Big . subsort Small < Big . op a : -> Small . op g : Big -> Big [iter] . op f : Big Big -> Big [assoc comm id: g^1000000(a)] . op f : Small Small -> Small [ditto] . op 1f : -> Small . endfm *** only collapse version is sortable unify X:Small =? f(g(Y:Big), Z:Small) . fmod FOO5 is sorts Small Big . subsort Small < Big . op a : -> Big . op g : Big -> Big [iter]. op g : Small -> Small [ditto] . op f : Big Big -> Big [assoc comm id: g^1000000(a)] . op f : Small Small -> Small [ditto] . op 1f : -> Small . endfm *** collapse version is no longer covered unify X:Small =? f(g(Y:Big), Z:Small) . fmod FOO6 is sorts Small Big . subsort Small < Big . op f : Big Big -> Big [assoc comm id: 1f] . op 1f : -> Small . op h : Small -> Big . endfm *** need empty basis selection unify X:Big =? h(f(Y:Big, Y:Big)) . Maude-Maude3.5.1/tests/Misc/unification3.expected0000664000175000017510000000300015036121435021224 0ustar nileshnilesh========================================== unify in FOO : X:Big =? h(f(Y:Big, Z:Big)) . Unifier 1 X:Big --> h(1f) Z:Big --> 1f Y:Big --> 1f Unifier 2 X:Big --> h(#1:Small) Z:Big --> #1:Small Y:Big --> 1f Unifier 3 X:Big --> h(#1:Small) Z:Big --> 1f Y:Big --> #1:Small ========================================== unify in FOO1 : X:Small =? f(Y:Big, Z:Big) . Unifier 1 X:Small --> #1:Small Z:Big --> #1:Small Y:Big --> 1f Unifier 2 X:Small --> #1:Small Z:Big --> 1f Y:Big --> #1:Small Unifier 3 X:Small --> f(#1:Small, #2:Small) Z:Big --> #1:Small Y:Big --> #2:Small ========================================== unify in FOO2 : X:Small =? f(g(Y:Small), Z:Small) . Unifier 1 X:Small --> #1:Small Z:Small --> #1:Small Y:Small --> a ========================================== unify in FOO3 : X:Small =? f(g(Y:Big), Z:Small) . Unifier 1 X:Small --> #1:Small Z:Small --> #1:Small Y:Big --> a Unifier 2 X:Small --> f(#1:Small, g(#2:Small)) Z:Small --> #1:Small Y:Big --> #2:Small ========================================== unify in FOO4 : X:Small =? f(g(Y:Big), Z:Small) . Unifier 1 X:Small --> #1:Small Z:Small --> #1:Small Y:Big --> g^999999(a) ========================================== unify in FOO5 : X:Small =? f(g(Y:Big), Z:Small) . Unifier 1 X:Small --> #1:Small Z:Small --> #1:Small Y:Big --> g^999999(a) Unifier 2 X:Small --> f(#1:Small, g(#2:Small)) Z:Small --> #1:Small Y:Big --> #2:Small ========================================== unify in FOO6 : X:Big =? h(f(Y:Big, Y:Big)) . Unifier 1 X:Big --> h(1f) Y:Big --> 1f Bye. Maude-Maude3.5.1/tests/Misc/unification30000775000175000017510000000035415036121435017440 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/unification3.maude -no-banner -no-advise \ > unification3.out 2>&1 diff $srcdir/unification3.expected unification3.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/unification2.maude0000664000175000017510000000331715036121435020530 0ustar nileshnilesh*** Tricky unification problems *** 8/12/10 set show timing off . fmod TEST is sort Foo . ops 1f a b c : -> Foo . op g : Foo Foo -> Foo . op h : Foo -> Foo . op f : Foo Foo -> Foo [assoc comm id: 1f] . vars A B C X Y Z : Foo . endfm *** long running time with naive algorithm unify g( f(X, X, Y, Y, h(Z)), f(X, Y, Y, Z, Z) ) =? g( f(A, A, A, B, C), f(A, B, B, h(C)) ) . fmod FOO is sort Foo . op f : Foo Foo -> Foo [assoc comm] . vars W X Y Z : Foo . endfm *** fewer unifiers with eager variable replacement unify X =? W /\ f(X, Y) =? f(W, Z) . fmod NAT' is protecting BOOL . sorts Zero NzNat Nat . subsort Zero NzNat < Nat . op 0 : -> Zero . op s_ : Nat -> NzNat [iter] . op _*_ : NzNat NzNat -> NzNat [assoc comm id: s(0) prec 31] . op _*_ : Nat Nat -> Nat [ditto] . vars W X Y Z A B C D : Nat . endfm *** cycle breaking through S theory unify X =? s (X * Y) . unify X =? s X * Y . *** theory conflict unify s X =? s X * Y . unify s X =? X * Y . fmod COMM is sort Foo . ops a b c d : -> Foo . op f : Foo Foo -> Foo [assoc comm id: c(a, b)] . op c : Foo Foo -> Foo [comm] . vars W X Y Z A B C D : Foo . endfm *** cycle breaking through comm theory unify X =? c(f(X, Y), Z) . fmod FOO2 is sort Foo . ops a b c d : -> Foo . op f : Foo Foo -> Foo [assoc comm id: g(c, d)] . op g : Foo Foo -> Foo [assoc comm id: f(a, b)] . vars X Y : Foo . endfm *** cycle breaking with non-disjoint identities unify X =? f(Y, a, b) /\ Y =? g(X, c, d) . fmod FOO3 is sort Foo . ops a b : -> Foo . op h : Foo -> Foo . op f : Foo Foo -> Foo [assoc comm id: h(f(a, b))] . vars X Y : Foo . endfm *** cycle breaking with non-disjoint identity unify X =? f(Y, a, b) /\ Y =? h(X) . Maude-Maude3.5.1/tests/Misc/unification2.expected0000664000175000017510000012051615036121435021237 0ustar nileshnilesh========================================== unify in TEST : g(f(X, X, Y, Y, h(Z)), f(X, Y, Y, Z, Z)) =? g(f(A, A, A, B, C), f(A, B, B, h(C))) . Unifier 1 X --> f(#1:Foo, #1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f( #3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))))) Y --> f(#7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #12:Foo, #14:Foo) Z --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))))) B --> f(#1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #13:Foo, #14:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo) Unifier 2 X --> f(#1:Foo, #1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) Y --> f(#7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #12:Foo, #14:Foo) Z --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) B --> f(#1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #13:Foo, #14:Foo) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo) Unifier 3 X --> f(#1:Foo, #1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f( #3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) Y --> f(#7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #12:Foo, #14:Foo, h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))))) Z --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))))) B --> f(#1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #13:Foo, #14:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f( #3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))))) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo) Unifier 4 X --> f(#1:Foo, #1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f( #3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) Y --> f(#7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #12:Foo, #14:Foo, h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo))) Z --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) B --> f(#1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo))) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo) Unifier 5 X --> f(#1:Foo, #1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo))) Y --> f(#7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #12:Foo, #14:Foo, h(f( #3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) Z --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) B --> f(#1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #13:Foo, #14:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo) Unifier 6 X --> f(#1:Foo, #1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo) Y --> f(#7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #12:Foo, #14:Foo, h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) Z --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) B --> f(#1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo) Unifier 7 X --> f(#1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #7:Foo, #7:Foo, #7:Foo, #7:Foo, #7:Foo, #7:Foo, #7:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #10:Foo, #10:Foo, #10:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #15:Foo, #15:Foo, #15:Foo, #15:Foo, #15:Foo, #15:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #17:Foo, #17:Foo, #17:Foo, #17:Foo, #18:Foo, #18:Foo, #18:Foo, #18:Foo, #18:Foo, #18:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #24:Foo, #24:Foo, #24:Foo, #24:Foo, #24:Foo, #25:Foo, #25:Foo, #25:Foo, #25:Foo, #25:Foo, #25:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #27:Foo, #27:Foo, #27:Foo, #27:Foo, #27:Foo, #27:Foo, #27:Foo, #28:Foo, #28:Foo, #28:Foo, #28:Foo, #28:Foo, #28:Foo, #28:Foo, #28:Foo, #28:Foo, #29:Foo, #29:Foo, #29:Foo, #30:Foo, #30:Foo, #30:Foo, #30:Foo, #30:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #32:Foo, #32:Foo, #32:Foo, #32:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #37:Foo, #37:Foo, #37:Foo, #37:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #40:Foo, #40:Foo, #41:Foo, #41:Foo, #41:Foo, #41:Foo, #41:Foo, #41:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #44:Foo, #44:Foo, #44:Foo, #44:Foo, #44:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #46:Foo, #46:Foo, #46:Foo, #46:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #48:Foo, #48:Foo, #49:Foo, #49:Foo, #49:Foo, #49:Foo, #50:Foo, #50:Foo, #50:Foo, #50:Foo, #50:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #52:Foo, #52:Foo, #52:Foo, #52:Foo, #52:Foo, #52:Foo, #53:Foo, #53:Foo, #54:Foo, #54:Foo, #54:Foo, #54:Foo, #54:Foo, #54:Foo, #54:Foo, #54:Foo, #54:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #58:Foo, #58:Foo, #58:Foo, #58:Foo, #59:Foo, #59:Foo, #59:Foo, #60:Foo, #60:Foo) Y --> f(#3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #9:Foo, #13:Foo, #14:Foo, #15:Foo, #15:Foo, #17:Foo, #21:Foo, #24:Foo, #27:Foo, #29:Foo, #29:Foo, #30:Foo, #35:Foo, #37:Foo, #37:Foo, #38:Foo, #40:Foo, #44:Foo, #45:Foo, #46:Foo, #46:Foo, #48:Foo, #50:Foo, #51:Foo, #52:Foo, #52:Foo, #53:Foo, #53:Foo, #53:Foo, #57:Foo, #58:Foo, #59:Foo, #59:Foo, #60:Foo, #60:Foo, #60:Foo, #61:Foo, #61:Foo, h(f(#1:Foo, #5:Foo, #6:Foo, #6:Foo, #7:Foo, #7:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #15:Foo, #15:Foo, #15:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #17:Foo, #18:Foo, #18:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #24:Foo, #24:Foo, #24:Foo, #25:Foo, #25:Foo, #26:Foo, #26:Foo, #27:Foo, #27:Foo, #28:Foo, #28:Foo, #28:Foo, #29:Foo, #29:Foo, #30:Foo, #30:Foo, #30:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #32:Foo, #32:Foo, #32:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #37:Foo, #37:Foo, #37:Foo, #37:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #40:Foo, #40:Foo, #41:Foo, #41:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #44:Foo, #44:Foo, #44:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #46:Foo, #46:Foo, #46:Foo, #46:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #48:Foo, #48:Foo, #49:Foo, #49:Foo, #49:Foo, #50:Foo, #50:Foo, #50:Foo, #51:Foo, #51:Foo, #51:Foo, #52:Foo, #52:Foo, #52:Foo, #53:Foo, #53:Foo, #53:Foo, #54:Foo, #54:Foo, #54:Foo, #55:Foo, #55:Foo, #55:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #58:Foo, #59:Foo, #59:Foo, #60:Foo, #60:Foo, #60:Foo, #61:Foo))) Z --> f(#1:Foo, #5:Foo, #6:Foo, #6:Foo, #7:Foo, #7:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #15:Foo, #15:Foo, #15:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #17:Foo, #18:Foo, #18:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #24:Foo, #24:Foo, #24:Foo, #25:Foo, #25:Foo, #26:Foo, #26:Foo, #27:Foo, #27:Foo, #28:Foo, #28:Foo, #28:Foo, #29:Foo, #29:Foo, #30:Foo, #30:Foo, #30:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #32:Foo, #32:Foo, #32:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #37:Foo, #37:Foo, #37:Foo, #37:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #40:Foo, #40:Foo, #41:Foo, #41:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #44:Foo, #44:Foo, #44:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #46:Foo, #46:Foo, #46:Foo, #46:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #48:Foo, #48:Foo, #49:Foo, #49:Foo, #49:Foo, #50:Foo, #50:Foo, #50:Foo, #51:Foo, #51:Foo, #51:Foo, #52:Foo, #52:Foo, #52:Foo, #53:Foo, #53:Foo, #53:Foo, #54:Foo, #54:Foo, #54:Foo, #55:Foo, #55:Foo, #55:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #58:Foo, #59:Foo, #59:Foo, #60:Foo, #60:Foo, #60:Foo, #61:Foo) A --> f(#1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #7:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, #14:Foo, #15:Foo, #15:Foo, #16:Foo, #16:Foo, #17:Foo, #17:Foo, #18:Foo, #18:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #20:Foo, #20:Foo, #20:Foo, #21:Foo, #21:Foo, #22:Foo, #22:Foo, #23:Foo, #24:Foo, #25:Foo, #25:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #27:Foo, #27:Foo, #27:Foo, #28:Foo, #28:Foo, #28:Foo, #29:Foo, #30:Foo, #31:Foo, #33:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #35:Foo, #35:Foo, #36:Foo, #36:Foo, #41:Foo, #41:Foo, #42:Foo, #43:Foo, #43:Foo, #44:Foo, #50:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #52:Foo, #52:Foo, #54:Foo, #54:Foo, #54:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #56:Foo, #56:Foo, #56:Foo, #57:Foo, #57:Foo, #58:Foo, #58:Foo, #59:Foo, h(f(#1:Foo, #5:Foo, #6:Foo, #6:Foo, #7:Foo, #7:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #15:Foo, #15:Foo, #15:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #17:Foo, #18:Foo, #18:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #24:Foo, #24:Foo, #24:Foo, #25:Foo, #25:Foo, #26:Foo, #26:Foo, #27:Foo, #27:Foo, #28:Foo, #28:Foo, #28:Foo, #29:Foo, #29:Foo, #30:Foo, #30:Foo, #30:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #32:Foo, #32:Foo, #32:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #37:Foo, #37:Foo, #37:Foo, #37:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #40:Foo, #40:Foo, #41:Foo, #41:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #44:Foo, #44:Foo, #44:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #46:Foo, #46:Foo, #46:Foo, #46:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #48:Foo, #48:Foo, #49:Foo, #49:Foo, #49:Foo, #50:Foo, #50:Foo, #50:Foo, #51:Foo, #51:Foo, #51:Foo, #52:Foo, #52:Foo, #52:Foo, #53:Foo, #53:Foo, #53:Foo, #54:Foo, #54:Foo, #54:Foo, #55:Foo, #55:Foo, #55:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #58:Foo, #59:Foo, #59:Foo, #60:Foo, #60:Foo, #60:Foo, #61:Foo))) B --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #7:Foo, #7:Foo, #7:Foo, #7:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #15:Foo, #15:Foo, #15:Foo, #15:Foo, #15:Foo, #15:Foo, #15:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #17:Foo, #17:Foo, #17:Foo, #18:Foo, #18:Foo, #18:Foo, #18:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #24:Foo, #24:Foo, #24:Foo, #24:Foo, #24:Foo, #24:Foo, #25:Foo, #25:Foo, #25:Foo, #25:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #26:Foo, #27:Foo, #27:Foo, #27:Foo, #27:Foo, #27:Foo, #28:Foo, #28:Foo, #28:Foo, #28:Foo, #28:Foo, #28:Foo, #29:Foo, #29:Foo, #29:Foo, #29:Foo, #29:Foo, #30:Foo, #30:Foo, #30:Foo, #30:Foo, #30:Foo, #30:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #32:Foo, #32:Foo, #32:Foo, #32:Foo, #32:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #37:Foo, #37:Foo, #37:Foo, #37:Foo, #37:Foo, #37:Foo, #37:Foo, #37:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #40:Foo, #40:Foo, #40:Foo, #40:Foo, #41:Foo, #41:Foo, #41:Foo, #41:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #44:Foo, #44:Foo, #44:Foo, #44:Foo, #44:Foo, #44:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #46:Foo, #46:Foo, #46:Foo, #46:Foo, #46:Foo, #46:Foo, #46:Foo, #46:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #48:Foo, #48:Foo, #48:Foo, #48:Foo, #49:Foo, #49:Foo, #49:Foo, #49:Foo, #49:Foo, #50:Foo, #50:Foo, #50:Foo, #50:Foo, #50:Foo, #50:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #51:Foo, #52:Foo, #52:Foo, #52:Foo, #52:Foo, #52:Foo, #52:Foo, #52:Foo, #53:Foo, #53:Foo, #53:Foo, #53:Foo, #53:Foo, #53:Foo, #53:Foo, #54:Foo, #54:Foo, #54:Foo, #54:Foo, #54:Foo, #54:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #55:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #58:Foo, #58:Foo, #58:Foo, #59:Foo, #59:Foo, #59:Foo, #59:Foo, #59:Foo, #60:Foo, #60:Foo, #60:Foo, #60:Foo, #60:Foo, #60:Foo, #60:Foo, #61:Foo, #61:Foo, #61:Foo) C --> f(#1:Foo, #5:Foo, #6:Foo, #6:Foo, #7:Foo, #7:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #12:Foo, #12:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, #14:Foo, #14:Foo, #14:Foo, #15:Foo, #15:Foo, #15:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #16:Foo, #17:Foo, #18:Foo, #18:Foo, #19:Foo, #19:Foo, #19:Foo, #19:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #20:Foo, #21:Foo, #21:Foo, #21:Foo, #21:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #22:Foo, #23:Foo, #23:Foo, #23:Foo, #23:Foo, #24:Foo, #24:Foo, #24:Foo, #25:Foo, #25:Foo, #26:Foo, #26:Foo, #27:Foo, #27:Foo, #28:Foo, #28:Foo, #28:Foo, #29:Foo, #29:Foo, #30:Foo, #30:Foo, #30:Foo, #31:Foo, #31:Foo, #31:Foo, #31:Foo, #32:Foo, #32:Foo, #32:Foo, #33:Foo, #33:Foo, #33:Foo, #33:Foo, #34:Foo, #34:Foo, #34:Foo, #34:Foo, #35:Foo, #35:Foo, #35:Foo, #35:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #36:Foo, #37:Foo, #37:Foo, #37:Foo, #37:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #38:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #39:Foo, #40:Foo, #40:Foo, #41:Foo, #41:Foo, #42:Foo, #42:Foo, #42:Foo, #42:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #43:Foo, #44:Foo, #44:Foo, #44:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #45:Foo, #46:Foo, #46:Foo, #46:Foo, #46:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #47:Foo, #48:Foo, #48:Foo, #49:Foo, #49:Foo, #49:Foo, #50:Foo, #50:Foo, #50:Foo, #51:Foo, #51:Foo, #51:Foo, #52:Foo, #52:Foo, #52:Foo, #53:Foo, #53:Foo, #53:Foo, #54:Foo, #54:Foo, #54:Foo, #55:Foo, #55:Foo, #55:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #56:Foo, #57:Foo, #57:Foo, #57:Foo, #57:Foo, #58:Foo, #59:Foo, #59:Foo, #60:Foo, #60:Foo, #60:Foo, #61:Foo) Unifier 8 X --> f(#1:Foo, #1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))))) Y --> f(#7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #12:Foo, #14:Foo) Z --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))))) B --> f(#1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #13:Foo, #14:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo) Unifier 9 X --> f(#1:Foo, #1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) Y --> f(#7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #12:Foo, #14:Foo, h(f( #1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f( #3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))))) Z --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))))) B --> f(#1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #13:Foo, #14:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h( f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)))), h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo)), h(f( #3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo))))) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo) Unifier 10 X --> f(#1:Foo, #1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)))), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)))), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo))))) Y --> f(#7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #12:Foo, #14:Foo) Z --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)))), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo))))) B --> f(#1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #13:Foo, #14:Foo) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo))) Unifier 11 X --> f(#1:Foo, #1:Foo, #1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #5:Foo, #5:Foo, #6:Foo, #6:Foo, #6:Foo, #7:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo) Y --> f(#7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #12:Foo, #14:Foo, h(f( #3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo)))), h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo))))) Z --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo))))) B --> f(#1:Foo, #1:Foo, #2:Foo, #2:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo, #8:Foo, #8:Foo, #8:Foo, #8:Foo, #9:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #10:Foo, #11:Foo, #11:Foo, #12:Foo, #12:Foo, #13:Foo, #14:Foo, h(f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo))))) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #10:Foo, #11:Foo, #11:Foo, #13:Foo, #13:Foo, #13:Foo, #14:Foo, h(f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #9:Foo, #9:Foo, #9:Foo, #10:Foo, #10:Foo, #11:Foo, #12:Foo))) ========================================== unify in FOO : X =? W /\ f(X, Y) =? f(W, Z) . Unifier 1 X --> #1:Foo W --> #1:Foo Y --> #2:Foo Z --> #2:Foo ========================================== unify in NAT' : X =? s (X * Y) . Unifier 1 X --> s 0 Y --> 0 Unifier 2 X --> s 0 Y --> 0 ========================================== unify in NAT' : X =? s X * Y . Unifier 1 X --> 0 Y --> 0 Unifier 2 X --> 0 Y --> 0 ========================================== unify in NAT' : s X =? s X * Y . Unifier 1 X --> #1:Nat Y --> s 0 ========================================== unify in NAT' : s X =? X * Y . Unifier 1 X --> s 0 Y --> s_^2(0) ========================================== unify in COMM : X =? c(f(X, Y), Z) . Unifier 1 X --> c(a, b) Z --> a Y --> b Unifier 2 X --> c(a, b) Z --> b Y --> a ========================================== unify in FOO2 : X =? f(Y, a, b) /\ Y =? g(X, c, d) . Unifier 1 X --> f(a, b) Y --> g(c, d) Unifier 2 X --> f(a, b) Y --> g(c, d) ========================================== unify in FOO3 : X =? f(Y, a, b) /\ Y =? h(X) . Unifier 1 X --> f(a, b) Y --> h(f(a, b)) Bye. Maude-Maude3.5.1/tests/Misc/unification20000775000175000017510000000035415036121435017437 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/unification2.maude -no-banner -no-advise \ > unification2.out 2>&1 diff $srcdir/unification2.expected unification2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/unification.maude0000664000175000017510000000713615036121435020451 0ustar nileshnileshset show advise off . set show timing off . *** order sorted free theory unification is not unitary fmod TEST is pr NAT . op f : Nat Nat -> Nat . op f : NzNat Nat -> NzNat . op f : Nat NzNat -> NzNat . endfm unify f(X:Nat, Y:Nat) ^ B:NzNat =? A:NzNat ^ f(Y:Nat, Z:Nat) . *** quite modest AC unification problems can produce a large number of *** unifiers unify [100] in NAT : X:Nat + X:Nat + Y:Nat =? A:Nat + B:Nat + C:Nat . *** built-in constants are handled; built in functions are not *** evaluated unify in CONVERSION : X:String < "foo" + Y:Char =? Z:String + string(pi) < "foo" + Z:String . *** using forbidden variable names in unificands fails with a warning unify in NAT : X:Nat ^ #1:Nat =? #2:Nat . fmod TEST2 is pr NAT . op f : Nat Nat -> Nat [assoc left id: 0] . endfm *** using of a symbol from an unsupported theory above a non-gound *** term fails with a warning unify f(f(X:Nat, Y:Nat), Z:Nat) =? f(A:Nat, B:Nat) . *** all symbols are allowed in ground terms unify X:Nat + f(41, 42) =? Y:Nat + f(41, 42) . *** order sorted unification is efficient on the iter representation fmod ITER is sorts NzEvenNat EvenNat OddNat NzNat Nat EvenInt OddInt NzInt Int . subsorts OddNat < OddInt NzNat < NzInt < Int . subsorts EvenNat < EvenInt Nat < Int . subsorts NzEvenNat < NzNat EvenNat < Nat . op 0 : -> EvenNat . op s : EvenNat -> OddNat [iter] . op s : OddNat -> NzEvenNat [iter] . op s : Nat -> NzNat [iter] . op s : EvenInt -> OddInt [iter] . op s : OddInt -> EvenInt [iter] . op s : Int -> Int [iter] . op _+_ : Int Int -> Int [comm gather (E e)] . op _+_ : OddInt OddInt -> EvenInt [ditto] . op _+_ : EvenInt EvenInt -> EvenInt [ditto] . op _+_ : OddInt EvenInt -> OddInt [ditto] . op _+_ : Nat Nat -> Nat [ditto] . op _+_ : Nat NzNat -> NzNat [ditto] . op _+_ : OddNat OddNat -> NzEvenNat [ditto] . op _+_ : NzEvenNat EvenNat -> NzEvenNat [ditto] . op _+_ : EvenNat EvenNat -> EvenNat [ditto] . op _+_ : OddNat EvenNat -> OddNat [ditto] . endfm unify s^1000000(X:OddNat) =? s^100000000001(Y:Int) . unify s^1000000(X:OddNat) =? s^100000000001(Y:Int + Z:Int + W:Int) . fmod AC is sort Foo . ops a b c d e z : -> Foo . op f : Foo Foo -> Foo [assoc comm] . op g : Foo Foo -> Foo . vars W X Y Z A B C D E F : Foo . endfm unify f(X, Y) =? f(A, B) . unify f(X, Y) =? f(a, b) . unify f(X, Y) =? f(a, b, c) . match f(X, Y) <=? f(a, b, c) . unify f(X, X, Y) =? f(X, Y, Y) . unify f(X, X, Y) =? f(X, Y) . unify f(X, X, Y) =? f(A, B, C) . unify f(X, X, Y) =? f(a, B, C) . unify f(X, X, X) =? f(a, a) . unify f(X, X, X, Y) =? f(a, a) . fmod AC2 is sort Elt Set . subsort Elt < Set . ops a b c d e z : -> Elt . op f : Set Set -> Set [assoc comm] . op g : Set Set -> Set . vars U V W X Y Z : Set . vars A B C D E F : Elt . endfm unify f(A, B) =? f(C, D) . unify f(X, A) =? f(Y, B) . unify f(g(X, Y), g(X, Z), U) =? f(g(Y, Z), V) . unify g(f(X, Y), f(X, U, Z)) =? g(f(U, V), f(W, A)) . fmod AC+C is sort Elt Set . subsort Elt < Set . ops a b c d e z : -> Elt . op f : Set Set -> Set [assoc comm] . op g : Set Set -> Set [comm] . vars U V W X Y Z : Set . vars A B C D E F : Elt . endfm unify f(g(X, Y), g(X, Z), U) =? f(g(Y, Z), V) . unify g(f(X, Y), f(X, U, Z)) =? g(f(U, V), f(W, A)) . *** simultaneous unification fmod SIMULT is sort Foo . ops g h : Foo -> Foo . endfm unify g(X:Foo) =? g(Y:Foo) /\ h(X:Foo) =? h(Z:Foo) . unify g(X:Foo) =? Y:Foo /\ h(X:Foo) =? h(Z:Foo) . unify g(X:Foo) =? Y:Foo /\ h(X:Foo) =? h(Y:Foo) . unify g(X:Foo) =? Y:Foo /\ X:Foo =? h(Y:Foo) . unify [1] in SIMULT : g(X:Foo) =? Y:Foo /\ h(X:Foo) =? h(Z:Foo) . Maude-Maude3.5.1/tests/Misc/unification.expected0000664000175000017510000032114715036121435021160 0ustar nileshnilesh========================================== unify in TEST : f(X:Nat, Y:Nat) ^ B:NzNat =? A:NzNat ^ f(Y:Nat, Z:Nat) . Unifier 1 X:Nat --> #1:Nat Y:Nat --> #2:NzNat B:NzNat --> f(#2:NzNat, #3:Nat) A:NzNat --> f(#1:Nat, #2:NzNat) Z:Nat --> #3:Nat Unifier 2 X:Nat --> #1:NzNat Y:Nat --> #2:Nat B:NzNat --> f(#2:Nat, #3:NzNat) A:NzNat --> f(#1:NzNat, #2:Nat) Z:Nat --> #3:NzNat ========================================== unify [100] in NAT : X:Nat + X:Nat + Y:Nat =? A:Nat + B:Nat + C:Nat . Unifier 1 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #6:Nat + #8:Nat Y:Nat --> #4:Nat + #7:Nat + #9:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat + #6:Nat + #7:Nat C:Nat --> #3:Nat + #6:Nat + #8:Nat + #8:Nat + #9:Nat Unifier 2 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #6:Nat + #8:Nat Y:Nat --> #4:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat + #6:Nat + #7:Nat C:Nat --> #3:Nat + #6:Nat + #8:Nat + #8:Nat Unifier 3 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #6:Nat Y:Nat --> #4:Nat + #7:Nat + #8:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat + #6:Nat + #7:Nat C:Nat --> #3:Nat + #6:Nat + #8:Nat Unifier 4 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #6:Nat Y:Nat --> #4:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat + #6:Nat + #7:Nat C:Nat --> #3:Nat + #6:Nat Unifier 5 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #6:Nat + #7:Nat Y:Nat --> #4:Nat + #8:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #6:Nat + #7:Nat + #7:Nat + #8:Nat Unifier 6 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat + #7:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #4:Nat + #6:Nat + #7:Nat + #7:Nat Unifier 7 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #6:Nat Y:Nat --> #4:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #6:Nat + #7:Nat Unifier 8 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #4:Nat + #6:Nat Unifier 9 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #7:Nat Y:Nat --> #4:Nat + #6:Nat + #8:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #7:Nat + #7:Nat + #8:Nat Unifier 10 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #7:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #7:Nat + #7:Nat Unifier 11 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #7:Nat Unifier 12 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #1:Nat Unifier 13 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #6:Nat Y:Nat --> #4:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat C:Nat --> #3:Nat + #6:Nat + #6:Nat + #7:Nat Unifier 14 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat + #5:Nat C:Nat --> #4:Nat + #6:Nat + #6:Nat Unifier 15 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #5:Nat C:Nat --> #3:Nat + #6:Nat Unifier 16 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #3:Nat + #3:Nat + #4:Nat B:Nat --> #4:Nat + #5:Nat + #5:Nat C:Nat --> #2:Nat Unifier 17 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #7:Nat Y:Nat --> #4:Nat + #6:Nat + #8:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #5:Nat + #7:Nat + #7:Nat + #8:Nat Unifier 18 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #7:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #5:Nat + #7:Nat + #7:Nat Unifier 19 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #5:Nat + #7:Nat Unifier 20 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #5:Nat Unifier 21 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat + #6:Nat Y:Nat --> #4:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat C:Nat --> #3:Nat + #5:Nat + #6:Nat + #6:Nat + #7:Nat Unifier 22 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat C:Nat --> #4:Nat + #5:Nat + #6:Nat + #6:Nat Unifier 23 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat C:Nat --> #3:Nat + #5:Nat + #6:Nat Unifier 24 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat C:Nat --> #4:Nat + #5:Nat Unifier 25 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #6:Nat Y:Nat --> #4:Nat + #5:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat C:Nat --> #3:Nat + #6:Nat + #6:Nat + #7:Nat Unifier 26 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #6:Nat Y:Nat --> #4:Nat + #5:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat C:Nat --> #3:Nat + #6:Nat + #6:Nat Unifier 27 X:Nat --> #1:Nat + #2:Nat + #3:Nat Y:Nat --> #4:Nat + #5:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #5:Nat C:Nat --> #3:Nat + #6:Nat Unifier 28 X:Nat --> #1:Nat + #2:Nat + #3:Nat Y:Nat --> #4:Nat + #5:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat C:Nat --> #1:Nat Unifier 29 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat C:Nat --> #3:Nat + #5:Nat + #5:Nat + #6:Nat Unifier 30 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #3:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat C:Nat --> #4:Nat + #5:Nat + #5:Nat Unifier 31 X:Nat --> #1:Nat + #2:Nat + #3:Nat Y:Nat --> #4:Nat + #5:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat C:Nat --> #3:Nat + #5:Nat Unifier 32 X:Nat --> #2:Nat + #3:Nat + #4:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #3:Nat + #4:Nat + #4:Nat B:Nat --> #2:Nat C:Nat --> #3:Nat Unifier 33 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #4:Nat + #5:Nat + #7:Nat Y:Nat --> #6:Nat + #8:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #5:Nat + #7:Nat + #7:Nat + #8:Nat Unifier 34 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat + #7:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #3:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #4:Nat + #6:Nat + #7:Nat + #7:Nat Unifier 35 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #6:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat + #6:Nat C:Nat --> #3:Nat + #5:Nat + #7:Nat Unifier 36 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #3:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #4:Nat + #6:Nat Unifier 37 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat + #7:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #1:Nat + #4:Nat + #6:Nat + #7:Nat + #7:Nat Unifier 38 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #1:Nat + #4:Nat + #6:Nat Unifier 39 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #4:Nat + #6:Nat Y:Nat --> #5:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #3:Nat + #6:Nat + #6:Nat + #7:Nat Unifier 40 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #3:Nat + #5:Nat + #5:Nat C:Nat --> #4:Nat + #6:Nat + #6:Nat Unifier 41 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #4:Nat Y:Nat --> #5:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #3:Nat + #6:Nat Unifier 42 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #3:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #4:Nat + #5:Nat + #5:Nat C:Nat --> #2:Nat Unifier 43 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat + #5:Nat C:Nat --> #1:Nat + #4:Nat + #6:Nat + #6:Nat Unifier 44 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat + #5:Nat C:Nat --> #1:Nat + #4:Nat Unifier 45 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #4:Nat + #6:Nat Y:Nat --> #5:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #5:Nat C:Nat --> #3:Nat + #4:Nat + #6:Nat + #6:Nat + #7:Nat Unifier 46 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #3:Nat + #5:Nat C:Nat --> #4:Nat + #5:Nat + #6:Nat + #6:Nat Unifier 47 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #4:Nat Y:Nat --> #5:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #5:Nat C:Nat --> #3:Nat + #4:Nat + #6:Nat Unifier 48 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #3:Nat + #5:Nat C:Nat --> #4:Nat + #5:Nat Unifier 49 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat C:Nat --> #1:Nat + #4:Nat + #5:Nat + #6:Nat + #6:Nat Unifier 50 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat C:Nat --> #1:Nat + #4:Nat + #5:Nat Unifier 51 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat C:Nat --> #3:Nat + #5:Nat + #5:Nat + #6:Nat Unifier 52 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #3:Nat C:Nat --> #4:Nat + #5:Nat + #5:Nat Unifier 53 X:Nat --> #1:Nat + #2:Nat + #3:Nat Y:Nat --> #4:Nat + #5:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat C:Nat --> #3:Nat + #5:Nat Unifier 54 X:Nat --> #2:Nat + #3:Nat + #4:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #3:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #4:Nat C:Nat --> #2:Nat Unifier 55 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #3:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat C:Nat --> #1:Nat + #4:Nat + #5:Nat + #5:Nat Unifier 56 X:Nat --> #2:Nat + #3:Nat + #4:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #3:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat C:Nat --> #1:Nat + #4:Nat Unifier 57 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #5:Nat + #7:Nat Y:Nat --> #3:Nat + #6:Nat + #8:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat + #6:Nat C:Nat --> #5:Nat + #7:Nat + #7:Nat + #8:Nat Unifier 58 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #5:Nat + #7:Nat Y:Nat --> #3:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat + #6:Nat C:Nat --> #5:Nat + #7:Nat + #7:Nat Unifier 59 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #5:Nat Y:Nat --> #3:Nat + #6:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat + #6:Nat C:Nat --> #5:Nat + #7:Nat Unifier 60 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #3:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #1:Nat Unifier 61 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #3:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #5:Nat + #6:Nat + #6:Nat + #7:Nat Unifier 62 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat B:Nat --> #3:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #5:Nat + #6:Nat + #6:Nat Unifier 63 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #5:Nat Y:Nat --> #3:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #5:Nat + #6:Nat Unifier 64 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #3:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #4:Nat + #5:Nat + #5:Nat C:Nat --> #2:Nat Unifier 65 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #6:Nat Y:Nat --> #3:Nat + #5:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #6:Nat + #6:Nat + #7:Nat Unifier 66 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #6:Nat Y:Nat --> #3:Nat + #5:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #6:Nat + #6:Nat Unifier 67 X:Nat --> #2:Nat + #3:Nat + #5:Nat Y:Nat --> #1:Nat + #4:Nat + #6:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat + #5:Nat + #6:Nat C:Nat --> #1:Nat Unifier 68 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #5:Nat Y:Nat --> #3:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #4:Nat C:Nat --> #5:Nat + #5:Nat + #6:Nat Unifier 69 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat B:Nat --> #3:Nat + #4:Nat + #4:Nat C:Nat --> #5:Nat + #5:Nat Unifier 70 X:Nat --> #2:Nat + #3:Nat + #5:Nat Y:Nat --> #1:Nat + #4:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat + #5:Nat C:Nat --> #1:Nat Unifier 71 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #6:Nat Y:Nat --> #3:Nat + #5:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #5:Nat C:Nat --> #4:Nat + #6:Nat + #6:Nat + #7:Nat Unifier 72 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #6:Nat Y:Nat --> #3:Nat + #5:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #5:Nat C:Nat --> #4:Nat + #6:Nat + #6:Nat Unifier 73 X:Nat --> #1:Nat + #2:Nat + #4:Nat Y:Nat --> #3:Nat + #5:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat + #5:Nat C:Nat --> #4:Nat + #6:Nat Unifier 74 X:Nat --> #1:Nat + #2:Nat + #3:Nat Y:Nat --> #4:Nat + #5:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #3:Nat + #5:Nat C:Nat --> #1:Nat Unifier 75 X:Nat --> #1:Nat + #2:Nat + #4:Nat + #5:Nat Y:Nat --> #3:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat C:Nat --> #4:Nat + #5:Nat + #5:Nat + #6:Nat Unifier 76 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat B:Nat --> #3:Nat + #4:Nat C:Nat --> #4:Nat + #5:Nat + #5:Nat Unifier 77 X:Nat --> #1:Nat + #2:Nat + #4:Nat Y:Nat --> #3:Nat + #5:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat C:Nat --> #4:Nat + #5:Nat Unifier 78 X:Nat --> #2:Nat + #3:Nat + #4:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #3:Nat + #3:Nat + #4:Nat B:Nat --> #2:Nat + #4:Nat C:Nat --> #2:Nat Unifier 79 X:Nat --> #1:Nat + #2:Nat + #5:Nat Y:Nat --> #3:Nat + #4:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat C:Nat --> #5:Nat + #5:Nat + #6:Nat Unifier 80 X:Nat --> #1:Nat + #2:Nat + #5:Nat Y:Nat --> #3:Nat + #4:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat + #3:Nat B:Nat --> #2:Nat + #4:Nat C:Nat --> #5:Nat + #5:Nat Unifier 81 X:Nat --> #2:Nat + #3:Nat Y:Nat --> #1:Nat + #4:Nat + #5:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat + #4:Nat B:Nat --> #3:Nat + #5:Nat C:Nat --> #1:Nat Unifier 82 X:Nat --> #1:Nat + #2:Nat + #4:Nat Y:Nat --> #3:Nat + #5:Nat A:Nat --> #1:Nat + #2:Nat + #2:Nat + #3:Nat B:Nat --> #1:Nat C:Nat --> #4:Nat + #4:Nat + #5:Nat Unifier 83 X:Nat --> #2:Nat + #3:Nat + #4:Nat Y:Nat --> #1:Nat A:Nat --> #1:Nat + #2:Nat + #3:Nat + #3:Nat B:Nat --> #2:Nat C:Nat --> #4:Nat + #4:Nat Unifier 84 X:Nat --> #1:Nat + #3:Nat Y:Nat --> #2:Nat + #4:Nat A:Nat --> #1:Nat + #3:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat C:Nat --> #2:Nat Unifier 85 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #4:Nat + #6:Nat Y:Nat --> #5:Nat + #7:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat B:Nat --> #2:Nat + #3:Nat + #3:Nat + #4:Nat + #5:Nat C:Nat --> #4:Nat + #6:Nat + #6:Nat + #7:Nat Unifier 86 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat B:Nat --> #1:Nat + #3:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #5:Nat + #6:Nat + #6:Nat Unifier 87 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #4:Nat Y:Nat --> #5:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat B:Nat --> #2:Nat + #3:Nat + #3:Nat + #4:Nat + #5:Nat C:Nat --> #4:Nat + #6:Nat Unifier 88 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #3:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #2:Nat + #4:Nat + #5:Nat + #5:Nat C:Nat --> #2:Nat Unifier 89 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat + #6:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat B:Nat --> #3:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #1:Nat + #5:Nat + #6:Nat + #6:Nat Unifier 90 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat B:Nat --> #3:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #1:Nat + #5:Nat Unifier 91 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat B:Nat --> #2:Nat + #3:Nat + #3:Nat + #4:Nat C:Nat --> #5:Nat + #5:Nat + #6:Nat Unifier 92 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat B:Nat --> #1:Nat + #3:Nat + #4:Nat + #4:Nat C:Nat --> #5:Nat + #5:Nat Unifier 93 X:Nat --> #2:Nat + #3:Nat + #4:Nat Y:Nat --> #1:Nat + #5:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat B:Nat --> #3:Nat + #4:Nat + #4:Nat + #5:Nat C:Nat --> #1:Nat Unifier 94 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat B:Nat --> #3:Nat + #4:Nat + #4:Nat C:Nat --> #1:Nat + #5:Nat + #5:Nat Unifier 95 X:Nat --> #2:Nat + #3:Nat + #4:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat B:Nat --> #3:Nat + #4:Nat + #4:Nat C:Nat --> #1:Nat Unifier 96 X:Nat --> #1:Nat + #2:Nat + #3:Nat + #5:Nat Y:Nat --> #4:Nat + #6:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat B:Nat --> #2:Nat + #3:Nat + #4:Nat C:Nat --> #3:Nat + #5:Nat + #5:Nat + #6:Nat Unifier 97 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat B:Nat --> #1:Nat + #3:Nat + #4:Nat C:Nat --> #4:Nat + #5:Nat + #5:Nat Unifier 98 X:Nat --> #1:Nat + #2:Nat + #3:Nat Y:Nat --> #4:Nat + #5:Nat A:Nat --> #1:Nat + #1:Nat + #2:Nat B:Nat --> #2:Nat + #3:Nat + #4:Nat C:Nat --> #3:Nat + #5:Nat Unifier 99 X:Nat --> #2:Nat + #3:Nat + #4:Nat Y:Nat --> #1:Nat A:Nat --> #3:Nat + #3:Nat + #4:Nat B:Nat --> #1:Nat + #2:Nat + #4:Nat C:Nat --> #2:Nat Unifier 100 X:Nat --> #2:Nat + #3:Nat + #4:Nat + #5:Nat Y:Nat --> #1:Nat A:Nat --> #2:Nat + #2:Nat + #3:Nat B:Nat --> #3:Nat + #4:Nat C:Nat --> #1:Nat + #4:Nat + #5:Nat + #5:Nat ========================================== unify in CONVERSION : X:String < "foo" + Y:Char =? Z:String + string(pi) < "foo" + Z:String . Unifier 1 X:String --> #1:Char + string(pi) Y:Char --> #1:Char Z:String --> #1:Char ========================================== unify in NAT : X:Nat ^ #1:Nat =? #2:Nat . Warning: unsafe variable name #1:Nat in unification problem. ========================================== unify in TEST2 : f(f(X:Nat, Y:Nat), Z:Nat) =? f(A:Nat, B:Nat) . Warning: Term f(X:Nat, Y:Nat, Z:Nat) is non-ground and unification for its top symbol is not currently supported. ========================================== unify in TEST2 : X:Nat + f(41, 42) =? Y:Nat + f(41, 42) . Unifier 1 X:Nat --> #1:Nat Y:Nat --> #1:Nat ========================================== unify in ITER : s^1000000(X:OddNat) =? s^100000000001(Y:Int) . Unifier 1 X:OddNat --> s^99999000001(#1:EvenNat) Y:Int --> #1:EvenNat ========================================== unify in ITER : s^1000000(X:OddNat) =? s^100000000001(Y:Int + Z:Int + W:Int) . Unifier 1 X:OddNat --> s^99999000001(#1:OddNat + (#2:OddNat + #3:EvenNat)) W:Int --> #1:OddNat Z:Int --> #2:OddNat Y:Int --> #3:EvenNat Unifier 2 X:OddNat --> s^99999000001(#1:OddNat + (#3:OddNat + #2:EvenNat)) W:Int --> #1:OddNat Z:Int --> #2:EvenNat Y:Int --> #3:OddNat Unifier 3 X:OddNat --> s^99999000001(#1:EvenNat + (#2:OddNat + #3:OddNat)) W:Int --> #1:EvenNat Z:Int --> #2:OddNat Y:Int --> #3:OddNat Unifier 4 X:OddNat --> s^99999000001(#1:EvenNat + (#2:EvenNat + #3:EvenNat)) W:Int --> #1:EvenNat Z:Int --> #2:EvenNat Y:Int --> #3:EvenNat ========================================== unify in AC : f(X, Y) =? f(A, B) . Unifier 1 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #4:Foo) Unifier 2 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo) B --> #2:Foo Unifier 3 X --> #1:Foo Y --> f(#2:Foo, #3:Foo) A --> f(#1:Foo, #3:Foo) B --> #2:Foo Unifier 4 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #3:Foo) Unifier 5 X --> #1:Foo Y --> #2:Foo A --> #1:Foo B --> #2:Foo Unifier 6 X --> #1:Foo Y --> f(#2:Foo, #3:Foo) A --> #2:Foo B --> f(#1:Foo, #3:Foo) Unifier 7 X --> #2:Foo Y --> #1:Foo A --> #1:Foo B --> #2:Foo ========================================== unify in AC : f(X, Y) =? f(a, b) . Unifier 1 X --> a Y --> b Unifier 2 X --> b Y --> a ========================================== unify in AC : f(X, Y) =? f(a, b, c) . Unifier 1 X --> f(a, b) Y --> c Unifier 2 X --> f(a, c) Y --> b Unifier 3 X --> a Y --> f(b, c) Unifier 4 X --> f(b, c) Y --> a Unifier 5 X --> b Y --> f(a, c) Unifier 6 X --> c Y --> f(a, b) ========================================== match in AC : f(X, Y) <=? f(a, b, c) . Matcher 1 X --> a Y --> f(b, c) Matcher 2 X --> b Y --> f(a, c) Matcher 3 X --> c Y --> f(a, b) Matcher 4 X --> f(a, b) Y --> c Matcher 5 X --> f(a, c) Y --> b Matcher 6 X --> f(b, c) Y --> a ========================================== unify in AC : f(X, X, Y) =? f(X, Y, Y) . Unifier 1 X --> #1:Foo Y --> #1:Foo ========================================== unify in AC : f(X, X, Y) =? f(X, Y) . No unifier. ========================================== unify in AC : f(X, X, Y) =? f(A, B, C) . Unifier 1 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #6:Foo, #8:Foo) Y --> f(#4:Foo, #7:Foo, #9:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo) C --> f(#3:Foo, #6:Foo, #8:Foo, #8:Foo, #9:Foo) Unifier 2 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #6:Foo, #8:Foo) Y --> f(#4:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo) C --> f(#3:Foo, #6:Foo, #8:Foo, #8:Foo) Unifier 3 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #6:Foo) Y --> f(#4:Foo, #7:Foo, #8:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo) C --> f(#3:Foo, #6:Foo, #8:Foo) Unifier 4 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #6:Foo) Y --> f(#4:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo, #7:Foo) C --> f(#3:Foo, #6:Foo) Unifier 5 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #6:Foo, #7:Foo) Y --> f(#4:Foo, #8:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #6:Foo, #7:Foo, #7:Foo, #8:Foo) Unifier 6 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#4:Foo, #6:Foo, #7:Foo, #7:Foo) Unifier 7 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #6:Foo) Y --> f(#4:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #6:Foo, #7:Foo) Unifier 8 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#4:Foo, #6:Foo) Unifier 9 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #7:Foo) Y --> f(#4:Foo, #6:Foo, #8:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #7:Foo, #7:Foo, #8:Foo) Unifier 10 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #7:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #7:Foo, #7:Foo) Unifier 11 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #7:Foo) Unifier 12 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) C --> #1:Foo Unifier 13 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #6:Foo) Y --> f(#4:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo) C --> f(#3:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 14 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo, #6:Foo) Unifier 15 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #5:Foo) C --> f(#3:Foo, #6:Foo) Unifier 16 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo) B --> f(#4:Foo, #5:Foo, #5:Foo) C --> #2:Foo Unifier 17 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #7:Foo) Y --> f(#4:Foo, #6:Foo, #8:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #5:Foo, #7:Foo, #7:Foo, #8:Foo) Unifier 18 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #7:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #5:Foo, #7:Foo, #7:Foo) Unifier 19 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #5:Foo, #7:Foo) Unifier 20 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #5:Foo) Unifier 21 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo, #6:Foo) Y --> f(#4:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 22 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo) C --> f(#4:Foo, #5:Foo, #6:Foo, #6:Foo) Unifier 23 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo) C --> f(#3:Foo, #5:Foo, #6:Foo) Unifier 24 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo) C --> f(#4:Foo, #5:Foo) Unifier 25 X --> f(#1:Foo, #2:Foo, #3:Foo, #6:Foo) Y --> f(#4:Foo, #5:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo) C --> f(#3:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 26 X --> f(#1:Foo, #2:Foo, #3:Foo, #6:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo) C --> f(#3:Foo, #6:Foo, #6:Foo) Unifier 27 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #5:Foo) C --> f(#3:Foo, #6:Foo) Unifier 28 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo) C --> #1:Foo Unifier 29 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> #1:Foo C --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 30 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo) B --> #2:Foo C --> f(#4:Foo, #5:Foo, #5:Foo) Unifier 31 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> #1:Foo C --> f(#3:Foo, #5:Foo) Unifier 32 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo) B --> #2:Foo C --> #3:Foo Unifier 33 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo, #5:Foo, #7:Foo) Y --> f(#6:Foo, #8:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #5:Foo, #7:Foo, #7:Foo, #8:Foo) Unifier 34 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #3:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#4:Foo, #6:Foo, #7:Foo, #7:Foo) Unifier 35 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> f(#6:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#3:Foo, #5:Foo, #7:Foo) Unifier 36 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #3:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#4:Foo, #6:Foo) Unifier 37 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo, #7:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#1:Foo, #4:Foo, #6:Foo, #7:Foo, #7:Foo) Unifier 38 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) C --> f(#1:Foo, #4:Foo, #6:Foo) Unifier 39 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#5:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 40 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #3:Foo, #5:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo, #6:Foo) Unifier 41 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo) Y --> f(#5:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #6:Foo) Unifier 42 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #4:Foo, #5:Foo, #5:Foo) C --> #2:Foo Unifier 43 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo, #5:Foo) C --> f(#1:Foo, #4:Foo, #6:Foo, #6:Foo) Unifier 44 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo, #5:Foo) C --> f(#1:Foo, #4:Foo) Unifier 45 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#5:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #4:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 46 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #3:Foo, #5:Foo) C --> f(#4:Foo, #5:Foo, #6:Foo, #6:Foo) Unifier 47 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo) Y --> f(#5:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #4:Foo, #6:Foo) Unifier 48 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #3:Foo, #5:Foo) C --> f(#4:Foo, #5:Foo) Unifier 49 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo) C --> f(#1:Foo, #4:Foo, #5:Foo, #6:Foo, #6:Foo) Unifier 50 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo) C --> f(#1:Foo, #4:Foo, #5:Foo) Unifier 51 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 52 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #3:Foo) C --> f(#4:Foo, #5:Foo, #5:Foo) Unifier 53 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo) Unifier 54 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #4:Foo) C --> #2:Foo Unifier 55 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) B --> #2:Foo C --> f(#1:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 56 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) B --> #2:Foo C --> f(#1:Foo, #4:Foo) Unifier 57 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #7:Foo) Y --> f(#3:Foo, #6:Foo, #8:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#5:Foo, #7:Foo, #7:Foo, #8:Foo) Unifier 58 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #7:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#5:Foo, #7:Foo, #7:Foo) Unifier 59 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#5:Foo, #7:Foo) Unifier 60 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #3:Foo, #5:Foo, #5:Foo, #6:Foo) C --> #1:Foo Unifier 61 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> f(#3:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#5:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 62 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#5:Foo, #6:Foo, #6:Foo) Unifier 63 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#5:Foo, #6:Foo) Unifier 64 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #4:Foo, #5:Foo, #5:Foo) C --> #2:Foo Unifier 65 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#6:Foo, #6:Foo, #7:Foo) Unifier 66 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#6:Foo, #6:Foo) Unifier 67 X --> f(#2:Foo, #3:Foo, #5:Foo) Y --> f(#1:Foo, #4:Foo, #6:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) C --> #1:Foo Unifier 68 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo) C --> f(#5:Foo, #5:Foo, #6:Foo) Unifier 69 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo, #4:Foo) C --> f(#5:Foo, #5:Foo) Unifier 70 X --> f(#2:Foo, #3:Foo, #5:Foo) Y --> f(#1:Foo, #4:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo, #5:Foo) C --> #1:Foo Unifier 71 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 72 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo, #6:Foo) Unifier 73 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo) Unifier 74 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #3:Foo, #5:Foo) C --> #1:Foo Unifier 75 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 76 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo, #5:Foo) Unifier 77 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo) Unifier 78 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) B --> f(#2:Foo, #4:Foo) C --> #2:Foo Unifier 79 X --> f(#1:Foo, #2:Foo, #5:Foo) Y --> f(#3:Foo, #4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> f(#5:Foo, #5:Foo, #6:Foo) Unifier 80 X --> f(#1:Foo, #2:Foo, #5:Foo) Y --> f(#3:Foo, #4:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> f(#5:Foo, #5:Foo) Unifier 81 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo, #5:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> f(#3:Foo, #5:Foo) C --> #1:Foo Unifier 82 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) B --> #1:Foo C --> f(#4:Foo, #4:Foo, #5:Foo) Unifier 83 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo, #3:Foo) B --> #2:Foo C --> f(#4:Foo, #4:Foo) Unifier 84 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) B --> #1:Foo C --> #2:Foo Unifier 85 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#5:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 86 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #3:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#5:Foo, #6:Foo, #6:Foo) Unifier 87 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo) Y --> f(#5:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo) Unifier 88 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#3:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #5:Foo) C --> #2:Foo Unifier 89 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#1:Foo, #5:Foo, #6:Foo, #6:Foo) Unifier 90 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#1:Foo, #5:Foo) Unifier 91 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#5:Foo, #5:Foo, #6:Foo) Unifier 92 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #3:Foo, #4:Foo, #4:Foo) C --> f(#5:Foo, #5:Foo) Unifier 93 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> f(#1:Foo, #5:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo, #4:Foo, #5:Foo) C --> #1:Foo Unifier 94 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo, #4:Foo) C --> f(#1:Foo, #5:Foo, #5:Foo) Unifier 95 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo, #4:Foo) C --> #1:Foo Unifier 96 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#2:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 97 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #3:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo, #5:Foo) Unifier 98 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#2:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo) Unifier 99 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#3:Foo, #3:Foo, #4:Foo) B --> f(#1:Foo, #2:Foo, #4:Foo) C --> #2:Foo Unifier 100 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#1:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 101 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#1:Foo, #4:Foo) Unifier 102 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#2:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo, #5:Foo) Unifier 103 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo) Unifier 104 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo) C --> #1:Foo Unifier 105 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo, #3:Foo) B --> #2:Foo C --> f(#1:Foo, #4:Foo, #4:Foo) Unifier 106 X --> f(#1:Foo, #3:Foo) Y --> #2:Foo A --> f(#1:Foo, #3:Foo, #3:Foo) B --> #1:Foo C --> #2:Foo Unifier 107 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #7:Foo) Y --> f(#3:Foo, #6:Foo, #8:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#2:Foo, #5:Foo, #7:Foo, #7:Foo, #8:Foo) Unifier 108 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #7:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#2:Foo, #5:Foo, #7:Foo, #7:Foo) Unifier 109 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#2:Foo, #5:Foo, #7:Foo) Unifier 110 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#2:Foo, #5:Foo) Unifier 111 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> f(#3:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #5:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 112 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo) Unifier 113 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #5:Foo, #6:Foo) Unifier 114 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #5:Foo) Unifier 115 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 116 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #6:Foo, #6:Foo) Unifier 117 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #6:Foo) Unifier 118 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> #1:Foo Unifier 119 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 120 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo) Unifier 121 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo) Unifier 122 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo) C --> #2:Foo Unifier 123 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 124 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo, #6:Foo, #6:Foo) Unifier 125 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo, #6:Foo) Unifier 126 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo) Unifier 127 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> #1:Foo C --> f(#1:Foo, #3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 128 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) B --> #2:Foo C --> f(#2:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 129 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> #1:Foo C --> f(#1:Foo, #3:Foo, #5:Foo) Unifier 130 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) B --> #2:Foo C --> f(#2:Foo, #4:Foo) Unifier 131 X --> f(#2:Foo, #3:Foo, #5:Foo) Y --> f(#1:Foo, #4:Foo, #6:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> #1:Foo C --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 132 X --> f(#2:Foo, #3:Foo, #5:Foo) Y --> f(#1:Foo, #4:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> #1:Foo C --> f(#3:Foo, #5:Foo, #5:Foo) Unifier 133 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo, #5:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) B --> #1:Foo C --> f(#3:Foo, #5:Foo) Unifier 134 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo) A --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) B --> #1:Foo C --> #2:Foo Unifier 135 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#5:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 136 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo) Unifier 137 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo) Y --> f(#5:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo, #6:Foo) Unifier 138 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #5:Foo) Unifier 139 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo, #6:Foo, #6:Foo) Unifier 140 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo) Unifier 141 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 142 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo) Unifier 143 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo) Unifier 144 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo) C --> #2:Foo Unifier 145 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo, #5:Foo) Unifier 146 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo) Unifier 147 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#2:Foo, #3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 148 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo) C --> f(#3:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 149 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#2:Foo, #3:Foo, #5:Foo) Unifier 150 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo) C --> f(#3:Foo, #4:Foo) Unifier 151 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#3:Foo, #3:Foo, #4:Foo) B --> #2:Foo C --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 152 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#3:Foo, #3:Foo, #4:Foo) B --> #2:Foo C --> f(#1:Foo, #2:Foo, #4:Foo) Unifier 153 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> f(#1:Foo, #5:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> #1:Foo C --> f(#3:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 154 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo, #3:Foo) B --> #1:Foo C --> f(#3:Foo, #4:Foo, #4:Foo) Unifier 155 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> #1:Foo C --> f(#3:Foo, #4:Foo) Unifier 156 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo, #3:Foo) B --> #1:Foo C --> #2:Foo Unifier 157 X --> f(#1:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#2:Foo, #5:Foo, #7:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 158 X --> f(#1:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo, #6:Foo) Unifier 159 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo) Unifier 160 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) C --> #1:Foo Unifier 161 X --> f(#1:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> f(#2:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 162 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo, #5:Foo) Unifier 163 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo) Unifier 164 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo) C --> #2:Foo Unifier 165 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#5:Foo, #5:Foo, #6:Foo) Unifier 166 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#5:Foo, #5:Foo) Unifier 167 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo, #5:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo, #5:Foo) C --> #1:Foo Unifier 168 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo, #5:Foo) Unifier 169 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo) Unifier 170 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#4:Foo, #4:Foo) C --> #1:Foo Unifier 171 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 172 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo) Unifier 173 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo, #2:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo) Unifier 174 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo) C --> #1:Foo Unifier 175 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> #1:Foo C --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 176 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo, #3:Foo) B --> #2:Foo C --> f(#2:Foo, #4:Foo, #4:Foo) Unifier 177 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> #1:Foo C --> f(#1:Foo, #4:Foo) Unifier 178 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo, #3:Foo) B --> #2:Foo C --> #2:Foo Unifier 179 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo, #5:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> #1:Foo C --> f(#4:Foo, #4:Foo, #5:Foo) Unifier 180 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo) A --> f(#2:Foo, #2:Foo, #3:Foo) B --> #1:Foo C --> f(#4:Foo, #4:Foo) Unifier 181 X --> #1:Foo Y --> f(#2:Foo, #3:Foo, #4:Foo) A --> f(#1:Foo, #1:Foo, #4:Foo) B --> #2:Foo C --> #3:Foo Unifier 182 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #1:Foo) B --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 183 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo, #5:Foo) Unifier 184 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo) B --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo) Unifier 185 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#3:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo, #4:Foo, #4:Foo) C --> #2:Foo Unifier 186 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 187 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #4:Foo) Unifier 188 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo) B --> f(#2:Foo, #2:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo, #5:Foo) Unifier 189 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo) Unifier 190 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo) A --> f(#2:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> #1:Foo Unifier 191 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo) C --> f(#1:Foo, #4:Foo, #4:Foo) Unifier 192 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo) C --> #1:Foo Unifier 193 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #1:Foo) B --> f(#2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 194 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo) C --> f(#3:Foo, #4:Foo, #4:Foo) Unifier 195 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> f(#1:Foo, #1:Foo) B --> f(#2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo) Unifier 196 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#3:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo) C --> #2:Foo Unifier 197 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#3:Foo, #3:Foo) B --> #2:Foo C --> f(#1:Foo, #2:Foo, #4:Foo, #4:Foo) Unifier 198 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#3:Foo, #3:Foo) B --> #2:Foo C --> f(#1:Foo, #2:Foo) Unifier 199 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo) A --> f(#2:Foo, #2:Foo) B --> #1:Foo C --> f(#3:Foo, #3:Foo, #4:Foo) Unifier 200 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#2:Foo, #2:Foo) B --> #1:Foo C --> f(#3:Foo, #3:Foo) Unifier 201 X --> #1:Foo Y --> f(#2:Foo, #3:Foo) A --> f(#1:Foo, #1:Foo) B --> #2:Foo C --> #3:Foo Unifier 202 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #7:Foo) Y --> f(#3:Foo, #6:Foo, #8:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#2:Foo, #5:Foo, #7:Foo, #7:Foo, #8:Foo) Unifier 203 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #7:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#2:Foo, #5:Foo, #7:Foo, #7:Foo) Unifier 204 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo, #7:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#2:Foo, #5:Foo, #7:Foo) Unifier 205 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo, #6:Foo) C --> f(#2:Foo, #5:Foo) Unifier 206 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> f(#3:Foo, #7:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #5:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 207 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo) Unifier 208 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #5:Foo, #6:Foo) Unifier 209 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #5:Foo) Unifier 210 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo, #7:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 211 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #6:Foo, #6:Foo) Unifier 212 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #6:Foo) Unifier 213 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> #1:Foo Unifier 214 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 215 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo) Unifier 216 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo) Unifier 217 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#3:Foo, #4:Foo, #4:Foo) C --> #2:Foo Unifier 218 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo, #7:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 219 X --> f(#1:Foo, #2:Foo, #4:Foo, #6:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo, #6:Foo, #6:Foo) Unifier 220 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo, #6:Foo) Unifier 221 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo) Unifier 222 X --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo) Y --> f(#3:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo) C --> f(#2:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 223 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> f(#3:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 224 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo) C --> f(#2:Foo, #4:Foo, #5:Foo) Unifier 225 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> f(#3:Foo, #4:Foo) Unifier 226 X --> f(#1:Foo, #2:Foo, #5:Foo) Y --> f(#3:Foo, #4:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 227 X --> f(#1:Foo, #2:Foo, #5:Foo) Y --> f(#3:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo, #5:Foo) Unifier 228 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo) Unifier 229 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> #1:Foo Unifier 230 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> #1:Foo C --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 231 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo) B --> #2:Foo C --> f(#3:Foo, #4:Foo, #4:Foo) Unifier 232 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo, #3:Foo) B --> #1:Foo C --> f(#2:Foo, #4:Foo) Unifier 233 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo, #3:Foo) B --> #2:Foo C --> #3:Foo Unifier 234 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#5:Foo, #7:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 235 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #5:Foo, #6:Foo, #6:Foo) Unifier 236 X --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo) Y --> f(#5:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#2:Foo, #4:Foo, #6:Foo) Unifier 237 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#3:Foo, #5:Foo) Unifier 238 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo, #6:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo, #6:Foo, #6:Foo) Unifier 239 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo) Unifier 240 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 241 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo, #4:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo) Unifier 242 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#2:Foo, #5:Foo) Unifier 243 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #3:Foo, #4:Foo, #4:Foo) C --> #2:Foo Unifier 244 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo, #5:Foo) Unifier 245 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo) Unifier 246 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #4:Foo) C --> f(#2:Foo, #3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 247 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo, #4:Foo) C --> f(#3:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 248 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #4:Foo) C --> f(#2:Foo, #3:Foo, #5:Foo) Unifier 249 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo, #4:Foo) C --> f(#3:Foo, #4:Foo) Unifier 250 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 251 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo, #4:Foo) Unifier 252 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 253 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo) C --> f(#3:Foo, #4:Foo, #4:Foo) Unifier 254 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo) Unifier 255 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #3:Foo) C --> #2:Foo Unifier 256 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> #2:Foo C --> f(#1:Foo, #3:Foo, #4:Foo, #4:Foo) Unifier 257 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#2:Foo, #3:Foo) B --> #2:Foo C --> f(#1:Foo, #3:Foo) Unifier 258 X --> f(#1:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#2:Foo, #5:Foo, #7:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 259 X --> f(#1:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo, #6:Foo) Unifier 260 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#4:Foo, #6:Foo) Unifier 261 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> #1:Foo Unifier 262 X --> f(#1:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> f(#2:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 263 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo) B --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo, #5:Foo) Unifier 264 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo) Unifier 265 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo) B --> f(#2:Foo, #3:Foo, #4:Foo, #4:Foo) C --> #2:Foo Unifier 266 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#5:Foo, #5:Foo, #6:Foo) Unifier 267 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#5:Foo, #5:Foo) Unifier 268 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo, #5:Foo) A --> f(#2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) C --> #1:Foo Unifier 269 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo, #5:Foo) Unifier 270 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo) B --> f(#2:Foo, #3:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo) Unifier 271 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo) A --> f(#2:Foo, #3:Foo) B --> f(#2:Foo, #4:Foo, #4:Foo) C --> #1:Foo Unifier 272 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 273 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo) Unifier 274 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo) Unifier 275 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo, #4:Foo) C --> #1:Foo Unifier 276 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo) C --> f(#3:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 277 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo) B --> f(#2:Foo, #3:Foo) C --> f(#3:Foo, #4:Foo, #4:Foo) Unifier 278 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo) C --> f(#3:Foo, #4:Foo) Unifier 279 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo) B --> f(#2:Foo, #3:Foo) C --> #2:Foo Unifier 280 X --> f(#1:Foo, #4:Foo) Y --> f(#2:Foo, #3:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo, #5:Foo) Unifier 281 X --> f(#1:Foo, #4:Foo) Y --> f(#2:Foo, #3:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#1:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo) Unifier 282 X --> #1:Foo Y --> f(#2:Foo, #3:Foo, #4:Foo) A --> f(#1:Foo, #3:Foo) B --> f(#1:Foo, #4:Foo) C --> #2:Foo Unifier 283 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> #1:Foo C --> f(#3:Foo, #3:Foo, #4:Foo) Unifier 284 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo) B --> #2:Foo C --> f(#3:Foo, #3:Foo) Unifier 285 X --> #1:Foo Y --> f(#2:Foo, #3:Foo) A --> f(#1:Foo, #3:Foo) B --> #1:Foo C --> #2:Foo Unifier 286 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> #1:Foo B --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 287 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #2:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#4:Foo, #5:Foo, #5:Foo) Unifier 288 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> #1:Foo B --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo) Unifier 289 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo) C --> #3:Foo Unifier 290 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 291 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #4:Foo) Unifier 292 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> #1:Foo B --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo, #5:Foo) Unifier 293 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #2:Foo, #3:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo) Unifier 294 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) A --> #1:Foo B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) C --> #2:Foo Unifier 295 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#2:Foo, #3:Foo, #3:Foo) C --> f(#1:Foo, #4:Foo, #4:Foo) Unifier 296 X --> f(#1:Foo, #3:Foo) Y --> #2:Foo A --> #1:Foo B --> f(#1:Foo, #3:Foo, #3:Foo) C --> #2:Foo Unifier 297 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> #1:Foo B --> f(#1:Foo, #2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 298 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #2:Foo, #3:Foo) C --> f(#3:Foo, #4:Foo, #4:Foo) Unifier 299 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> #1:Foo B --> f(#1:Foo, #2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo) Unifier 300 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #2:Foo, #3:Foo) C --> #3:Foo Unifier 301 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#2:Foo, #3:Foo) C --> f(#1:Foo, #3:Foo, #4:Foo, #4:Foo) Unifier 302 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#2:Foo, #3:Foo) C --> f(#1:Foo, #3:Foo) Unifier 303 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) A --> #1:Foo B --> f(#1:Foo, #2:Foo) C --> f(#3:Foo, #3:Foo, #4:Foo) Unifier 304 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #2:Foo) C --> f(#3:Foo, #3:Foo) Unifier 305 X --> #1:Foo Y --> f(#2:Foo, #3:Foo) A --> #1:Foo B --> f(#1:Foo, #3:Foo) C --> #2:Foo Unifier 306 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #2:Foo B --> #2:Foo C --> f(#1:Foo, #3:Foo, #3:Foo) Unifier 307 X --> #1:Foo Y --> #2:Foo A --> #1:Foo B --> #1:Foo C --> #2:Foo Unifier 308 X --> f(#1:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#2:Foo, #5:Foo, #7:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#1:Foo, #4:Foo, #6:Foo, #6:Foo, #7:Foo) Unifier 309 X --> f(#1:Foo, #3:Foo, #4:Foo, #6:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#1:Foo, #4:Foo, #6:Foo, #6:Foo) Unifier 310 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#1:Foo, #4:Foo, #6:Foo) Unifier 311 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo, #5:Foo) C --> f(#1:Foo, #4:Foo) Unifier 312 X --> f(#1:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> f(#2:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #4:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 313 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#2:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 314 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #4:Foo, #5:Foo) Unifier 315 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#2:Foo, #4:Foo) Unifier 316 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 317 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #5:Foo, #5:Foo) Unifier 318 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #5:Foo) Unifier 319 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo, #4:Foo) C --> #1:Foo Unifier 320 X --> f(#1:Foo, #3:Foo, #4:Foo) Y --> f(#2:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo) C --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 321 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo, #4:Foo) Unifier 322 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo) C --> f(#1:Foo, #4:Foo) Unifier 323 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #3:Foo) C --> #2:Foo Unifier 324 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo, #6:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 325 X --> f(#1:Foo, #3:Foo, #5:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo, #5:Foo) Unifier 326 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo, #5:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo) Unifier 327 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) A --> f(#1:Foo, #2:Foo) B --> f(#3:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo) Unifier 328 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> f(#2:Foo, #3:Foo) B --> #1:Foo C --> f(#1:Foo, #2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 329 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo) B --> #2:Foo C --> f(#2:Foo, #3:Foo, #4:Foo, #4:Foo) Unifier 330 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> f(#2:Foo, #3:Foo) B --> #1:Foo C --> f(#1:Foo, #2:Foo, #4:Foo) Unifier 331 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> f(#1:Foo, #3:Foo) B --> #2:Foo C --> f(#2:Foo, #3:Foo) Unifier 332 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo, #5:Foo) A --> f(#2:Foo, #3:Foo) B --> #1:Foo C --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 333 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo) A --> f(#2:Foo, #3:Foo) B --> #1:Foo C --> f(#2:Foo, #4:Foo, #4:Foo) Unifier 334 X --> #1:Foo Y --> f(#2:Foo, #3:Foo, #4:Foo) A --> f(#1:Foo, #3:Foo) B --> #2:Foo C --> f(#1:Foo, #4:Foo) Unifier 335 X --> #2:Foo Y --> f(#1:Foo, #3:Foo) A --> f(#2:Foo, #3:Foo) B --> #1:Foo C --> #2:Foo Unifier 336 X --> f(#1:Foo, #2:Foo, #3:Foo, #5:Foo) Y --> f(#4:Foo, #6:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 337 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#2:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 338 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(#4:Foo, #5:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #3:Foo, #5:Foo) Unifier 339 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) C --> f(#2:Foo, #4:Foo) Unifier 340 X --> f(#2:Foo, #3:Foo, #4:Foo, #5:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #2:Foo, #4:Foo, #5:Foo, #5:Foo) Unifier 341 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#3:Foo, #3:Foo, #4:Foo) C --> f(#1:Foo, #2:Foo, #4:Foo) Unifier 342 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo) C --> f(#1:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 343 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #3:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo, #4:Foo) Unifier 344 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo) C --> f(#1:Foo, #4:Foo) Unifier 345 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #3:Foo, #3:Foo) C --> #2:Foo Unifier 346 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#3:Foo, #3:Foo) C --> f(#1:Foo, #2:Foo, #4:Foo, #4:Foo) Unifier 347 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#3:Foo, #3:Foo) C --> f(#1:Foo, #2:Foo) Unifier 348 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) A --> #1:Foo B --> f(#2:Foo, #3:Foo) C --> f(#1:Foo, #2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 349 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #3:Foo) C --> f(#2:Foo, #3:Foo, #4:Foo, #4:Foo) Unifier 350 X --> f(#1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) A --> #1:Foo B --> f(#2:Foo, #3:Foo) C --> f(#1:Foo, #2:Foo, #4:Foo) Unifier 351 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #2:Foo B --> f(#1:Foo, #3:Foo) C --> f(#2:Foo, #3:Foo) Unifier 352 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #2:Foo B --> #3:Foo C --> f(#1:Foo, #2:Foo, #3:Foo, #4:Foo, #4:Foo) Unifier 353 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #2:Foo B --> #3:Foo C --> f(#1:Foo, #2:Foo, #3:Foo) Unifier 354 X --> f(#1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) A --> #1:Foo B --> #2:Foo C --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) Unifier 355 X --> f(#1:Foo, #3:Foo) Y --> #2:Foo A --> #1:Foo B --> #2:Foo C --> f(#1:Foo, #3:Foo, #3:Foo) Unifier 356 X --> #1:Foo Y --> f(#2:Foo, #3:Foo) A --> #1:Foo B --> #2:Foo C --> f(#1:Foo, #3:Foo) Unifier 357 X --> #1:Foo Y --> #2:Foo A --> #1:Foo B --> #2:Foo C --> #1:Foo Unifier 358 X --> f(#2:Foo, #3:Foo, #5:Foo) Y --> f(#1:Foo, #4:Foo, #6:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo, #6:Foo) Unifier 359 X --> f(#2:Foo, #3:Foo, #5:Foo) Y --> f(#1:Foo, #4:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo, #5:Foo) Unifier 360 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo, #5:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo, #4:Foo) C --> f(#3:Foo, #5:Foo) Unifier 361 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo) A --> #1:Foo B --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) C --> #2:Foo Unifier 362 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> f(#1:Foo, #5:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo) C --> f(#3:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 363 X --> f(#2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo) C --> f(#3:Foo, #4:Foo, #4:Foo) Unifier 364 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo) C --> f(#3:Foo, #4:Foo) Unifier 365 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #1:Foo B --> f(#2:Foo, #3:Foo, #3:Foo) C --> #2:Foo Unifier 366 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo, #5:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo, #5:Foo) Unifier 367 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo) C --> f(#4:Foo, #4:Foo) Unifier 368 X --> #1:Foo Y --> f(#2:Foo, #3:Foo, #4:Foo) A --> #2:Foo B --> f(#1:Foo, #1:Foo, #4:Foo) C --> #3:Foo Unifier 369 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo) A --> #1:Foo B --> f(#2:Foo, #2:Foo) C --> f(#3:Foo, #3:Foo, #4:Foo) Unifier 370 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #1:Foo B --> f(#2:Foo, #2:Foo) C --> f(#3:Foo, #3:Foo) Unifier 371 X --> #1:Foo Y --> f(#2:Foo, #3:Foo) A --> #2:Foo B --> f(#1:Foo, #1:Foo) C --> #3:Foo Unifier 372 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo, #5:Foo) A --> #1:Foo B --> f(#2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 373 X --> f(#2:Foo, #4:Foo) Y --> f(#1:Foo, #3:Foo) A --> #1:Foo B --> f(#2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo, #4:Foo) Unifier 374 X --> #1:Foo Y --> f(#2:Foo, #3:Foo, #4:Foo) A --> #2:Foo B --> f(#1:Foo, #3:Foo) C --> f(#1:Foo, #4:Foo) Unifier 375 X --> #2:Foo Y --> f(#1:Foo, #3:Foo) A --> #1:Foo B --> f(#2:Foo, #3:Foo) C --> #2:Foo Unifier 376 X --> f(#2:Foo, #3:Foo) Y --> f(#1:Foo, #4:Foo) A --> #1:Foo B --> #2:Foo C --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) Unifier 377 X --> f(#2:Foo, #3:Foo) Y --> #1:Foo A --> #1:Foo B --> #2:Foo C --> f(#2:Foo, #3:Foo, #3:Foo) Unifier 378 X --> #2:Foo Y --> f(#1:Foo, #3:Foo) A --> #1:Foo B --> #2:Foo C --> f(#2:Foo, #3:Foo) Unifier 379 X --> #2:Foo Y --> #1:Foo A --> #1:Foo B --> #2:Foo C --> #2:Foo Unifier 380 X --> #1:Foo Y --> f(#2:Foo, #3:Foo, #4:Foo) A --> #2:Foo B --> #3:Foo C --> f(#1:Foo, #1:Foo, #4:Foo) Unifier 381 X --> #1:Foo Y --> f(#2:Foo, #3:Foo) A --> #2:Foo B --> #3:Foo C --> f(#1:Foo, #1:Foo) ========================================== unify in AC : f(X, X, Y) =? f(a, B, C) . Unifier 1 X --> f(a, #1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) B --> f(a, #1:Foo, #1:Foo, #2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 2 X --> f(a, #2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo B --> f(a, #1:Foo, #2:Foo, #2:Foo, #3:Foo) C --> f(#3:Foo, #4:Foo, #4:Foo) Unifier 3 X --> f(a, #1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) B --> f(a, #1:Foo, #1:Foo, #2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo) Unifier 4 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(a, #1:Foo, #2:Foo, #3:Foo, #3:Foo) C --> #2:Foo Unifier 5 X --> f(a, #2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo B --> f(a, #2:Foo, #2:Foo, #3:Foo) C --> f(#1:Foo, #3:Foo, #4:Foo, #4:Foo) Unifier 6 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(a, #2:Foo, #2:Foo, #3:Foo) C --> f(#1:Foo, #3:Foo) Unifier 7 X --> f(a, #1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) B --> f(a, #1:Foo, #1:Foo, #2:Foo) C --> f(#3:Foo, #3:Foo, #4:Foo) Unifier 8 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(a, #1:Foo, #2:Foo, #2:Foo) C --> f(#3:Foo, #3:Foo) Unifier 9 X --> f(a, #2:Foo) Y --> f(#1:Foo, #3:Foo) B --> f(a, #2:Foo, #2:Foo, #3:Foo) C --> #1:Foo Unifier 10 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(a, #2:Foo, #2:Foo) C --> f(#1:Foo, #3:Foo, #3:Foo) Unifier 11 X --> f(a, #2:Foo) Y --> #1:Foo B --> f(a, #2:Foo, #2:Foo) C --> #1:Foo Unifier 12 X --> f(a, #1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) B --> f(a, #1:Foo, #2:Foo) C --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) Unifier 13 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(a, #1:Foo, #2:Foo) C --> f(#2:Foo, #3:Foo, #3:Foo) Unifier 14 X --> f(a, #1:Foo) Y --> f(#2:Foo, #3:Foo) B --> f(a, #1:Foo, #2:Foo) C --> f(#1:Foo, #3:Foo) Unifier 15 X --> f(a, #2:Foo) Y --> #1:Foo B --> f(a, #1:Foo, #2:Foo) C --> #2:Foo Unifier 16 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(a, #2:Foo) C --> f(#1:Foo, #2:Foo, #3:Foo, #3:Foo) Unifier 17 X --> f(a, #2:Foo) Y --> #1:Foo B --> f(a, #2:Foo) C --> f(#1:Foo, #2:Foo) Unifier 18 X --> f(a, #2:Foo) Y --> f(#1:Foo, #3:Foo) B --> f(a, #1:Foo) C --> f(#2:Foo, #2:Foo, #3:Foo) Unifier 19 X --> f(a, #2:Foo) Y --> #1:Foo B --> f(a, #1:Foo) C --> f(#2:Foo, #2:Foo) Unifier 20 X --> a Y --> f(#1:Foo, #2:Foo) B --> f(a, #2:Foo) C --> #1:Foo Unifier 21 X --> f(a, #2:Foo) Y --> #1:Foo B --> a C --> f(#1:Foo, #2:Foo, #2:Foo) Unifier 22 X --> a Y --> #1:Foo B --> a C --> #1:Foo Unifier 23 X --> f(a, #1:Foo, #2:Foo, #4:Foo) Y --> f(#3:Foo, #5:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) C --> f(a, #2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 24 X --> f(a, #2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo B --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) C --> f(a, #3:Foo, #4:Foo, #4:Foo) Unifier 25 X --> f(a, #1:Foo, #2:Foo) Y --> f(#3:Foo, #4:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) C --> f(a, #2:Foo, #4:Foo) Unifier 26 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) C --> f(a, #3:Foo) Unifier 27 X --> f(a, #2:Foo, #3:Foo, #4:Foo) Y --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo) C --> f(a, #1:Foo, #3:Foo, #4:Foo, #4:Foo) Unifier 28 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(#2:Foo, #2:Foo, #3:Foo) C --> f(a, #1:Foo, #3:Foo) Unifier 29 X --> f(a, #1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo) C --> f(a, #3:Foo, #3:Foo, #4:Foo) Unifier 30 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(#1:Foo, #2:Foo, #2:Foo) C --> f(a, #3:Foo, #3:Foo) Unifier 31 X --> f(a, #1:Foo) Y --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo) C --> f(a, #3:Foo) Unifier 32 X --> f(a, #2:Foo) Y --> #1:Foo B --> f(#1:Foo, #2:Foo, #2:Foo) C --> a Unifier 33 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(#2:Foo, #2:Foo) C --> f(a, #1:Foo, #3:Foo, #3:Foo) Unifier 34 X --> f(a, #2:Foo) Y --> #1:Foo B --> f(#2:Foo, #2:Foo) C --> f(a, #1:Foo) Unifier 35 X --> f(a, #1:Foo, #3:Foo) Y --> f(#2:Foo, #4:Foo) B --> f(#1:Foo, #2:Foo) C --> f(a, #1:Foo, #3:Foo, #3:Foo, #4:Foo) Unifier 36 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> f(#1:Foo, #2:Foo) C --> f(a, #2:Foo, #3:Foo, #3:Foo) Unifier 37 X --> f(a, #1:Foo) Y --> f(#2:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo) C --> f(a, #1:Foo, #3:Foo) Unifier 38 X --> f(a, #2:Foo) Y --> #1:Foo B --> f(#1:Foo, #2:Foo) C --> f(a, #2:Foo) Unifier 39 X --> f(a, #2:Foo, #3:Foo) Y --> #1:Foo B --> #2:Foo C --> f(a, #1:Foo, #2:Foo, #3:Foo, #3:Foo) Unifier 40 X --> f(a, #2:Foo) Y --> #1:Foo B --> #2:Foo C --> f(a, #1:Foo, #2:Foo) Unifier 41 X --> f(a, #2:Foo) Y --> f(#1:Foo, #3:Foo) B --> #1:Foo C --> f(a, #2:Foo, #2:Foo, #3:Foo) Unifier 42 X --> f(a, #2:Foo) Y --> #1:Foo B --> #1:Foo C --> f(a, #2:Foo, #2:Foo) Unifier 43 X --> a Y --> f(#1:Foo, #2:Foo) B --> #1:Foo C --> f(a, #2:Foo) Unifier 44 X --> a Y --> #1:Foo B --> #1:Foo C --> a Unifier 45 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(a, #3:Foo, #5:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo, #4:Foo, #5:Foo) Unifier 46 X --> f(#1:Foo, #2:Foo, #4:Foo) Y --> f(a, #3:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo, #4:Foo) Unifier 47 X --> f(#1:Foo, #2:Foo) Y --> f(a, #3:Foo, #4:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo, #3:Foo) C --> f(#2:Foo, #4:Foo) Unifier 48 X --> f(#1:Foo, #2:Foo) Y --> f(a, #3:Foo) B --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) C --> #1:Foo Unifier 49 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> f(a, #4:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo) C --> f(#2:Foo, #3:Foo, #3:Foo, #4:Foo) Unifier 50 X --> f(#1:Foo, #2:Foo, #3:Foo) Y --> a B --> f(#1:Foo, #1:Foo, #2:Foo) C --> f(#2:Foo, #3:Foo, #3:Foo) Unifier 51 X --> f(#1:Foo, #2:Foo) Y --> f(a, #3:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo) C --> f(#2:Foo, #3:Foo) Unifier 52 X --> f(#1:Foo, #2:Foo) Y --> a B --> f(#1:Foo, #2:Foo, #2:Foo) C --> #1:Foo Unifier 53 X --> f(#1:Foo, #3:Foo) Y --> f(a, #2:Foo, #4:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo) C --> f(#3:Foo, #3:Foo, #4:Foo) Unifier 54 X --> f(#1:Foo, #3:Foo) Y --> f(a, #2:Foo) B --> f(#1:Foo, #1:Foo, #2:Foo) C --> f(#3:Foo, #3:Foo) Unifier 55 X --> #1:Foo Y --> f(a, #2:Foo, #3:Foo) B --> f(#1:Foo, #1:Foo, #3:Foo) C --> #2:Foo Unifier 56 X --> f(#1:Foo, #2:Foo) Y --> f(a, #3:Foo) B --> f(#1:Foo, #1:Foo) C --> f(#2:Foo, #2:Foo, #3:Foo) Unifier 57 X --> f(#1:Foo, #2:Foo) Y --> a B --> f(#1:Foo, #1:Foo) C --> f(#2:Foo, #2:Foo) Unifier 58 X --> #1:Foo Y --> f(a, #2:Foo) B --> f(#1:Foo, #1:Foo) C --> #2:Foo Unifier 59 X --> f(#1:Foo, #3:Foo) Y --> f(a, #2:Foo, #4:Foo) B --> f(#1:Foo, #2:Foo) C --> f(#1:Foo, #3:Foo, #3:Foo, #4:Foo) Unifier 60 X --> f(#1:Foo, #3:Foo) Y --> f(a, #2:Foo) B --> f(#1:Foo, #2:Foo) C --> f(#1:Foo, #3:Foo, #3:Foo) Unifier 61 X --> #1:Foo Y --> f(a, #2:Foo, #3:Foo) B --> f(#1:Foo, #2:Foo) C --> f(#1:Foo, #3:Foo) Unifier 62 X --> #1:Foo Y --> f(a, #2:Foo) B --> f(#1:Foo, #2:Foo) C --> #1:Foo Unifier 63 X --> f(#1:Foo, #2:Foo) Y --> f(a, #3:Foo) B --> #1:Foo C --> f(#1:Foo, #2:Foo, #2:Foo, #3:Foo) Unifier 64 X --> f(#1:Foo, #2:Foo) Y --> a B --> #1:Foo C --> f(#1:Foo, #2:Foo, #2:Foo) Unifier 65 X --> #1:Foo Y --> f(a, #2:Foo) B --> #1:Foo C --> f(#1:Foo, #2:Foo) Unifier 66 X --> #1:Foo Y --> a B --> #1:Foo C --> #1:Foo Unifier 67 X --> #1:Foo Y --> f(a, #2:Foo, #3:Foo) B --> #2:Foo C --> f(#1:Foo, #1:Foo, #3:Foo) Unifier 68 X --> #1:Foo Y --> f(a, #2:Foo) B --> #2:Foo C --> f(#1:Foo, #1:Foo) ========================================== unify in AC : f(X, X, X) =? f(a, a) . No unifier. ========================================== unify in AC : f(X, X, X, Y) =? f(a, a) . No unifier. ========================================== unify in AC2 : f(A, B) =? f(C, D) . Unifier 1 A --> #1:Elt B --> #2:Elt C --> #1:Elt D --> #2:Elt Unifier 2 A --> #2:Elt B --> #1:Elt C --> #1:Elt D --> #2:Elt ========================================== unify in AC2 : f(X, A) =? f(Y, B) . Unifier 1 A --> #1:Elt X --> #2:Set B --> #1:Elt Y --> #2:Set Unifier 2 A --> #1:Elt X --> f(#2:Elt, #3:Set) B --> #2:Elt Y --> f(#1:Elt, #3:Set) Unifier 3 A --> #1:Elt X --> #2:Elt B --> #2:Elt Y --> #1:Elt ========================================== unify in AC2 : f(g(X, Y), g(X, Z), U) =? f(g(Y, Z), V) . Unifier 1 U --> f(#4:Set, g(#3:Set, #2:Set)) X --> #1:Set Z --> #2:Set Y --> #3:Set V --> f(#4:Set, g(#1:Set, #2:Set), g(#1:Set, #3:Set)) Unifier 2 U --> #1:Set X --> #2:Set Z --> #2:Set Y --> #2:Set V --> f(#1:Set, g(#2:Set, #2:Set)) Unifier 3 U --> #1:Set X --> #3:Set Z --> #2:Set Y --> #3:Set V --> f(#1:Set, g(#3:Set, #3:Set)) Unifier 4 U --> g(#3:Set, #2:Set) X --> #1:Set Z --> #2:Set Y --> #3:Set V --> f(g(#1:Set, #2:Set), g(#1:Set, #3:Set)) ========================================== unify in AC2 : g(f(X, Y), f(X, U, Z)) =? g(f(U, V), f(W, A)) . Unifier 1 X --> f(#3:Set, #4:Set) Y --> f(#5:Set, #6:Set) Z --> f(#1:Elt, #2:Set) U --> f(#3:Set, #5:Set) V --> f(#4:Set, #6:Set) A --> #1:Elt W --> f(#2:Set, #3:Set, #3:Set, #4:Set, #5:Set) Unifier 2 X --> f(#2:Set, #5:Set) Y --> #1:Set Z --> f(#3:Elt, #4:Set) U --> f(#1:Set, #5:Set) V --> #2:Set A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set, #5:Set, #5:Set) Unifier 3 X --> f(#2:Set, #5:Set) Y --> #1:Set Z --> f(#3:Elt, #4:Set) U --> #2:Set V --> f(#1:Set, #5:Set) A --> #3:Elt W --> f(#2:Set, #2:Set, #4:Set, #5:Set) Unifier 4 X --> #1:Set Y --> f(#2:Set, #5:Set) Z --> f(#3:Elt, #4:Set) U --> f(#1:Set, #5:Set) V --> #2:Set A --> #3:Elt W --> f(#1:Set, #1:Set, #4:Set, #5:Set) Unifier 5 X --> #1:Set Y --> #2:Set Z --> f(#3:Elt, #4:Set) U --> #1:Set V --> #2:Set A --> #3:Elt W --> f(#1:Set, #1:Set, #4:Set) Unifier 6 X --> #1:Set Y --> f(#2:Set, #5:Set) Z --> f(#3:Elt, #4:Set) U --> #2:Set V --> f(#1:Set, #5:Set) A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set) Unifier 7 X --> #1:Set Y --> #2:Set Z --> f(#3:Elt, #4:Set) U --> #2:Set V --> #1:Set A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set) Unifier 8 X --> f(#2:Set, #3:Set) Y --> f(#4:Set, #5:Set) Z --> #1:Elt U --> f(#2:Set, #4:Set) V --> f(#3:Set, #5:Set) A --> #1:Elt W --> f(#2:Set, #2:Set, #3:Set, #4:Set) Unifier 9 X --> f(#2:Set, #4:Set) Y --> #1:Set Z --> #3:Elt U --> f(#1:Set, #4:Set) V --> #2:Set A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set, #4:Set) Unifier 10 X --> f(#2:Set, #4:Set) Y --> #1:Set Z --> #3:Elt U --> #2:Set V --> f(#1:Set, #4:Set) A --> #3:Elt W --> f(#2:Set, #2:Set, #4:Set) Unifier 11 X --> #1:Set Y --> f(#2:Set, #4:Set) Z --> #3:Elt U --> f(#1:Set, #4:Set) V --> #2:Set A --> #3:Elt W --> f(#1:Set, #1:Set, #4:Set) Unifier 12 X --> #1:Set Y --> #2:Set Z --> #3:Elt U --> #1:Set V --> #2:Set A --> #3:Elt W --> f(#1:Set, #1:Set) Unifier 13 X --> #1:Set Y --> f(#2:Set, #4:Set) Z --> #3:Elt U --> #2:Set V --> f(#1:Set, #4:Set) A --> #3:Elt W --> f(#1:Set, #2:Set) Unifier 14 X --> #1:Set Y --> #2:Set Z --> #3:Elt U --> #2:Set V --> #1:Set A --> #3:Elt W --> f(#1:Set, #2:Set) Unifier 15 X --> f(#2:Elt, #3:Set, #4:Set) Y --> f(#5:Set, #6:Set) Z --> #1:Set U --> f(#2:Elt, #3:Set, #5:Set) V --> f(#4:Set, #6:Set) A --> #2:Elt W --> f(#2:Elt, #1:Set, #3:Set, #3:Set, #4:Set, #5:Set) Unifier 16 X --> f(#4:Elt, #3:Set, #5:Set) Y --> #1:Set Z --> #2:Set U --> f(#4:Elt, #1:Set, #5:Set) V --> #3:Set A --> #4:Elt W --> f(#4:Elt, #1:Set, #2:Set, #3:Set, #5:Set, #5:Set) Unifier 17 X --> f(#3:Elt, #4:Set, #5:Set) Y --> #1:Set Z --> #2:Set U --> f(#3:Elt, #4:Set) V --> f(#1:Set, #5:Set) A --> #3:Elt W --> f(#3:Elt, #2:Set, #4:Set, #4:Set, #5:Set) Unifier 18 X --> f(#3:Elt, #4:Set) Y --> f(#2:Set, #5:Set) Z --> #1:Set U --> f(#3:Elt, #4:Set, #5:Set) V --> #2:Set A --> #3:Elt W --> f(#3:Elt, #1:Set, #4:Set, #4:Set, #5:Set) Unifier 19 X --> f(#3:Elt, #4:Set) Y --> #2:Set Z --> #1:Set U --> f(#3:Elt, #4:Set) V --> #2:Set A --> #3:Elt W --> f(#3:Elt, #1:Set, #4:Set, #4:Set) Unifier 20 X --> f(#2:Elt, #3:Set) Y --> f(#4:Set, #5:Set) Z --> #1:Set U --> f(#2:Elt, #4:Set) V --> f(#3:Set, #5:Set) A --> #2:Elt W --> f(#2:Elt, #1:Set, #3:Set, #4:Set) Unifier 21 X --> f(#4:Elt, #3:Set) Y --> #1:Set Z --> #2:Set U --> f(#4:Elt, #1:Set) V --> #3:Set A --> #4:Elt W --> f(#4:Elt, #1:Set, #2:Set, #3:Set) Unifier 22 X --> f(#3:Elt, #4:Set) Y --> #1:Set Z --> #2:Set U --> #3:Elt V --> f(#1:Set, #4:Set) A --> #3:Elt W --> f(#3:Elt, #2:Set, #4:Set) Unifier 23 X --> #3:Elt Y --> f(#2:Set, #4:Set) Z --> #1:Set U --> f(#3:Elt, #4:Set) V --> #2:Set A --> #3:Elt W --> f(#3:Elt, #1:Set, #4:Set) Unifier 24 X --> #3:Elt Y --> #2:Set Z --> #1:Set U --> #3:Elt V --> #2:Set A --> #3:Elt W --> f(#3:Elt, #1:Set) Unifier 25 X --> f(#2:Elt, #3:Set, #4:Set) Y --> f(#5:Set, #6:Set) Z --> #1:Set U --> f(#3:Set, #5:Set) V --> f(#2:Elt, #4:Set, #6:Set) A --> #2:Elt W --> f(#1:Set, #3:Set, #3:Set, #4:Set, #5:Set) Unifier 26 X --> f(#3:Elt, #4:Set, #5:Set) Y --> #1:Set Z --> #2:Set U --> f(#1:Set, #4:Set) V --> f(#3:Elt, #5:Set) A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set, #4:Set, #5:Set) Unifier 27 X --> f(#4:Elt, #3:Set, #5:Set) Y --> #1:Set Z --> #2:Set U --> #3:Set V --> f(#4:Elt, #1:Set, #5:Set) A --> #4:Elt W --> f(#2:Set, #3:Set, #3:Set, #5:Set) Unifier 28 X --> f(#2:Elt, #3:Set) Y --> f(#4:Set, #5:Set) Z --> #1:Set U --> f(#3:Set, #4:Set) V --> f(#2:Elt, #5:Set) A --> #2:Elt W --> f(#1:Set, #3:Set, #3:Set, #4:Set) Unifier 29 X --> f(#3:Elt, #4:Set) Y --> #1:Set Z --> #2:Set U --> f(#1:Set, #4:Set) V --> #3:Elt A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set, #4:Set) Unifier 30 X --> f(#4:Elt, #3:Set) Y --> #1:Set Z --> #2:Set U --> #3:Set V --> f(#4:Elt, #1:Set) A --> #4:Elt W --> f(#2:Set, #3:Set, #3:Set) Unifier 31 X --> f(#3:Elt, #4:Set) Y --> f(#2:Set, #5:Set) Z --> #1:Set U --> #2:Set V --> f(#3:Elt, #4:Set, #5:Set) A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set) Unifier 32 X --> f(#3:Elt, #4:Set) Y --> #2:Set Z --> #1:Set U --> #2:Set V --> f(#3:Elt, #4:Set) A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set) Unifier 33 X --> #3:Elt Y --> f(#2:Set, #4:Set) Z --> #1:Set U --> #2:Set V --> f(#3:Elt, #4:Set) A --> #3:Elt W --> f(#1:Set, #2:Set) Unifier 34 X --> #3:Elt Y --> #2:Set Z --> #1:Set U --> #2:Set V --> #3:Elt A --> #3:Elt W --> f(#1:Set, #2:Set) Unifier 35 X --> f(#3:Set, #4:Set) Y --> f(#2:Elt, #5:Set, #6:Set) Z --> #1:Set U --> f(#2:Elt, #3:Set, #5:Set) V --> f(#4:Set, #6:Set) A --> #2:Elt W --> f(#1:Set, #3:Set, #3:Set, #4:Set, #5:Set) Unifier 36 X --> f(#2:Set, #4:Set) Y --> f(#3:Elt, #5:Set) Z --> #1:Set U --> f(#3:Elt, #4:Set, #5:Set) V --> #2:Set A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set, #4:Set, #5:Set) Unifier 37 X --> f(#3:Set, #4:Set) Y --> f(#2:Elt, #5:Set) Z --> #1:Set U --> f(#2:Elt, #3:Set) V --> f(#4:Set, #5:Set) A --> #2:Elt W --> f(#1:Set, #3:Set, #3:Set, #4:Set) Unifier 38 X --> f(#2:Set, #4:Set) Y --> #3:Elt Z --> #1:Set U --> f(#3:Elt, #4:Set) V --> #2:Set A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set, #4:Set) Unifier 39 X --> #1:Set Y --> f(#4:Elt, #3:Set, #5:Set) Z --> #2:Set U --> f(#4:Elt, #1:Set, #5:Set) V --> #3:Set A --> #4:Elt W --> f(#1:Set, #1:Set, #2:Set, #5:Set) Unifier 40 X --> #1:Set Y --> f(#4:Elt, #3:Set) Z --> #2:Set U --> f(#4:Elt, #1:Set) V --> #3:Set A --> #4:Elt W --> f(#1:Set, #1:Set, #2:Set) Unifier 41 X --> #1:Set Y --> f(#3:Elt, #4:Set, #5:Set) Z --> #2:Set U --> f(#3:Elt, #4:Set) V --> f(#1:Set, #5:Set) A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set) Unifier 42 X --> #1:Set Y --> f(#3:Elt, #4:Set) Z --> #2:Set U --> f(#3:Elt, #4:Set) V --> #1:Set A --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set) Unifier 43 X --> #1:Set Y --> f(#3:Elt, #4:Set) Z --> #2:Set U --> #3:Elt V --> f(#1:Set, #4:Set) A --> #3:Elt W --> f(#1:Set, #2:Set) Unifier 44 X --> #1:Set Y --> #3:Elt Z --> #2:Set U --> #3:Elt V --> #1:Set A --> #3:Elt W --> f(#1:Set, #2:Set) ========================================== unify in AC+C : f(g(X, Y), g(X, Z), U) =? f(g(Y, Z), V) . Unifier 1 U --> f(#4:Set, g(#1:Set, #3:Set)) Z --> #1:Set X --> #2:Set Y --> #3:Set V --> f(#4:Set, g(#1:Set, #2:Set), g(#2:Set, #3:Set)) Unifier 2 U --> #1:Set Z --> #2:Set X --> #2:Set Y --> #3:Set V --> f(#1:Set, g(#2:Set, #2:Set)) Unifier 3 U --> #1:Set Z --> #2:Set X --> #3:Set Y --> #3:Set V --> f(#1:Set, g(#3:Set, #3:Set)) Unifier 4 U --> g(#1:Set, #3:Set) Z --> #1:Set X --> #2:Set Y --> #3:Set V --> f(g(#1:Set, #2:Set), g(#2:Set, #3:Set)) ========================================== unify in AC+C : g(f(X, Y), f(X, U, Z)) =? g(f(U, V), f(W, A)) . Unifier 1 X --> f(#3:Set, #4:Set, #2:Elt) Y --> f(#5:Set, #6:Set) Z --> #1:Set U --> f(#3:Set, #5:Set, #2:Elt) V --> f(#4:Set, #6:Set) W --> f(#1:Set, #3:Set, #3:Set, #4:Set, #5:Set, #2:Elt) A --> #2:Elt Unifier 2 X --> f(#3:Set, #5:Set, #4:Elt) Y --> #1:Set Z --> #2:Set U --> f(#1:Set, #5:Set, #4:Elt) V --> #3:Set W --> f(#1:Set, #2:Set, #3:Set, #5:Set, #5:Set, #4:Elt) A --> #4:Elt Unifier 3 X --> f(#4:Set, #5:Set, #3:Elt) Y --> #1:Set Z --> #2:Set U --> f(#4:Set, #3:Elt) V --> f(#1:Set, #5:Set) W --> f(#2:Set, #4:Set, #4:Set, #5:Set, #3:Elt) A --> #3:Elt Unifier 4 X --> f(#4:Set, #3:Elt) Y --> f(#2:Set, #5:Set) Z --> #1:Set U --> f(#4:Set, #5:Set, #3:Elt) V --> #2:Set W --> f(#1:Set, #4:Set, #4:Set, #5:Set, #3:Elt) A --> #3:Elt Unifier 5 X --> f(#4:Set, #3:Elt) Y --> #2:Set Z --> #1:Set U --> f(#4:Set, #3:Elt) V --> #2:Set W --> f(#1:Set, #4:Set, #4:Set, #3:Elt) A --> #3:Elt Unifier 6 X --> f(#3:Set, #4:Set) Y --> f(#5:Set, #6:Set) Z --> f(#2:Set, #1:Elt) U --> f(#3:Set, #5:Set) V --> f(#4:Set, #6:Set) W --> f(#2:Set, #3:Set, #3:Set, #4:Set, #5:Set) A --> #1:Elt Unifier 7 X --> f(#2:Set, #5:Set) Y --> #1:Set Z --> f(#4:Set, #3:Elt) U --> f(#1:Set, #5:Set) V --> #2:Set W --> f(#1:Set, #2:Set, #4:Set, #5:Set, #5:Set) A --> #3:Elt Unifier 8 X --> f(#3:Set, #4:Set, #2:Elt) Y --> f(#5:Set, #6:Set) Z --> #1:Set U --> f(#3:Set, #5:Set) V --> f(#4:Set, #6:Set, #2:Elt) W --> f(#1:Set, #3:Set, #3:Set, #4:Set, #5:Set) A --> #2:Elt Unifier 9 X --> f(#4:Set, #5:Set, #3:Elt) Y --> #1:Set Z --> #2:Set U --> f(#1:Set, #4:Set) V --> f(#5:Set, #3:Elt) W --> f(#1:Set, #2:Set, #4:Set, #4:Set, #5:Set) A --> #3:Elt Unifier 10 X --> f(#3:Set, #4:Set) Y --> f(#5:Set, #6:Set, #2:Elt) Z --> #1:Set U --> f(#3:Set, #5:Set, #2:Elt) V --> f(#4:Set, #6:Set) W --> f(#1:Set, #3:Set, #3:Set, #4:Set, #5:Set) A --> #2:Elt Unifier 11 X --> f(#2:Set, #4:Set) Y --> f(#5:Set, #3:Elt) Z --> #1:Set U --> f(#4:Set, #5:Set, #3:Elt) V --> #2:Set W --> f(#1:Set, #2:Set, #4:Set, #4:Set, #5:Set) A --> #3:Elt Unifier 12 X --> f(#2:Set, #5:Set) Y --> #1:Set Z --> f(#4:Set, #3:Elt) U --> #2:Set V --> f(#1:Set, #5:Set) W --> f(#2:Set, #2:Set, #4:Set, #5:Set) A --> #3:Elt Unifier 13 X --> f(#3:Set, #5:Set, #4:Elt) Y --> #1:Set Z --> #2:Set U --> #3:Set V --> f(#1:Set, #5:Set, #4:Elt) W --> f(#2:Set, #3:Set, #3:Set, #5:Set) A --> #4:Elt Unifier 14 X --> f(#3:Set, #4:Set) Y --> f(#5:Set, #2:Elt) Z --> #1:Set U --> f(#3:Set, #2:Elt) V --> f(#4:Set, #5:Set) W --> f(#1:Set, #3:Set, #3:Set, #4:Set) A --> #2:Elt Unifier 15 X --> f(#2:Set, #4:Set) Y --> #3:Elt Z --> #1:Set U --> f(#4:Set, #3:Elt) V --> #2:Set W --> f(#1:Set, #2:Set, #4:Set, #4:Set) A --> #3:Elt Unifier 16 X --> #1:Set Y --> f(#2:Set, #5:Set) Z --> f(#4:Set, #3:Elt) U --> f(#1:Set, #5:Set) V --> #2:Set W --> f(#1:Set, #1:Set, #4:Set, #5:Set) A --> #3:Elt Unifier 17 X --> f(#3:Set, #2:Elt) Y --> f(#4:Set, #5:Set) Z --> #1:Set U --> f(#3:Set, #4:Set) V --> f(#5:Set, #2:Elt) W --> f(#1:Set, #3:Set, #3:Set, #4:Set) A --> #2:Elt Unifier 18 X --> f(#4:Set, #3:Elt) Y --> #1:Set Z --> #2:Set U --> f(#1:Set, #4:Set) V --> #3:Elt W --> f(#1:Set, #2:Set, #4:Set, #4:Set) A --> #3:Elt Unifier 19 X --> #1:Set Y --> f(#3:Set, #5:Set, #4:Elt) Z --> #2:Set U --> f(#1:Set, #5:Set, #4:Elt) V --> #3:Set W --> f(#1:Set, #1:Set, #2:Set, #5:Set) A --> #4:Elt Unifier 20 X --> #1:Set Y --> #2:Set Z --> f(#4:Set, #3:Elt) U --> #1:Set V --> #2:Set W --> f(#1:Set, #1:Set, #4:Set) A --> #3:Elt Unifier 21 X --> f(#3:Set, #4:Elt) Y --> #1:Set Z --> #2:Set U --> #3:Set V --> f(#1:Set, #4:Elt) W --> f(#2:Set, #3:Set, #3:Set) A --> #4:Elt Unifier 22 X --> #1:Set Y --> f(#3:Set, #4:Elt) Z --> #2:Set U --> f(#1:Set, #4:Elt) V --> #3:Set W --> f(#1:Set, #1:Set, #2:Set) A --> #4:Elt Unifier 23 X --> f(#3:Set, #2:Elt) Y --> f(#4:Set, #5:Set) Z --> #1:Set U --> f(#4:Set, #2:Elt) V --> f(#3:Set, #5:Set) W --> f(#1:Set, #3:Set, #4:Set, #2:Elt) A --> #2:Elt Unifier 24 X --> f(#3:Set, #4:Elt) Y --> #1:Set Z --> #2:Set U --> f(#1:Set, #4:Elt) V --> #3:Set W --> f(#1:Set, #2:Set, #3:Set, #4:Elt) A --> #4:Elt Unifier 25 X --> f(#4:Set, #3:Elt) Y --> #1:Set Z --> #2:Set U --> #3:Elt V --> f(#1:Set, #4:Set) W --> f(#2:Set, #4:Set, #3:Elt) A --> #3:Elt Unifier 26 X --> #3:Elt Y --> f(#2:Set, #4:Set) Z --> #1:Set U --> f(#4:Set, #3:Elt) V --> #2:Set W --> f(#1:Set, #4:Set, #3:Elt) A --> #3:Elt Unifier 27 X --> #3:Elt Y --> #2:Set Z --> #1:Set U --> #3:Elt V --> #2:Set W --> f(#1:Set, #3:Elt) A --> #3:Elt Unifier 28 X --> #1:Set Y --> f(#2:Set, #5:Set) Z --> f(#4:Set, #3:Elt) U --> #2:Set V --> f(#1:Set, #5:Set) W --> f(#1:Set, #2:Set, #4:Set) A --> #3:Elt Unifier 29 X --> #1:Set Y --> #2:Set Z --> f(#4:Set, #3:Elt) U --> #2:Set V --> #1:Set W --> f(#1:Set, #2:Set, #4:Set) A --> #3:Elt Unifier 30 X --> f(#4:Set, #3:Elt) Y --> f(#2:Set, #5:Set) Z --> #1:Set U --> #2:Set V --> f(#4:Set, #5:Set, #3:Elt) W --> f(#1:Set, #2:Set, #4:Set) A --> #3:Elt Unifier 31 X --> f(#4:Set, #3:Elt) Y --> #2:Set Z --> #1:Set U --> #2:Set V --> f(#4:Set, #3:Elt) W --> f(#1:Set, #2:Set, #4:Set) A --> #3:Elt Unifier 32 X --> #1:Set Y --> f(#4:Set, #5:Set, #3:Elt) Z --> #2:Set U --> f(#4:Set, #3:Elt) V --> f(#1:Set, #5:Set) W --> f(#1:Set, #2:Set, #4:Set) A --> #3:Elt Unifier 33 X --> #1:Set Y --> f(#4:Set, #3:Elt) Z --> #2:Set U --> f(#4:Set, #3:Elt) V --> #1:Set W --> f(#1:Set, #2:Set, #4:Set) A --> #3:Elt Unifier 34 X --> #1:Set Y --> f(#4:Set, #3:Elt) Z --> #2:Set U --> #3:Elt V --> f(#1:Set, #4:Set) W --> f(#1:Set, #2:Set) A --> #3:Elt Unifier 35 X --> #1:Set Y --> #3:Elt Z --> #2:Set U --> #3:Elt V --> #1:Set W --> f(#1:Set, #2:Set) A --> #3:Elt Unifier 36 X --> #3:Elt Y --> f(#2:Set, #4:Set) Z --> #1:Set U --> #2:Set V --> f(#4:Set, #3:Elt) W --> f(#1:Set, #2:Set) A --> #3:Elt Unifier 37 X --> #3:Elt Y --> #2:Set Z --> #1:Set U --> #2:Set V --> #3:Elt W --> f(#1:Set, #2:Set) A --> #3:Elt Unifier 38 X --> f(#2:Set, #3:Set) Y --> f(#4:Set, #5:Set) Z --> #1:Elt U --> f(#2:Set, #4:Set) V --> f(#3:Set, #5:Set) W --> f(#2:Set, #2:Set, #3:Set, #4:Set) A --> #1:Elt Unifier 39 X --> f(#2:Set, #4:Set) Y --> #1:Set Z --> #3:Elt U --> f(#1:Set, #4:Set) V --> #2:Set W --> f(#1:Set, #2:Set, #4:Set, #4:Set) A --> #3:Elt Unifier 40 X --> f(#2:Set, #4:Set) Y --> #1:Set Z --> #3:Elt U --> #2:Set V --> f(#1:Set, #4:Set) W --> f(#2:Set, #2:Set, #4:Set) A --> #3:Elt Unifier 41 X --> #1:Set Y --> f(#2:Set, #4:Set) Z --> #3:Elt U --> f(#1:Set, #4:Set) V --> #2:Set W --> f(#1:Set, #1:Set, #4:Set) A --> #3:Elt Unifier 42 X --> #1:Set Y --> #2:Set Z --> #3:Elt U --> #1:Set V --> #2:Set W --> f(#1:Set, #1:Set) A --> #3:Elt Unifier 43 X --> #1:Set Y --> f(#2:Set, #4:Set) Z --> #3:Elt U --> #2:Set V --> f(#1:Set, #4:Set) W --> f(#1:Set, #2:Set) A --> #3:Elt Unifier 44 X --> #1:Set Y --> #2:Set Z --> #3:Elt U --> #2:Set V --> #1:Set W --> f(#1:Set, #2:Set) A --> #3:Elt Unifier 45 X --> f(#5:Set, #4:Elt) Y --> #1:Set Z --> #2:Set U --> #3:Set V --> f(#2:Set, #5:Set, #4:Elt) W --> f(#1:Set, #5:Set) A --> #4:Elt Unifier 46 X --> #1:Set Y --> f(#5:Set, #4:Elt) Z --> #2:Set U --> #3:Set V --> f(#1:Set, #2:Set) W --> f(#1:Set, #5:Set) A --> #4:Elt Unifier 47 X --> #1:Set Y --> #4:Elt Z --> #2:Set U --> #3:Set V --> f(#1:Set, #2:Set) W --> #1:Set A --> #4:Elt Unifier 48 X --> #4:Elt Y --> #3:Set Z --> #1:Set U --> #2:Set V --> f(#1:Set, #4:Elt) W --> #3:Set A --> #4:Elt ========================================== unify in SIMULT : g(X:Foo) =? g(Y:Foo) /\ h(X:Foo) =? h(Z:Foo) . Unifier 1 X:Foo --> #1:Foo Y:Foo --> #1:Foo Z:Foo --> #1:Foo ========================================== unify in SIMULT : g(X:Foo) =? Y:Foo /\ h(X:Foo) =? h(Z:Foo) . Unifier 1 X:Foo --> #1:Foo Y:Foo --> g(#1:Foo) Z:Foo --> #1:Foo ========================================== unify in SIMULT : g(X:Foo) =? Y:Foo /\ h(X:Foo) =? h(Y:Foo) . No unifier. ========================================== unify in SIMULT : g(X:Foo) =? Y:Foo /\ X:Foo =? h(Y:Foo) . No unifier. ========================================== unify [1] in SIMULT : g(X:Foo) =? Y:Foo /\ h(X:Foo) =? h(Z:Foo) . Unifier 1 X:Foo --> #1:Foo Y:Foo --> g(#1:Foo) Z:Foo --> #1:Foo Bye. Maude-Maude3.5.1/tests/Misc/unification0000775000175000017510000000035015036121435017351 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/unification.maude -no-banner -no-advise \ > unification.out 2>&1 diff $srcdir/unification.expected unification.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/timeTest.maude0000664000175000017510000000351415036121435017733 0ustar nileshnilesh*** *** Test time API. *** set show timing off . load time load file mod TEST is inc TIME . inc STD-STREAM . op myClass : -> Cid . ops me : -> Oid . op firstTimer : Oid -> Attribute . op secondTimer : Oid -> Attribute . op thirdTimer : Oid -> Attribute . op run : -> Configuration . eq run = <> < me : myClass | none > createTimer(timeManager, me) . vars O O2 O3 O4 O5 : Oid . var N : Nat . rl < O : myClass | none > createdTimer(O, O2, O3) => < O : myClass | firstTimer(O3) > createTimer(timeManager, me) . rl < O : myClass | firstTimer(O3) > createdTimer(O, O2, O4) => < O : myClass | firstTimer(O3), secondTimer(O4) > createTimer(timeManager, me) . rl < O : myClass | firstTimer(O3), secondTimer(O4) > createdTimer(O, O2, O5) => < O : myClass | firstTimer(O3), secondTimer(O4), thirdTimer(O5) > startTimer(O3, me, periodic, 500 ms) startTimer(O4, me, oneShot, 1250 ms) startTimer(O5, me, oneShot, 3250 ms). rl < O : myClass | firstTimer(O3), secondTimer(O4), thirdTimer(O5) > timeOut(O, O3) => < O : myClass | firstTimer(O3), secondTimer(O4), thirdTimer(O5) > write(stdout, O, "time out for first timer\n") . rl < O : myClass | firstTimer(O3), secondTimer(O4), thirdTimer(O5) > timeOut(O, O4) => < O : myClass | firstTimer(O3), secondTimer(O4), thirdTimer(O5) > write(stdout, O, "time out for second timer\n") . rl < O : myClass | firstTimer(O3), secondTimer(O4), thirdTimer(O5) > timeOut(O, O5) => < O : myClass | firstTimer(O3), secondTimer(O4), thirdTimer(O5) > write(stdout, O, "time out for third timer\n") stopTimer(O3, O) . rl < O : myClass | firstTimer(O3), secondTimer(O4), thirdTimer(O5) > stoppedTimer(O, O3) => < O : myClass | none > deleteTimer(O3, O) deleteTimer(O4, O) deleteTimer(O5, O) . endm erew run . Maude-Maude3.5.1/tests/Misc/timeTest.expected0000664000175000017510000000122215036121435020433 0ustar nileshnilesh========================================== erewrite in TEST : run . time out for first timer time out for first timer time out for second timer time out for first timer time out for first timer time out for first timer time out for first timer time out for third timer rewrites: 19 result Configuration: <> startedTimer(me, timer(0)) startedTimer(me, timer(1)) startedTimer(me, timer(2)) deletedTimer(me, timer(0)) deletedTimer(me, timer(1)) deletedTimer(me, timer(2)) wrote(me, stdout) wrote(me, stdout) wrote(me, stdout) wrote(me, stdout) wrote(me, stdout) wrote(me, stdout) wrote(me, stdout) wrote(me, stdout) < me : myClass | none > Bye. Maude-Maude3.5.1/tests/Misc/timeTest0000775000175000017510000000035115036121435016640 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/timeTest.maude -no-banner -no-advise -allow-files \ > timeTest.out 2>&1 diff $srcdir/timeTest.expected timeTest.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/sreduce.maude0000664000175000017510000001032115036121435017561 0ustar nileshnileshset show timing off . set show advisories off . set include BOOL off . fmod MODULAR is sorts Nat NzNat . subsort NzNat < Nat . var X Y Z : Nat . op 0 : -> Nat . op s_ : Nat -> NzNat . op _+_ : Nat NzNat -> Nat . op _+_ : Nat Nat -> Nat . eq 0 + X = X . eq s Y + X = s (Y + X) . op _*_ : NzNat NzNat -> NzNat . op _*_ : Nat Nat -> Nat . eq 0 * X = 0 . eq s Y * X = X + (Y * X) . op _^_ : Nat Nat -> Nat . op _^_ : NzNat Nat -> NzNat . eq X ^ 0 = s 0 . eq X ^ s Y = X * (X ^ Y) . op c : Nat Nat -> Nat . eq c(0, Y) = 0 . eq c(X, 0) = X . eq c(s X, s Y) = c(X, Y) . op _mod_ : Nat NzNat -> Nat . eq X mod Y = i(X, Y, Y) . op i : Nat Nat NzNat -> Nat . eq i(0, 0, Z) = 0 . eq i(0, s Y, Z) = c(Z, s Y) . eq i(s X, 0, Z) = i(s X, Z, Z) . eq i(s X, s Y, Z) = i(X, Y, Z) . op modExp : Nat Nat NzNat ~> Nat . eq modExp(X, 0, Z) = s 0 . eq modExp(X, s Y, Z) = (X * modExp(X, Y, Z)) mod Z . endfm sred modExp(s s s s 0, s s 0 ^ ((s s 0 ^ s s s s 0) + s s s s 0), s s s s s 0) . fmod NAT' is sorts Nat NzNat . subsort NzNat < Nat . var X Y : Nat . op 0 : -> Nat . op s_ : Nat -> NzNat . op _+_ : Nat NzNat -> Nat . op _+_ : Nat Nat -> Nat . eq 0 + X = X . eq s Y + X = s (X + Y) . op _*_ : NzNat NzNat -> NzNat . op _*_ : Nat Nat -> Nat . eq 0 * X = 0 . eq s Y * X = X + (Y * X) . endfm fmod LIST-BENCH is pr NAT' . sorts Elt List . op dirtyElt : ~> Elt . op dirtyList : ~> List . op nil : -> List . op __ : Elt List -> List . ops a b c d e : -> Elt . vars E E' : Elt . vars L L' : List . var N : Nat . *** to make big lists by doubling op cat : List List -> List . eq cat(E L, L') = E cat(L, L') . eq cat(nil, L') = L' . op dup : List Nat -> List . eq dup(L, 0) = L . eq dup(L, s N) = cat(dup(L, N), dup(L, N)) . op head : List -> Elt . eq head(E L) = E . *** efficient reverse op rev : List List -> List . eq rev(E L, L') = rev(L, E L') . eq rev(nil, L) = L . op rev : List -> List . eq rev(L) = rev(L, nil) . op multi : List Nat -> List . eq multi(L, 0) = L . eq multi(L, s N) = rev(multi(L, N)) . endfm sred head(multi(dup(a b c d e nil, s s s s 0 * s s s s 0), s s s s s s s s s 0 * s s s s s s s s s 0)) . fmod BIT is sorts Bool Bit List . ops true false : -> Bool . ops 0 1 : -> Bit . op nil : -> List . op __ : Bit List -> List . var L : List . op isZero : List -> Bool . eq isZero(nil) = true . eq isZero(0 L) = isZero(L) . eq isZero(1 L) = false . op dec : List -> List . eq dec(nil) = nil . eq dec(0 L) = 1 dec(L) . eq dec(1 L) = 0 L . op count : List -> List . eq count(L) = count'(isZero(L), L) . op count' : Bool List -> List . eq count'(false, L) = count(dec(L)) . eq count'(true, L) = L . endfm sred count(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 nil) . ***( sred count(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 nil) . ) fmod BINARY is sorts Bool Bit Num . ops true false : -> Bool . ops 0 1 : -> Bit . op nil : -> Num . op __ : Bit Num -> Num . var X Y : Num . var B : Bit . op add : Num Num -> Num . eq add(nil, X) = X . eq add(X, nil) = X . eq add(0 X, B Y) = B add(X, Y) . eq add(B X, 0 Y) = B add(X, Y) . eq add(1 X, 1 Y) = 0 c(X, Y) . op c : Num Num -> Num . eq c(nil, X) = add(1 nil, X) . eq c(X, nil) = add(1 nil, X) . eq c(1 X, B Y) = B c(X, Y) . eq c(B X, 1 Y) = B c(X, Y) . eq c(0 X, 0 Y) = 1 add(X, Y) . op mult : Num Num -> Num . eq mult(nil, X) = 0 nil . eq mult(X, nil) = 0 nil . eq mult(0 X, Y) = 0 mult(X, Y) . eq mult(1 X, Y) = add(Y, 0 mult(X, Y)) . op dec : Num -> Num . eq dec(nil) = nil . eq dec(0 X) = 1 dec(X) . eq dec(1 X) = 0 X . op isZero : Num -> Bool . eq isZero(nil) = true . eq isZero(0 X) = isZero(X) . eq isZero(1 X) = false . op fact : Num -> Num . eq fact(X) = fact'(isZero(X), X) . op fact' : Bool Num -> Num . eq fact'(true, X) = 1 nil . eq fact'(false, X) = mult(X, fact(dec(X))) . op count : Num -> Num . eq count(nil) = 0 nil . eq count(0 X) = count(X) . eq count(1 X) = add(1 nil, count(X)) . endfm sred count(fact(1 1 1 1 1 1 1 1 1 1 nil)) . ***( *** count 1's in binary representation of 4095! sred count(fact(1 1 1 1 1 1 1 1 1 1 1 1 nil)) . ) Maude-Maude3.5.1/tests/Misc/sreduce.expected0000664000175000017510000000133315036121435020272 0ustar nileshnilesh========================================== sreduce in MODULAR : modExp(s s s s 0, s s 0 ^ ((s s 0 ^ s s s s 0) + s s s s 0), s s s s s 0) . rewrites: 40894656 result NzNat: s 0 ========================================== sreduce in LIST-BENCH : head(multi(dup(a b c d e nil, s s s s 0 * s s s s 0), s s s s s s s s s 0 * s s s s s s s s s 0)) . rewrites: 26870231 result Elt: e ========================================== sreduce in BIT : count(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 nil) . rewrites: 1572843 result List: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 nil ========================================== sreduce in BINARY : count(fact(1 1 1 1 1 1 1 1 1 1 nil)) . rewrites: 18755260 result Num: 0 0 0 1 0 0 0 0 1 1 1 1 nil Bye. Maude-Maude3.5.1/tests/Misc/sreduce0000775000175000017510000000033015036121435016471 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/sreduce.maude -no-banner -no-advise \ > sreduce.out 2>&1 diff $srcdir/sreduce.expected sreduce.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/smtTest.maude0000775000175000017510000002057315036121435017607 0ustar nileshnileshset show timing off . load smt *** Base theory fmod TEST-B is pr BOOLEAN . vars W X Y Z : Boolean . endfm check W =/== X and Y . check W === X and Y . check X =/== true and X =/== Y and Y =/== true . check X =/== true and X =/== Y and Y =/== false . check (X xor true) and (X xor Y) and (Y xor true) . check (X xor true) and (X xor Y) and (Y xor false) . check not (X or not X) . check not(X implies Y implies X) . check (X ? Y : Z) and (Y implies X) and (Z implies X) . check (X ? Y : Z) and (Y implies not X) and (Z implies X) . check X === Y and Y === Z . check X === Y and Y === Z and Z =/== X . *** Theory of integers fmod TEST-I is pr INTEGER . vars W X Y Z : Boolean . vars I J K L : Integer . endfm check I > J and J > K . check I > J and J > K and K > I . check I < J and J < K . check I < J and J < K and K < I . check I >= J and J >= I . check I >= J and J >= I and I =/== J . check I <= J and J <= I . check I <= J and J <= I and I =/== J . check I === J + K and I > J and I > K . check I === J + K and I > J + K . check I === J + K and I > J + K + L . check I === J - K and I > J + K . check - I === J - K and I > J + K . check I =/== J + K and I > J + K . check (I > J ? I : J) >= I and (I > J ? I : J) >= J . check (I > J ? I : J) < I . check (I > J ? I : J) === I or (I > J ? I : J) === J . check not((I > J ? I : J) === I or (I > J ? I : J) === J) . check (I > J ? I : J) =/== I and (I > J ? I : J) =/== J . *** Theory of reals fmod TEST-R is pr REAL . vars W X Y Z : Boolean . vars P Q R S : Real . endfm check P > Q and Q > R . check P > Q and Q > R and R > P . check P < Q and Q < R . check P < Q and Q < R and R < P . check P >= Q and Q >= P . check P >= Q and Q >= P and P =/== Q . check P <= Q and Q <= P . check P <= Q and Q <= P and P =/== Q . check P === Q + R and P > Q and P > R . check P === Q + R and P > Q + R . check P === Q + R and P > Q + R + S . check P === Q - R and P > Q + R . check - P === Q - R and P > Q + R . check P =/== Q + R and P > Q + R . check (P > Q ? P : Q) >= P and (P > Q ? P : Q) >= Q . check (P > Q ? P : Q) < P . check (P > Q ? P : Q) === P or (P > Q ? P : Q) === Q . check not((P > Q ? P : Q) === P or (P > Q ? P : Q) === Q) . check (P > Q ? P : Q) =/== P and (P > Q ? P : Q) =/== Q . *** Theory of reals + integers fmod TEST-RI is pr REAL-INTEGER . vars W X Y Z : Boolean . vars I J K L : Integer . vars P Q R S : Real . endfm check isInteger(toReal(I) + toReal(J)) =/== false . check isInteger(toReal(I) + toReal(J)) =/== true . check toInteger(R) + toInteger(P) === toInteger(R + P) . check not(toInteger(R) + toInteger(P) === toInteger(R + P)) . check 1/2 < P . check 1/2 < P and P < 3/4 . check 1/2 < P and P < 3/4 and isInteger(P) . check -2 < I . check -2 < I and -2 * I > -1 . check -2 < I and -2 * I > -1 and I =/== -1 . check -2 < I and -2 * I > -1 and I =/== -1 and I - I =/== I . *** meta-level version select META-LEVEL . red metaCheck(['REAL-INTEGER], '_=_['_+_['1.Integer, '1.Integer], '2.Integer]) . red metaCheck(['REAL-INTEGER], '_=_['_+_['1.Integer, '1.Integer], '3.Integer]) . fmod META-CHECK is pr META-LEVEL . pr REAL-INTEGER . vars W X Y Z : Boolean . vars I J K L : Integer . vars P Q R S : Real . endfm red metaCheck(['META-CHECK], upTerm((I > J ? I : J) < I)) . red metaCheck(['META-CHECK], upTerm((I > J ? I : J) > I)) . red metaCheck(['META-CHECK], upTerm( (I > J ? I : J) === I or (I > J ? I : J) === J )) . red metaCheck(['META-CHECK], upTerm( not((I > J ? I : J) === I or (I > J ? I : J) === J ) )) . red metaCheck(['META-CHECK], upTerm( (I > J ? I : J) =/== I and (I > J ? I : J) =/== J )) . red metaCheck(['META-CHECK], upTerm( (I > J ? I : J) =/== I or (I > J ? I : J) =/== J )) . mod MULTI is pr INTEGER . vars A B C D E : Boolean . vars I J K L M N : Integer . vars X Y : Foo . sort Pair . sort State . op <_|_> : State Boolean -> Pair . sort Foo . ops f g : Integer Foo -> State . crl f(I, X) => g(I + 1, Y) if I < 0 = true [nonexec] . endm smt-search [10] f(-2, X) =>* Z:State . mod TEST is pr MULTI . pr META-LEVEL . vars X Y : Foo . endm red metaSmtSearch(['MULTI], upTerm(f(-2, X)), 'Z:State, nil, '*, 1, 1, 0) . red metaSmtSearch(['MULTI], upTerm(f(-2, X)), 'Z:State, nil, '*, 1, 1, 1) . red metaSmtSearch(['MULTI], upTerm(f(-2, X)), 'Z:State, nil, '*, 1, 1, 2) . red metaSmtSearch(['MULTI], upTerm(f(-2, X)), 'Z:State, nil, '+, 200, 1, 0) . red metaSmtSearch(['MULTI], upTerm(f(-2, X)), 'Z:State, nil, '+, 200, 1, 1) . mod ITEST is pr INTEGER . vars A B C D E : Boolean . vars I J K L M N : Integer . sort State . sort Foo . ops f : Integer -> State . var X : State . crl f(I) => f(I + 1) if I >= 10 = true /\ I <= 12 = true . crl f(I) => f(I - 1) if I >= 10 = true /\ I <= 12 = true . endm smt-search [4] f(11) =>1 X . smt-search [4] f(11) =>* X . smt-search [4] f(11) =>+ X . smt-search [4, 1] f(11) =>+ X . smt-search [4, 2] f(11) =>+ X . smt-search [4, 0] f(11) =>* X . smt-search [4, 1] f(11) =>* X . smt-search [4, 2] f(11) =>* X . smt-search [20] f(11) =>* X . smt-search [4] f(J) =>* X . smt-search [4] f(J) =>* f(J) . smt-search [4] f(J) =>* f(K) such that J = K . *** test continue smt-search [1] f(11) =>1 X . cont . smt-search [1] f(11) =>* X . cont 2 . cont 1 . cont 1 . debug smt-search [4] f(11) =>+ X . step . step . step . resume . smt-search [4] f(J) =>* f(K) such that J = K . debug cont 1 . step . resume . mod TEST2 is pr ITEST . pr META-LEVEL . vars I J K L M N : Integer . endm red metaSmtSearch(['ITEST], upTerm(f(J)), upTerm(f(K)), 'J:Integer = 'K:Integer, '*, 42, 2, 0) . red metaSmtSearch(['ITEST], upTerm(f(J)), upTerm(f(K)), 'J:Integer = 'K:Integer, '*, 42, 2, 1) . red metaSmtSearch(['ITEST], upTerm(f(J)), upTerm(f(K)), 'J:Integer = 'K:Integer, '*, 42, 2, 2) . red metaSmtSearch(['ITEST], upTerm(f(J)), upTerm(f(K)), 'J:Integer = 'K:Integer, '*, 42, 2, 3) . red in TEST2 : metaSmtSearch(['ITEST], upTerm(f(J)), upTerm(f(K)), 'J:Integer = 'K:Integer, '*, 42, unbounded, 3) . *** check violations of SMT restrictions mod COLLAPSE-AXIOM is pr INTEGER . op bad : Foo Foo -> Foo [idem] . sort Foo . op f : Foo Foo -> Foo . op g : Foo -> Foo . op h : Integer -> Foo . vars A B C : Foo . vars X Y Z : Integer . crl f(h(X), h(Y)) => g(h(X)) if X = Y . endm smt-search f(h(X), h(Y)) =>+ g(C) . mod COLLAPSE-AXIOM2 is pr INTEGER . op bad : Foo Foo -> Foo [poly (1 2 3) idem] . sort Foo . op f : Foo Foo -> Foo . op g : Foo -> Foo . op h : Integer -> Foo . vars A B C : Foo . vars X Y Z : Integer . crl f(h(X), h(Y)) => g(h(X)) if X = Y . endm smt-search f(h(X), h(Y)) =>+ g(C) . mod SMT-OP-IN-LHS is pr INTEGER . sort Foo . op f : Foo Foo -> Foo . op g : Foo -> Foo . op h : Integer -> Foo . vars A B C : Foo . vars X Y Z : Integer . crl f(h(X), h(Y + 1)) => g(h(X)) if X = Y . endm smt-search f(h(X), h(Y)) =>+ g(C) . mod NONLINEAR-VAR-IN-LHS is pr INTEGER . sort Foo . op f : Foo Foo -> Foo . op g : Foo -> Foo . op h : Integer -> Foo . vars A B C : Foo . vars X Y Z : Integer . crl f(h(X), h(X)) => g(h(X)) if X = 1 . endm smt-search f(h(X), h(Y)) =>+ g(C) . mod EQ-AND-MB-NO_RULES is pr INTEGER . op bad : Foo Foo -> Foo . sort Foo . op f : Foo Foo -> Foo . op g : Foo -> Foo . op h : Integer -> Foo . vars A B C : Foo . vars X Y Z : Integer . mb A : Foo . eq f(A, A) = g(A) . endm smt-search f(h(X), h(Y)) =>+ g(C) . mod FOO is pr INTEGER . op bad : Foo Foo -> Foo . sort Foo . op f : Foo Foo -> Foo . op g : Foo -> Foo . op h : Integer -> Foo . vars A B C : Foo . vars X Y Z : Integer . crl f(h(X), h(Y)) => g(h(X)) if X = Y . endm *** nonlinear variable in pattern smt-search f(h(X), h(Y)) =>+ f(C, C) . *** SMT operator in pattern smt-search f(h(X), h(Y)) =>+ h(X + Y) . Maude-Maude3.5.1/tests/Misc/smtTest.expected0000664000175000017510000006527615036121435020323 0ustar nileshnilesh========================================== check in TEST-B : W =/== X and Y . Result from sat solver is: sat ========================================== check in TEST-B : W === X and Y . Result from sat solver is: sat ========================================== check in TEST-B : X =/== true and X =/== Y and Y =/== true . Result from sat solver is: unsat ========================================== check in TEST-B : X =/== true and X =/== Y and Y =/== false . Result from sat solver is: sat ========================================== check in TEST-B : (X xor true) and (X xor Y) and (Y xor true) . Result from sat solver is: unsat ========================================== check in TEST-B : (X xor true) and (X xor Y) and (Y xor false) . Result from sat solver is: sat ========================================== check in TEST-B : not (X or not X) . Result from sat solver is: unsat ========================================== check in TEST-B : not (X implies Y implies X) . Result from sat solver is: unsat ========================================== check in TEST-B : (X ? Y : Z) and (Y implies X) and (Z implies X) . Result from sat solver is: sat ========================================== check in TEST-B : (X ? Y : Z) and (Y implies not X) and (Z implies X) . Result from sat solver is: unsat ========================================== check in TEST-B : X === Y and Y === Z . Result from sat solver is: sat ========================================== check in TEST-B : X === Y and Y === Z and Z =/== X . Result from sat solver is: unsat ========================================== check in TEST-I : I > J and J > K . Result from sat solver is: sat ========================================== check in TEST-I : I > J and J > K and K > I . Result from sat solver is: unsat ========================================== check in TEST-I : I < J and J < K . Result from sat solver is: sat ========================================== check in TEST-I : I < J and J < K and K < I . Result from sat solver is: unsat ========================================== check in TEST-I : I >= J and J >= I . Result from sat solver is: sat ========================================== check in TEST-I : I >= J and J >= I and I =/== J . Result from sat solver is: unsat ========================================== check in TEST-I : I <= J and J <= I . Result from sat solver is: sat ========================================== check in TEST-I : I <= J and J <= I and I =/== J . Result from sat solver is: unsat ========================================== check in TEST-I : I === J + K and I > J and I > K . Result from sat solver is: sat ========================================== check in TEST-I : I === J + K and I > J + K . Result from sat solver is: unsat ========================================== check in TEST-I : I === J + K and I > J + K + L . Result from sat solver is: sat ========================================== check in TEST-I : I === J - K and I > J + K . Result from sat solver is: sat ========================================== check in TEST-I : - I === J - K and I > J + K . Result from sat solver is: sat ========================================== check in TEST-I : I =/== J + K and I > J + K . Result from sat solver is: sat ========================================== check in TEST-I : (I > J ? I : J) >= I and (I > J ? I : J) >= J . Result from sat solver is: sat ========================================== check in TEST-I : (I > J ? I : J) < I . Result from sat solver is: unsat ========================================== check in TEST-I : (I > J ? I : J) === I or (I > J ? I : J) === J . Result from sat solver is: sat ========================================== check in TEST-I : not ((I > J ? I : J) === I or (I > J ? I : J) === J) . Result from sat solver is: unsat ========================================== check in TEST-I : (I > J ? I : J) =/== I and (I > J ? I : J) =/== J . Result from sat solver is: unsat ========================================== check in TEST-R : P > Q and Q > R . Result from sat solver is: sat ========================================== check in TEST-R : P > Q and Q > R and R > P . Result from sat solver is: unsat ========================================== check in TEST-R : P < Q and Q < R . Result from sat solver is: sat ========================================== check in TEST-R : P < Q and Q < R and R < P . Result from sat solver is: unsat ========================================== check in TEST-R : P >= Q and Q >= P . Result from sat solver is: sat ========================================== check in TEST-R : P >= Q and Q >= P and P =/== Q . Result from sat solver is: unsat ========================================== check in TEST-R : P <= Q and Q <= P . Result from sat solver is: sat ========================================== check in TEST-R : P <= Q and Q <= P and P =/== Q . Result from sat solver is: unsat ========================================== check in TEST-R : P === Q + R and P > Q and P > R . Result from sat solver is: sat ========================================== check in TEST-R : P === Q + R and P > Q + R . Result from sat solver is: unsat ========================================== check in TEST-R : P === Q + R and P > Q + R + S . Result from sat solver is: sat ========================================== check in TEST-R : P === Q - R and P > Q + R . Result from sat solver is: sat ========================================== check in TEST-R : - P === Q - R and P > Q + R . Result from sat solver is: sat ========================================== check in TEST-R : P =/== Q + R and P > Q + R . Result from sat solver is: sat ========================================== check in TEST-R : (P > Q ? P : Q) >= P and (P > Q ? P : Q) >= Q . Result from sat solver is: sat ========================================== check in TEST-R : (P > Q ? P : Q) < P . Result from sat solver is: unsat ========================================== check in TEST-R : (P > Q ? P : Q) === P or (P > Q ? P : Q) === Q . Result from sat solver is: sat ========================================== check in TEST-R : not ((P > Q ? P : Q) === P or (P > Q ? P : Q) === Q) . Result from sat solver is: unsat ========================================== check in TEST-R : (P > Q ? P : Q) =/== P and (P > Q ? P : Q) =/== Q . Result from sat solver is: unsat ========================================== check in TEST-RI : isInteger(toReal(I) + toReal(J)) =/== false . Result from sat solver is: sat ========================================== check in TEST-RI : isInteger(toReal(I) + toReal(J)) =/== true . Result from sat solver is: unsat ========================================== check in TEST-RI : toInteger(R) + toInteger(P) === toInteger(R + P) . Result from sat solver is: sat ========================================== check in TEST-RI : not toInteger(R) + toInteger(P) === toInteger(R + P) . Result from sat solver is: sat ========================================== check in TEST-RI : 1/2 < P . Result from sat solver is: sat ========================================== check in TEST-RI : 1/2 < P and P < 3/4 . Result from sat solver is: sat ========================================== check in TEST-RI : 1/2 < P and P < 3/4 and isInteger(P) . Result from sat solver is: unsat ========================================== check in TEST-RI : -2 < I . Result from sat solver is: sat ========================================== check in TEST-RI : -2 < I and -2 * I > -1 . Result from sat solver is: sat ========================================== check in TEST-RI : -2 < I and -2 * I > -1 and I =/== -1 . Result from sat solver is: sat ========================================== check in TEST-RI : -2 < I and -2 * I > -1 and I =/== -1 and I - I =/== I . Result from sat solver is: unsat ========================================== reduce in META-LEVEL : metaCheck(['REAL-INTEGER], '_=_['_+_['1.Integer, '1.Integer], '2.Integer]) . rewrites: 1 result [Bool]: metaCheck(sth 'REAL-INTEGER is including 'REAL-INTEGER . sorts none . none none none none none none none endsth, '_=_['_+_['1.Integer, '1.Integer], '2.Integer]) ========================================== reduce in META-LEVEL : metaCheck(['REAL-INTEGER], '_=_['_+_['1.Integer, '1.Integer], '3.Integer]) . rewrites: 1 result [Bool]: metaCheck(sth 'REAL-INTEGER is including 'REAL-INTEGER . sorts none . none none none none none none none endsth, '_=_['_+_['1.Integer, '1.Integer], '3.Integer]) ========================================== reduce in META-CHECK : metaCheck(['META-CHECK], upTerm((I > J ? I : J) < I)) . rewrites: 3 result Bool: (false).Bool ========================================== reduce in META-CHECK : metaCheck(['META-CHECK], upTerm((I > J ? I : J) > I)) . rewrites: 3 result Bool: (true).Bool ========================================== reduce in META-CHECK : metaCheck(['META-CHECK], upTerm((I > J ? I : J) === I or (I > J ? I : J) === J)) . rewrites: 3 result Bool: (true).Bool ========================================== reduce in META-CHECK : metaCheck(['META-CHECK], upTerm(not ((I > J ? I : J) === I or (I > J ? I : J) === J))) . rewrites: 3 result Bool: (false).Bool ========================================== reduce in META-CHECK : metaCheck(['META-CHECK], upTerm((I > J ? I : J) =/== I and (I > J ? I : J) =/== J)) . rewrites: 3 result Bool: (false).Bool ========================================== reduce in META-CHECK : metaCheck(['META-CHECK], upTerm((I > J ? I : J) =/== I or (I > J ? I : J) =/== J)) . rewrites: 3 result Bool: (true).Bool ========================================== smt-search [10] in MULTI : f(-2, X) =>* Z:State . Solution 1 rewrites: 0 state: f(-2, X) Z:State --> f(-2, X) where true Solution 2 rewrites: 1 state: g(-2 + 1, #1-Y:Foo) Z:State --> g(-2 + 1, #1-Y:Foo) where -2 < 0 No more solutions. rewrites: 1 ========================================== reduce in TEST : metaSmtSearch(['MULTI], upTerm(f(-2, X)), 'Z:State, nil, '*, 1, 1, 0) . rewrites: 4 result SmtResult: {'f['-2.Integer, 'X:Foo], 'Z:State <- 'f['-2.Integer, 'X:Foo], 'true.Boolean, (1).NzNat} ========================================== reduce in TEST : metaSmtSearch(['MULTI], upTerm(f(-2, X)), 'Z:State, nil, '*, 1, 1, 1) . rewrites: 4 result SmtResult: {'g['_+_['-2.Integer, '1.Integer], '#2-Y:Foo], 'Z:State <- 'g['_+_['-2.Integer, '1.Integer], '#2-Y:Foo], '_<_['-2.Integer, '0.Integer], (2).NzNat} ========================================== reduce in TEST : metaSmtSearch(['MULTI], upTerm(f(-2, X)), 'Z:State, nil, '*, 1, 1, 2) . rewrites: 3 result SmtResult?: (failure).SmtResult? ========================================== reduce in TEST : metaSmtSearch(['MULTI], upTerm(f(-2, X)), 'Z:State, nil, '+, 200, 1, 0) . rewrites: 4 result SmtResult: {'g['_+_['-2.Integer, '1.Integer], '#201-Y:Foo], 'Z:State <- 'g['_+_['-2.Integer, '1.Integer], '#201-Y:Foo], '_<_['-2.Integer, '0.Integer], (201).NzNat} ========================================== reduce in TEST : metaSmtSearch(['MULTI], upTerm(f(-2, X)), 'Z:State, nil, '+, 200, 1, 1) . rewrites: 3 result SmtResult?: (failure).SmtResult? ========================================== smt-search [4] in ITEST : f(11) =>1 X . Solution 1 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 Solution 2 rewrites: 2 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 No more solutions. rewrites: 2 ========================================== smt-search [4] in ITEST : f(11) =>* X . Solution 1 rewrites: 0 state: f(11) X --> f(11) where true Solution 2 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 Solution 3 rewrites: 2 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 Solution 4 rewrites: 3 state: f(11 + 1 + 1) X --> f(11 + 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) ========================================== smt-search [4] in ITEST : f(11) =>+ X . Solution 1 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 Solution 2 rewrites: 2 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 Solution 3 rewrites: 3 state: f(11 + 1 + 1) X --> f(11 + 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) Solution 4 rewrites: 4 state: f(11 + 1 - 1) X --> f(11 + 1 - 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) ========================================== smt-search [4, 1] in ITEST : f(11) =>+ X . Solution 1 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 Solution 2 rewrites: 2 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 No more solutions. rewrites: 2 ========================================== smt-search [4, 2] in ITEST : f(11) =>+ X . Solution 1 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 Solution 2 rewrites: 2 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 Solution 3 rewrites: 3 state: f(11 + 1 + 1) X --> f(11 + 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) Solution 4 rewrites: 4 state: f(11 + 1 - 1) X --> f(11 + 1 - 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) Warning: , line 208: didn't expect token [: [ <---*HERE* Warning: , line 208: no parse for command. ========================================== smt-search [4, 1] in ITEST : f(11) =>* X . Solution 1 rewrites: 0 state: f(11) X --> f(11) where true Solution 2 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 Solution 3 rewrites: 2 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 No more solutions. rewrites: 2 ========================================== smt-search [4, 2] in ITEST : f(11) =>* X . Solution 1 rewrites: 0 state: f(11) X --> f(11) where true Solution 2 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 Solution 3 rewrites: 2 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 Solution 4 rewrites: 3 state: f(11 + 1 + 1) X --> f(11 + 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) ========================================== smt-search [20] in ITEST : f(11) =>* X . Solution 1 rewrites: 0 state: f(11) X --> f(11) where true Solution 2 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 Solution 3 rewrites: 2 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 Solution 4 rewrites: 3 state: f(11 + 1 + 1) X --> f(11 + 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) Solution 5 rewrites: 4 state: f(11 + 1 - 1) X --> f(11 + 1 - 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) Solution 6 rewrites: 5 state: f(11 - 1 + 1) X --> f(11 - 1 + 1) where 11 >= 10 and 11 <= 12 and (11 - 1 >= 10 and 11 - 1 <= 12) Solution 7 rewrites: 6 state: f(11 - 1 - 1) X --> f(11 - 1 - 1) where 11 >= 10 and 11 <= 12 and (11 - 1 >= 10 and 11 - 1 <= 12) Solution 8 rewrites: 7 state: f(11 + 1 - 1 + 1) X --> f(11 + 1 - 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) and (11 + 1 - 1 >= 10 and 11 + 1 - 1 <= 12) Solution 9 rewrites: 8 state: f(11 + 1 - 1 - 1) X --> f(11 + 1 - 1 - 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) and (11 + 1 - 1 >= 10 and 11 + 1 - 1 <= 12) Solution 10 rewrites: 9 state: f(11 - 1 + 1 + 1) X --> f(11 - 1 + 1 + 1) where 11 >= 10 and 11 <= 12 and (11 - 1 >= 10 and 11 - 1 <= 12) and (11 - 1 + 1 >= 10 and 11 - 1 + 1 <= 12) Solution 11 rewrites: 10 state: f(11 - 1 + 1 - 1) X --> f(11 - 1 + 1 - 1) where 11 >= 10 and 11 <= 12 and (11 - 1 >= 10 and 11 - 1 <= 12) and (11 - 1 + 1 >= 10 and 11 - 1 + 1 <= 12) Solution 12 rewrites: 11 state: f(11 + 1 - 1 + 1 + 1) X --> f(11 + 1 - 1 + 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) and (11 + 1 - 1 >= 10 and 11 + 1 - 1 <= 12) and (11 + 1 - 1 + 1 >= 10 and 11 + 1 - 1 + 1 <= 12) Solution 13 rewrites: 12 state: f(11 + 1 - 1 + 1 - 1) X --> f(11 + 1 - 1 + 1 - 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) and (11 + 1 - 1 >= 10 and 11 + 1 - 1 <= 12) and (11 + 1 - 1 + 1 >= 10 and 11 + 1 - 1 + 1 <= 12) Solution 14 rewrites: 13 state: f(11 + 1 - 1 - 1 + 1) X --> f(11 + 1 - 1 - 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) and (11 + 1 - 1 >= 10 and 11 + 1 - 1 <= 12) and (11 + 1 - 1 - 1 >= 10 and 11 + 1 - 1 - 1 <= 12) Solution 15 rewrites: 14 state: f(11 + 1 - 1 - 1 - 1) X --> f(11 + 1 - 1 - 1 - 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) and (11 + 1 - 1 >= 10 and 11 + 1 - 1 <= 12) and (11 + 1 - 1 - 1 >= 10 and 11 + 1 - 1 - 1 <= 12) Solution 16 rewrites: 15 state: f(11 - 1 + 1 + 1 + 1) X --> f(11 - 1 + 1 + 1 + 1) where 11 >= 10 and 11 <= 12 and (11 - 1 >= 10 and 11 - 1 <= 12) and (11 - 1 + 1 >= 10 and 11 - 1 + 1 <= 12) and (11 - 1 + 1 + 1 >= 10 and 11 - 1 + 1 + 1 <= 12) Solution 17 rewrites: 16 state: f(11 - 1 + 1 + 1 - 1) X --> f(11 - 1 + 1 + 1 - 1) where 11 >= 10 and 11 <= 12 and (11 - 1 >= 10 and 11 - 1 <= 12) and (11 - 1 + 1 >= 10 and 11 - 1 + 1 <= 12) and (11 - 1 + 1 + 1 >= 10 and 11 - 1 + 1 + 1 <= 12) Solution 18 rewrites: 17 state: f(11 - 1 + 1 - 1 + 1) X --> f(11 - 1 + 1 - 1 + 1) where 11 >= 10 and 11 <= 12 and (11 - 1 >= 10 and 11 - 1 <= 12) and (11 - 1 + 1 >= 10 and 11 - 1 + 1 <= 12) and (11 - 1 + 1 - 1 >= 10 and 11 - 1 + 1 - 1 <= 12) Solution 19 rewrites: 18 state: f(11 - 1 + 1 - 1 - 1) X --> f(11 - 1 + 1 - 1 - 1) where 11 >= 10 and 11 <= 12 and (11 - 1 >= 10 and 11 - 1 <= 12) and (11 - 1 + 1 >= 10 and 11 - 1 + 1 <= 12) and (11 - 1 + 1 - 1 >= 10 and 11 - 1 + 1 - 1 <= 12) Solution 20 rewrites: 19 state: f(11 + 1 - 1 + 1 - 1 + 1) X --> f(11 + 1 - 1 + 1 - 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) and (11 + 1 - 1 >= 10 and 11 + 1 - 1 <= 12) and (11 + 1 - 1 + 1 >= 10 and 11 + 1 - 1 + 1 <= 12) and (11 + 1 - 1 + 1 - 1 >= 10 and 11 + 1 - 1 + 1 - 1 <= 12) ========================================== smt-search [4] in ITEST : f(J) =>* X . Solution 1 rewrites: 0 state: f(J) X --> f(J) where true Solution 2 rewrites: 1 state: f(J + 1) X --> f(J + 1) where J >= 10 and J <= 12 Solution 3 rewrites: 2 state: f(J - 1) X --> f(J - 1) where J >= 10 and J <= 12 Solution 4 rewrites: 3 state: f(J + 1 + 1) X --> f(J + 1 + 1) where J >= 10 and J <= 12 and (J + 1 >= 10 and J + 1 <= 12) ========================================== smt-search [4] in ITEST : f(J) =>* f(J) . Solution 1 rewrites: 0 state: f(J) empty substitution where true and J === J Solution 2 rewrites: 4 state: f(J + 1 - 1) empty substitution where J >= 10 and J <= 12 and (J + 1 >= 10 and J + 1 <= 12) and J === J + 1 - 1 Solution 3 rewrites: 5 state: f(J - 1 + 1) empty substitution where J >= 10 and J <= 12 and (J - 1 >= 10 and J - 1 <= 12) and J === J - 1 + 1 Solution 4 rewrites: 16 state: f(J + 1 + 1 - 1 - 1) empty substitution where J >= 10 and J <= 12 and (J + 1 >= 10 and J + 1 <= 12) and (J + 1 + 1 >= 10 and J + 1 + 1 <= 12) and (J + 1 + 1 - 1 >= 10 and J + 1 + 1 - 1 <= 12) and J === J + 1 + 1 - 1 - 1 ========================================== smt-search [4] in ITEST : f(J) =>* f(K) such that J = K . Solution 1 rewrites: 0 state: f(J) empty substitution where J === K and K === J Solution 2 rewrites: 4 state: f(J + 1 - 1) empty substitution where J === K and (J >= 10 and J <= 12) and (J + 1 >= 10 and J + 1 <= 12) and K === J + 1 - 1 Solution 3 rewrites: 5 state: f(J - 1 + 1) empty substitution where J === K and (J >= 10 and J <= 12) and (J - 1 >= 10 and J - 1 <= 12) and K === J - 1 + 1 Solution 4 rewrites: 16 state: f(J + 1 + 1 - 1 - 1) empty substitution where J === K and (J >= 10 and J <= 12) and (J + 1 >= 10 and J + 1 <= 12) and ( J + 1 + 1 >= 10 and J + 1 + 1 <= 12) and (J + 1 + 1 - 1 >= 10 and J + 1 + 1 - 1 <= 12) and K === J + 1 + 1 - 1 - 1 ========================================== smt-search [1] in ITEST : f(11) =>1 X . Solution 1 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 Solution 2 rewrites: 1 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 No more solutions. rewrites: 1 ========================================== smt-search [1] in ITEST : f(11) =>* X . Solution 1 rewrites: 0 state: f(11) X --> f(11) where true Solution 2 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 Solution 3 rewrites: 2 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 Solution 4 rewrites: 1 state: f(11 + 1 + 1) X --> f(11 + 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) Solution 5 rewrites: 1 state: f(11 + 1 - 1) X --> f(11 + 1 - 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) ========================================== debug smt-search [4] in ITEST : f(11) =>+ X . *********** rule crl f(I) => f(I + 1) if I >= 10 = true /\ I <= 12 = true . I --> 11 f(11) ---> f(11 + 1) Solution 1 rewrites: 1 state: f(11 + 1) X --> f(11 + 1) where 11 >= 10 and 11 <= 12 *********** rule crl f(I) => f(I - 1) if I >= 10 = true /\ I <= 12 = true . I --> 11 f(11) ---> f(11 - 1) Solution 2 rewrites: 2 state: f(11 - 1) X --> f(11 - 1) where 11 >= 10 and 11 <= 12 *********** rule crl f(I) => f(I + 1) if I >= 10 = true /\ I <= 12 = true . I --> 11 + 1 f(11 + 1) ---> f(11 + 1 + 1) Solution 3 rewrites: 3 state: f(11 + 1 + 1) X --> f(11 + 1 + 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) Solution 4 rewrites: 4 state: f(11 + 1 - 1) X --> f(11 + 1 - 1) where 11 >= 10 and 11 <= 12 and (11 + 1 >= 10 and 11 + 1 <= 12) ========================================== smt-search [4] in ITEST : f(J) =>* f(K) such that J = K . Solution 1 rewrites: 0 state: f(J) empty substitution where J === K and K === J Solution 2 rewrites: 4 state: f(J + 1 - 1) empty substitution where J === K and (J >= 10 and J <= 12) and (J + 1 >= 10 and J + 1 <= 12) and K === J + 1 - 1 Solution 3 rewrites: 5 state: f(J - 1 + 1) empty substitution where J === K and (J >= 10 and J <= 12) and (J - 1 >= 10 and J - 1 <= 12) and K === J - 1 + 1 Solution 4 rewrites: 16 state: f(J + 1 + 1 - 1 - 1) empty substitution where J === K and (J >= 10 and J <= 12) and (J + 1 >= 10 and J + 1 <= 12) and ( J + 1 + 1 >= 10 and J + 1 + 1 <= 12) and (J + 1 + 1 - 1 >= 10 and J + 1 + 1 - 1 <= 12) and K === J + 1 + 1 - 1 - 1 *********** rule crl f(I) => f(I + 1) if I >= 10 = true /\ I <= 12 = true . I --> J + 1 - 1 + 1 f(J + 1 - 1 + 1) ---> f(J + 1 - 1 + 1 + 1) Solution 5 rewrites: 2 state: f(J + 1 - 1 + 1 - 1) empty substitution where J === K and (J >= 10 and J <= 12) and (J + 1 >= 10 and J + 1 <= 12) and ( J + 1 - 1 >= 10 and J + 1 - 1 <= 12) and (J + 1 - 1 + 1 >= 10 and J + 1 - 1 + 1 <= 12) and K === J + 1 - 1 + 1 - 1 ========================================== reduce in TEST2 : metaSmtSearch(['ITEST], upTerm(f(J)), upTerm(f(K)), 'J:Integer = 'K:Integer, '*, 42, 2, 0) . rewrites: 5 result SmtResult: {'f['J:Integer], (none).Substitution, '_and_['_===_[ 'J:Integer, 'K:Integer], '_===_['K:Integer, 'J:Integer]], (42).NzNat} ========================================== reduce in TEST2 : metaSmtSearch(['ITEST], upTerm(f(J)), upTerm(f(K)), 'J:Integer = 'K:Integer, '*, 42, 2, 1) . rewrites: 5 result SmtResult: {'f['_-_['_+_['J:Integer, '1.Integer], '1.Integer]], ( none).Substitution, '_and_['_and_['_and_['_===_['J:Integer, 'K:Integer], '_and_['_>=_['J:Integer, '10.Integer], '_<=_['J:Integer, '12.Integer]]], '_and_['_>=_['_+_['J:Integer, '1.Integer], '10.Integer], '_<=_['_+_[ 'J:Integer, '1.Integer], '12.Integer]]], '_===_['K:Integer, '_-_['_+_[ 'J:Integer, '1.Integer], '1.Integer]]], (42).NzNat} ========================================== reduce in TEST2 : metaSmtSearch(['ITEST], upTerm(f(J)), upTerm(f(K)), 'J:Integer = 'K:Integer, '*, 42, 2, 2) . rewrites: 5 result SmtResult: {'f['_+_['_-_['J:Integer, '1.Integer], '1.Integer]], ( none).Substitution, '_and_['_and_['_and_['_===_['J:Integer, 'K:Integer], '_and_['_>=_['J:Integer, '10.Integer], '_<=_['J:Integer, '12.Integer]]], '_and_['_>=_['_-_['J:Integer, '1.Integer], '10.Integer], '_<=_['_-_[ 'J:Integer, '1.Integer], '12.Integer]]], '_===_['K:Integer, '_+_['_-_[ 'J:Integer, '1.Integer], '1.Integer]]], (42).NzNat} ========================================== reduce in TEST2 : metaSmtSearch(['ITEST], upTerm(f(J)), upTerm(f(K)), 'J:Integer = 'K:Integer, '*, 42, 2, 3) . rewrites: 4 result SmtResult?: (failure).SmtResult? ========================================== reduce in TEST2 : metaSmtSearch(['ITEST], upTerm(f(J)), upTerm(f(K)), 'J:Integer = 'K:Integer, '*, 42, unbounded, 3) . rewrites: 8 result SmtResult: {'f['_-_['_-_['_+_['_+_['J:Integer, '1.Integer], '1.Integer], '1.Integer], '1.Integer]], (none).Substitution, '_and_['_and_['_and_[ '_and_['_and_['_===_['J:Integer, 'K:Integer], '_and_['_>=_['J:Integer, '10.Integer], '_<=_['J:Integer, '12.Integer]]], '_and_['_>=_['_+_[ 'J:Integer, '1.Integer], '10.Integer], '_<=_['_+_['J:Integer, '1.Integer], '12.Integer]]], '_and_['_>=_['_+_['_+_['J:Integer, '1.Integer], '1.Integer], '10.Integer], '_<=_['_+_['_+_['J:Integer, '1.Integer], '1.Integer], '12.Integer]]], '_and_['_>=_['_-_['_+_['_+_['J:Integer, '1.Integer], '1.Integer], '1.Integer], '10.Integer], '_<=_['_-_['_+_['_+_[ 'J:Integer, '1.Integer], '1.Integer], '1.Integer], '12.Integer]]], '_===_[ 'K:Integer, '_-_['_-_['_+_['_+_['J:Integer, '1.Integer], '1.Integer], '1.Integer], '1.Integer]]], (42).NzNat} Warning: , line 282 (mod COLLAPSE-AXIOM): operator bad has a collapse axiom. Warning: , line 280 (mod COLLAPSE-AXIOM): module COLLAPSE-AXIOM does not satisfy restrictions for rewriting modulo SMT. Warning: , line 297 (mod COLLAPSE-AXIOM2): idem operator bad must either have all sorts polymorphic or none. ========================================== smt-search in COLLAPSE-AXIOM2 : f(h(X), h(Y)) =>+ g(C) . Solution 1 rewrites: 1 state: g(h(X)) C --> h(X) where X === Y No more solutions. rewrites: 1 Warning: , line 319 (mod SMT-OP-IN-LHS): left-hand side of rule crl f(h(X), h(Y + 1)) => g(h(X)) if X = Y . contains SMT symbol _+_. Warning: , line 310 (mod SMT-OP-IN-LHS): module SMT-OP-IN-LHS does not satisfy restrictions for rewriting modulo SMT. Warning: , line 333 (mod NONLINEAR-VAR-IN-LHS): left-hand side of rule crl f(h(X), h(X)) => g(h(X)) if X = 1 . contains a nonlinear variable X. Warning: , line 324 (mod NONLINEAR-VAR-IN-LHS): module NONLINEAR-VAR-IN-LHS does not satisfy restrictions for rewriting modulo SMT. Warning: , line 338 (mod EQ-AND-MB-NO_RULES): module EQ-AND-MB-NO_RULES has equations. Warning: , line 338 (mod EQ-AND-MB-NO_RULES): module EQ-AND-MB-NO_RULES has membership axioms. Warning: , line 338 (mod EQ-AND-MB-NO_RULES): module EQ-AND-MB-NO_RULES has no rules. Warning: , line 338 (mod EQ-AND-MB-NO_RULES): module EQ-AND-MB-NO_RULES does not satisfy restrictions for rewriting modulo SMT. Warning: , line 368: pattern contains a nonlinear variable C. Warning: , line 371: pattern contains SMT symbol _+_. Bye. Maude-Maude3.5.1/tests/Misc/smtTest0000775000175000017510000000100415036121435016501 0ustar nileshnilesh#!/bin/sh if grep "#define USE_CVC4" ../../config.h ; # are we using CVC4? then echo "testing CVC4" else if grep "#define USE_YICES2" ../../config.h ; # are we using YICES2? then echo "testing Yices2" else echo "no SMT support compiled in" exit 77 # grep returned nonzero exit so skip this test fi fi MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/smtTest.maude -no-banner -no-advise \ > smtTest.out 2>&1 diff $srcdir/smtTest.expected smtTest.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/rot13.maude0000664000175000017510000000256415036121435017111 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check that characters read from stdin are correctly apportioned between *** the lexer and STD-STREAM. *** load file . mod ROT13 is inc STD-STREAM . pr INT . op myClass : -> Cid . ops myObj : -> Oid . op run : -> Configuration . op rot13 : String -> String . vars O O2 : Oid . var A : AttributeSet . vars S T : String . var C : Char . eq rot13(C) = if C >= "A" and C <= "Z" then char(ascii("A") + ((13 + (ascii(C) - ascii("A"))) rem 26)) else if C >= "a" and C <= "z" then char(ascii("a") + ((13 + (ascii(C) - ascii("a"))) rem 26)) else C fi fi . eq rot13(S) = rot13(substr(S, 0, 1)) + rot13(substr(S, 1, length(S))) [owise] . eq run = <> < myObj : myClass | none > write(stdout, myObj, "\nROT13 Encryption\n----------------\n") . rl < O : myClass | A > wrote(O, O2) => < O : myClass | A > getLine(stdin, O, "Enter plain text> ") . rl < O : myClass | A > gotLine(O, O2, T) => < O : myClass | A > if T =/= "" then write(stdout, O, "Cypher text: " + rot13(T)) else none fi . endm erew run . The time has come the walrus said, To talk of many things. Of shoes and ships and sealing wax, Of cabbages and kings. Of why the sea is boiling hot, And whether pigs have wings. Maude-Maude3.5.1/tests/Misc/rot13.expected0000664000175000017510000000106415036121435017611 0ustar nileshnilesh========================================== erewrite in ROT13 : run . ROT13 Encryption ---------------- Enter plain text> Cypher text: Gur gvzr unf pbzr gur jnyehf fnvq, Enter plain text> Cypher text: Gb gnyx bs znal guvatf. Enter plain text> Cypher text: Bs fubrf naq fuvcf naq frnyvat jnk, Enter plain text> Cypher text: Bs pnoontrf naq xvatf. Enter plain text> Cypher text: Bs jul gur frn vf obvyvat ubg, Enter plain text> Cypher text: Naq jurgure cvtf unir jvatf. Enter plain text> rewrites: 3516 result Configuration: <> < myObj : myClass | none > Bye. Maude-Maude3.5.1/tests/Misc/rot130000775000175000017510000000032015036121435016006 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/rot13.maude -no-banner -no-advise \ > rot13.out 2>&1 diff $srcdir/rot13.expected rot13.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/renaming.maude0000664000175000017510000000276415036121435017743 0ustar nileshnileshset show timing off . fmod FOO is sorts Foo Bar . subsort Foo < Bar . endfm fmod BAR is inc FOO * (sort Foo to Baz, sort Bar to Quux) . endfm show mod . show all . fmod ONE is sorts Foo Bar . subsort Foo < Bar . endfm fmod TWO is inc ONE * (sort Foo to Baz) . sort Quux . subsort Quux < Baz . endfm fmod THREE is inc TWO * (sort Foo to Foo', sort Baz to Baz', sort Quux to Quux') . sort Jaz . subsort Jaz < Baz' . endfm show mod . show all . fmod FOO is sorts Foo Bar . subsort Foo < Bar . op a : -> Foo . endfm fmod BAR is inc FOO * (sort Foo to Baz, op a to b) . endfm show mod . show all . fmod FOO' is sorts Foo Bar Baz . subsort Foo < Bar . op a : -> Baz . op _+_ : Foo Foo -> Foo [prec 31 gather (e E) assoc comm] . op _+_ : Baz Baz -> Foo [prec 31 gather (e E)] . endfm fmod BAR' is inc FOO' * ( sort Foo to Quux, op _+_ : Foo Foo -> Foo to _*_ [prec 29 gather (E e)], op _+_ : Baz Baz -> Foo to _._ [prec 27 gather (E e)] ) . endfm show mod . show all . red a . a * a . a . fmod BAR'' is inc FOO' * ( sort Foo to Quux, op _+_ to _*_ [prec 29 gather (E E)] ) . endfm show mod . show all . red a * a * a * a . red (a * a) * (a * a) . *** Check splitting renaming over bashed together ops fmod DIFF is sorts Foo Bar . op f : Foo -> Foo . op f : Bar -> Bar . endfm fmod BASH is inc DIFF . subsort Foo < Bar . endfm fmod TEST is inc BASH * (op f : Foo -> Foo to g) . endfm show mod . show all . show modules . Maude-Maude3.5.1/tests/Misc/renaming.expected0000664000175000017510000004056415036121435020451 0ustar nileshnileshfmod BAR is including FOO * (sort Foo to Baz, sort Bar to Quux) . endfm fmod BAR is sorts Bool Baz Quux . subsort Baz < Quux . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm fmod THREE is including TWO * (sort Foo to Foo', sort Baz to Baz', sort Quux to Quux') . sort Jaz . subsort Jaz < Baz' . endfm fmod THREE is sorts Bool Baz' Bar Quux' Jaz . subsorts Quux' Jaz < Baz' . subsort Baz' < Bar . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm fmod BAR is including FOO * (sort Foo to Baz, op a to b) . endfm fmod BAR is sorts Bool Baz Bar . subsort Baz < Bar . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op b : -> Baz . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm fmod BAR' is including FOO' * (sort Foo to Quux, op _+_ : [Foo] [Foo] -> [Foo] to _*_ [ prec 29 gather (E e)], op _+_ : [Baz] [Baz] -> [Foo] to _._ [prec 27 gather (E e)]) . endfm fmod BAR' is sorts Bool Quux Bar Baz . subsort Quux < Bar . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op a : -> Baz . op _*_ : Quux Quux -> Quux [assoc comm prec 29 gather (E e)] . op _._ : Baz Baz -> Quux [prec 27 gather (E e)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm ========================================== reduce in BAR' : a . a * a . a . rewrites: 0 result Quux: a . a * a . a fmod BAR'' is including FOO' * (sort Foo to Quux, op _+_ to _*_ [prec 29 gather (E E)]) . endfm fmod BAR'' is sorts Bool Quux Bar Baz . subsort Quux < Bar . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op a : -> Baz . op _*_ : Quux Quux -> Quux [assoc comm prec 29 gather (E E)] . op _*_ : Baz Baz -> Quux [prec 29 gather (E E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm ========================================== reduce in BAR'' : a * a * a * a . rewrites: 0 result Quux: a * a * a * a ========================================== reduce in BAR'' : a * a * a * a . rewrites: 0 result Quux: a * a * a * a fmod TEST is including BASH * (op f : [Foo] -> [Foo] to g) . endfm fmod TEST is sorts Bool Foo Bar . subsort Foo < Bar . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op g : Foo -> Foo . op g : Bar -> Bar . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fmod FOO fmod BAR fmod ONE fmod TWO fmod THREE fmod FOO' fmod BAR' fmod BAR'' fmod DIFF fmod BASH fmod TEST fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) fmod ONE * (sort Foo to Baz) fmod TWO * (sort Baz to Baz', sort Quux to Quux') fmod ONE * (sort Foo to Baz) * (sort Baz to Baz') fmod FOO * (sort Foo to Baz, op a to b) fmod FOO' * (sort Foo to Quux, op _+_ : [Foo,Bar] [Foo,Bar] -> [Foo,Bar] to _*_ [prec 29 gather (E e)], op _+_ : [Baz] [Baz] -> [Foo,Bar] to _._ [prec 27 gather (E e)]) fmod FOO' * (sort Foo to Quux, op _+_ to _*_ [prec 29 gather (E E)]) fmod BASH * (op f : [Foo,Bar] -> [Foo,Bar] to g) fmod DIFF * (op f : [Foo] -> [Foo] to g, op f : [Bar] -> [Bar] to g) Bye. Maude-Maude3.5.1/tests/Misc/renaming0000775000175000017510000000033415036121435016643 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/renaming.maude -no-banner -no-advise \ > renaming.out 2>&1 diff $srcdir/renaming.expected renaming.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/pconst5.maude0000664000175000017510000000233315036121435017526 0ustar nileshnilesh*** *** Test use of pconst with op to term mappings *** *** don't pull in BOOL so we have simple modules to look at set include BOOL off . *** pconst to non-pconst in op to term mapping fth NAT* is inc NAT . op # : -> Nat [pconst] . endfth fmod USER{X :: NAT*} is op r : -> Nat . eq r = X$# . endfm view 5 from NAT* to NAT is op # to term 5 . endv fmod TEST is inc USER{5} . endfm show all . *** non-pconst to pconst op to term mapping fth ONE is sort Foo . op c : -> Foo . endfth fth TWO is sort Bar . op d : -> Bar [pconst] . endfth view V from ONE to TWO is sort Foo to Bar . op c to term d . endv fmod M{X :: ONE} is eq c = c . endfm fmod TEST{Y :: TWO} is inc M{V}{Y} . eq X:Y$Bar = Y$d . endfm show all . *** combine a regular pconst -> pconst mapping with an op to term mapping involving a pconst constant fth ONE is sort Foo . op c : -> Foo [pconst] . op f : Foo -> Foo . endfth fth TWO is sort Bar . op d : -> Bar [pconst] . op g : Bar Bar -> Bar . endfth view V from ONE to TWO is sort Foo to Bar . op c to d . var X : Foo . op f(X) to term g(d, X) . endv fmod M{X :: ONE} is eq f(X$c) = f(X$c) . endfm fmod TEST{Y :: TWO} is inc M{V}{Y} . endfm show all . Maude-Maude3.5.1/tests/Misc/pconst5.expected0000664000175000017510000001426515036121435020243 0ustar nileshnileshfmod TEST is sorts Bool Zero NzNat Nat . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op r : -> Nat . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq r = 5 . endfm fmod TEST{Y :: TWO} is sort Y$Bar . op Y$d : -> Y$Bar [pconst] . eq X:Y$Bar = Y$d . eq Y$d = Y$d . endfm fmod TEST{Y :: TWO} is sort Y$Bar . op Y$d : -> Y$Bar [pconst] . op g : Y$Bar Y$Bar -> Y$Bar . eq g(Y$d, Y$d) = g(Y$d, Y$d) . endfm Bye. Maude-Maude3.5.1/tests/Misc/pconst50000775000175000017510000000033015036121435016432 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/pconst5.maude -no-banner -no-advise \ > pconst5.out 2>&1 diff $srcdir/pconst5.expected pconst5.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/pconst4.maude0000664000175000017510000001165015036121435017527 0ustar nileshnilesh*** *** Test use of pconst with theory-view arguments to parameterized views *** *** don't pull in BOOL so we have simple modules to look at set include BOOL off . *** pconst(d) -> pconst(c) -> pconst(e) fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fth T3 is sort Baz . op e : -> Baz [pconst] . endfth fmod M{X :: T} is sort Quux{X} . op f : X$Foo -> Quux{X} . eq f(X$c) = f(X$c) . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to Y$c . endv fmod M2{Z :: T2} is sort Fizz{Z} . op g : Z$Bar -> Fizz{Z} . eq g(Z$d) = g(Z$d) . endfm view TV from T to T3 is sort Foo to Baz . op c to e . endv fmod TEST{W :: T3} is inc M2{V{TV}{W}} . endfm show all . *** pconst(d) -> pconst(c) -> non-pconst(e) fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fth T3 is sort Baz . op e : -> Baz . endfth fmod M{X :: T} is sort Quux{X} . op f : X$Foo -> Quux{X} . eq f(X$c) = f(X$c) . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to Y$c . endv fmod M2{Z :: T2} is sort Fizz{Z} . op g : Z$Bar -> Fizz{Z} . eq g(Z$d) = g(Z$d) . endfm view TV from T to T3 is sort Foo to Baz . op c to e . endv fmod TEST{W :: T3} is inc M2{V{TV}{W}} . endfm show all . *** pconst(d) -> non-pconst(c) -> pconst(e) fth T is sort Foo . op c : -> Foo . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fth T3 is sort Baz . op e : -> Baz [pconst] . endfth fmod M{X :: T} is sort Quux{X} . op f : X$Foo -> Quux{X} . eq f(c) = f(c) . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to c . endv fmod M2{Z :: T2} is sort Fizz{Z} . op g : Z$Bar -> Fizz{Z} . eq g(Z$d) = g(Z$d) . endfm view TV from T to T3 is sort Foo to Baz . op c to e . endv fmod TEST{W :: T3} is inc M2{V{TV}{W}} . endfm show all . *** pconst(d) -> non-pconst(c) -> non-pconst(e) fth T is sort Foo . op c : -> Foo . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fth T3 is sort Baz . op e : -> Baz . endfth fmod M{X :: T} is sort Quux{X} . op f : X$Foo -> Quux{X} . eq f(c) = f(c) . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to c . endv fmod M2{Z :: T2} is sort Fizz{Z} . op g : Z$Bar -> Fizz{Z} . eq g(Z$d) = g(Z$d) . endfm view TV from T to T3 is sort Foo to Baz . op c to e . endv fmod TEST{W :: T3} is inc M2{V{TV}{W}} . endfm show all . --------------------------------------------------------------------------------------------------------------- *** non-pconst(d) -> pconst(c) -> pconst(e) fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar . endfth fth T3 is sort Baz . op e : -> Baz [pconst] . endfth fmod M{X :: T} is sort Quux{X} . op f : X$Foo -> Quux{X} . eq f(X$c) = f(X$c) . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to Y$c . endv fmod M2{Z :: T2} is sort Fizz{Z} . op g : Z$Bar -> Fizz{Z} . eq g(d) = g(d) . endfm view TV from T to T3 is sort Foo to Baz . op c to e . endv fmod TEST{W :: T3} is inc M2{V{TV}{W}} . endfm show all . *** non-pconst(d) -> pconst(c) -> non-pconst(e) fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar . endfth fth T3 is sort Baz . op e : -> Baz . endfth fmod M{X :: T} is sort Quux{X} . op f : X$Foo -> Quux{X} . eq f(X$c) = f(X$c) . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to Y$c . endv fmod M2{Z :: T2} is sort Fizz{Z} . op g : Z$Bar -> Fizz{Z} . eq g(d) = g(d) . endfm view TV from T to T3 is sort Foo to Baz . op c to e . endv fmod TEST{W :: T3} is inc M2{V{TV}{W}} . endfm show all . *** non-pconst(d) -> non-pconst(c) -> pconst(e) fth T is sort Foo . op c : -> Foo . endfth fth T2 is sort Bar . op d : -> Bar . endfth fth T3 is sort Baz . op e : -> Baz [pconst] . endfth fmod M{X :: T} is sort Quux{X} . op f : X$Foo -> Quux{X} . eq f(c) = f(c) . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to c . endv fmod M2{Z :: T2} is sort Fizz{Z} . op g : Z$Bar -> Fizz{Z} . eq g(d) = g(d) . endfm view TV from T to T3 is sort Foo to Baz . op c to e . endv fmod TEST{W :: T3} is inc M2{V{TV}{W}} . endfm show all . *** non-pconst(d) -> non-pconst(c) -> non-pconst(e) fth T is sort Foo . op c : -> Foo . endfth fth T2 is sort Bar . op d : -> Bar . endfth fth T3 is sort Baz . op e : -> Baz . endfth fmod M{X :: T} is sort Quux{X} . op f : X$Foo -> Quux{X} . eq f(c) = f(c) . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to c . endv fmod M2{Z :: T2} is sort Fizz{Z} . op g : Z$Bar -> Fizz{Z} . eq g(d) = g(d) . endfm view TV from T to T3 is sort Foo to Baz . op c to e . endv fmod TEST{W :: T3} is inc M2{V{TV}{W}} . endfm show all . Maude-Maude3.5.1/tests/Misc/pconst4.expected0000664000175000017510000000316115036121435020233 0ustar nileshnileshfmod TEST{W :: T3} is sorts W$Baz Quux{TV}{W} Fizz{V{TV}{W}} . op W$e : -> W$Baz [pconst] . op f : W$Baz -> Quux{TV}{W} . op g : W$Baz -> Fizz{V{TV}{W}} . eq f(W$e) = f(W$e) . eq g(W$e) = g(W$e) . endfm fmod TEST{W :: T3} is sorts W$Baz Quux{TV}{W} Fizz{V{TV}{W}} . op e : -> W$Baz . op f : W$Baz -> Quux{TV}{W} . op g : W$Baz -> Fizz{V{TV}{W}} . eq f(e) = f(e) . eq g(e) = g(e) . endfm fmod TEST{W :: T3} is sorts W$Baz Quux{TV}{W} Fizz{V{TV}{W}} . op W$e : -> W$Baz [pconst] . op f : W$Baz -> Quux{TV}{W} . op g : W$Baz -> Fizz{V{TV}{W}} . eq f(W$e) = f(W$e) . eq g(W$e) = g(W$e) . endfm fmod TEST{W :: T3} is sorts W$Baz Quux{TV}{W} Fizz{V{TV}{W}} . op e : -> W$Baz . op f : W$Baz -> Quux{TV}{W} . op g : W$Baz -> Fizz{V{TV}{W}} . eq f(e) = f(e) . eq g(e) = g(e) . endfm fmod TEST{W :: T3} is sorts W$Baz Quux{TV}{W} Fizz{V{TV}{W}} . op W$e : -> W$Baz [pconst] . op f : W$Baz -> Quux{TV}{W} . op g : W$Baz -> Fizz{V{TV}{W}} . eq f(W$e) = f(W$e) . eq g(W$e) = g(W$e) . endfm fmod TEST{W :: T3} is sorts W$Baz Quux{TV}{W} Fizz{V{TV}{W}} . op e : -> W$Baz . op f : W$Baz -> Quux{TV}{W} . op g : W$Baz -> Fizz{V{TV}{W}} . eq f(e) = f(e) . eq g(e) = g(e) . endfm fmod TEST{W :: T3} is sorts W$Baz Quux{TV}{W} Fizz{V{TV}{W}} . op W$e : -> W$Baz [pconst] . op f : W$Baz -> Quux{TV}{W} . op g : W$Baz -> Fizz{V{TV}{W}} . eq f(W$e) = f(W$e) . eq g(W$e) = g(W$e) . endfm fmod TEST{W :: T3} is sorts W$Baz Quux{TV}{W} Fizz{V{TV}{W}} . op e : -> W$Baz . op f : W$Baz -> Quux{TV}{W} . op g : W$Baz -> Fizz{V{TV}{W}} . eq f(e) = f(e) . eq g(e) = g(e) . endfm Bye. Maude-Maude3.5.1/tests/Misc/pconst40000775000175000017510000000033015036121435016431 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/pconst4.maude -no-banner -no-advise \ > pconst4.out 2>&1 diff $srcdir/pconst4.expected pconst4.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/pconst3.maude0000664000175000017510000001431115036121435017523 0ustar nileshnilesh*** *** Test use of pconst with parameterized module views. *** *** don't pull in BOOL so we have simple modules to look at set include BOOL off . *** view maps to stuff in target module fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(X$c) = X$c . endfm view V{X :: T} from T2 to M{X} is sort Bar to Baz{X} . op d to e . endv fmod M2{X :: T2} is op h : X$Bar -> X$Bar . eq h(X$d) = h(X$d) . endfm fmod TEST{X :: T} is inc M2{V{X}} . endfm show all . *** view maps to stuff in target modules parameter theory fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(X$c) = X$c . endfm view V{X :: T} from T2 to M{X} is sort Bar to X$Foo . op d to X$c . endv fmod M2{X :: T2} is op h : X$Bar -> X$Bar . eq h(X$d) = h(X$d) . endfm fmod TEST{X :: T} is inc M2{V{X}} . endfm show all . ------------------------------------------------------ *** view maps to stuff in target module, only c pconst fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(X$c) = X$c . endfm view V{X :: T} from T2 to M{X} is sort Bar to Baz{X} . op d to e . endv fmod M2{X :: T2} is op h : X$Bar -> X$Bar . eq h(d) = h(d) . endfm fmod TEST{X :: T} is inc M2{V{X}} . endfm show all . *** view maps to stuff in target modules parameter theory, only c pconst fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(X$c) = X$c . endfm view V{X :: T} from T2 to M{X} is sort Bar to X$Foo . op d to X$c . endv fmod M2{X :: T2} is op h : X$Bar -> X$Bar . eq h(d) = h(d) . endfm fmod TEST{X :: T} is inc M2{V{X}} . endfm show all . ------------------------------------------------------ *** view maps to stuff in target module, only d pconst fth T is sort Foo . op c : -> Foo . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(c) = c . endfm view V{X :: T} from T2 to M{X} is sort Bar to Baz{X} . op d to e . endv fmod M2{X :: T2} is op h : X$Bar -> X$Bar . eq h(X$d) = h(X$d) . endfm fmod TEST{X :: T} is inc M2{V{X}} . endfm show all . *** view maps to stuff in target modules parameter theory, only d pconst fth T is sort Foo . op c : -> Foo . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(c) = c . endfm view V{X :: T} from T2 to M{X} is sort Bar to X$Foo . op d to c . endv fmod M2{X :: T2} is op h : X$Bar -> X$Bar . eq h(X$d) = h(X$d) . endfm fmod TEST{X :: T} is inc M2{V{X}} . endfm show all . ------------------------------------------------------------------------------------------------------------ *** Now repeat changing parameters *** view maps to stuff in target module fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(X$c) = X$c . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Baz{Y} . op d to e . endv fmod M2{Z :: T2} is op h : Z$Bar -> Z$Bar . eq h(Z$d) = h(Z$d) . endfm fmod TEST{W :: T} is inc M2{V{W}} . endfm show all . *** view maps to stuff in target modules parameter theory fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(X$c) = X$c . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to Y$c . endv fmod M2{Z :: T2} is op h : Z$Bar -> Z$Bar . eq h(Z$d) = h(Z$d) . endfm fmod TEST{W :: T} is inc M2{V{W}} . endfm show all . ------------------------------------------------------ *** view maps to stuff in target module, only c pconst fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(X$c) = X$c . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Baz{Y} . op d to e . endv fmod M2{Z :: T2} is op h : Z$Bar -> Z$Bar . eq h(d) = h(d) . endfm fmod TEST{W :: T} is inc M2{V{W}} . endfm show all . *** view maps to stuff in target modules parameter theory, only c pconst fth T is sort Foo . op c : -> Foo [pconst] . endfth fth T2 is sort Bar . op d : -> Bar . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(X$c) = X$c . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to Y$c . endv fmod M2{Z :: T2} is op h : Z$Bar -> Z$Bar . eq h(d) = h(d) . endfm fmod TEST{W :: T} is inc M2{V{W}} . endfm show all . ------------------------------------------------------ *** view maps to stuff in target module, only d pconst fth T is sort Foo . op c : -> Foo . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(c) = c . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Baz{Y} . op d to e . endv fmod M2{Z :: T2} is op h : Z$Bar -> Z$Bar . eq h(Z$d) = h(Z$d) . endfm fmod TEST{W :: T} is inc M2{V{W}} . endfm show all . *** view maps to stuff in target modules parameter theory, only d pconst fth T is sort Foo . op c : -> Foo . endfth fth T2 is sort Bar . op d : -> Bar [pconst] . endfth fmod M{X :: T} is sort Baz{X} . op e : -> Baz{X} . op f : X$Foo -> X$Foo . eq f(c) = c . endfm view V{Y :: T} from T2 to M{Y} is sort Bar to Y$Foo . op d to c . endv fmod M2{Z :: T2} is op h : Z$Bar -> Z$Bar . eq h(Z$d) = h(Z$d) . endfm fmod TEST{W :: T} is inc M2{V{W}} . endfm show all . Maude-Maude3.5.1/tests/Misc/pconst3.expected0000664000175000017510000000436115036121435020235 0ustar nileshnileshfmod TEST{X :: T} is sorts X$Foo Baz{X} . op X$c : -> X$Foo [pconst] . op e : -> Baz{X} . op f : X$Foo -> X$Foo . op h : Baz{X} -> Baz{X} . eq f(X$c) = X$c . eq h(e) = h(e) . endfm fmod TEST{X :: T} is sorts X$Foo Baz{X} . op X$c : -> X$Foo [pconst] . op e : -> Baz{X} . op f : X$Foo -> X$Foo . op h : X$Foo -> X$Foo . eq f(X$c) = X$c . eq h(X$c) = h(X$c) . endfm fmod TEST{X :: T} is sorts X$Foo Baz{X} . op X$c : -> X$Foo [pconst] . op e : -> Baz{X} . op f : X$Foo -> X$Foo . op h : Baz{X} -> Baz{X} . eq f(X$c) = X$c . eq h(e) = h(e) . endfm fmod TEST{X :: T} is sorts X$Foo Baz{X} . op X$c : -> X$Foo [pconst] . op e : -> Baz{X} . op f : X$Foo -> X$Foo . op h : X$Foo -> X$Foo . eq f(X$c) = X$c . eq h(X$c) = h(X$c) . endfm fmod TEST{X :: T} is sorts X$Foo Baz{X} . op c : -> X$Foo . op e : -> Baz{X} . op f : X$Foo -> X$Foo . op h : Baz{X} -> Baz{X} . eq f(c) = c . eq h(e) = h(e) . endfm fmod TEST{X :: T} is sorts X$Foo Baz{X} . op c : -> X$Foo . op e : -> Baz{X} . op f : X$Foo -> X$Foo . op h : X$Foo -> X$Foo . eq f(c) = c . eq h(c) = h(c) . endfm fmod TEST{W :: T} is sorts W$Foo Baz{W} . op W$c : -> W$Foo [pconst] . op e : -> Baz{W} . op f : W$Foo -> W$Foo . op h : Baz{W} -> Baz{W} . eq f(W$c) = W$c . eq h(e) = h(e) . endfm fmod TEST{W :: T} is sorts W$Foo Baz{W} . op W$c : -> W$Foo [pconst] . op e : -> Baz{W} . op f : W$Foo -> W$Foo . op h : W$Foo -> W$Foo . eq f(W$c) = W$c . eq h(W$c) = h(W$c) . endfm fmod TEST{W :: T} is sorts W$Foo Baz{W} . op W$c : -> W$Foo [pconst] . op e : -> Baz{W} . op f : W$Foo -> W$Foo . op h : Baz{W} -> Baz{W} . eq f(W$c) = W$c . eq h(e) = h(e) . endfm fmod TEST{W :: T} is sorts W$Foo Baz{W} . op W$c : -> W$Foo [pconst] . op e : -> Baz{W} . op f : W$Foo -> W$Foo . op h : W$Foo -> W$Foo . eq f(W$c) = W$c . eq h(W$c) = h(W$c) . endfm fmod TEST{W :: T} is sorts W$Foo Baz{W} . op c : -> W$Foo . op e : -> Baz{W} . op f : W$Foo -> W$Foo . op h : Baz{W} -> Baz{W} . eq f(c) = c . eq h(e) = h(e) . endfm fmod TEST{W :: T} is sorts W$Foo Baz{W} . op c : -> W$Foo . op e : -> Baz{W} . op f : W$Foo -> W$Foo . op h : W$Foo -> W$Foo . eq f(c) = c . eq h(c) = h(c) . endfm Bye. Maude-Maude3.5.1/tests/Misc/pconst30000775000175000017510000000033015036121435016430 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/pconst3.maude -no-banner -no-advise \ > pconst3.out 2>&1 diff $srcdir/pconst3.expected pconst3.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/pconst2.maude0000664000175000017510000001020415036121435017517 0ustar nileshnilesh*** *** Test use of pconst with theory-views *** *** don't pull in BOOL so we have simple modules to look at set include BOOL off . *** pconst -> pconst fth T is sort Foo . op a : -> Foo [pconst] . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(X$a) = X$a . endfm fth T2 is sort Bar . op b : -> Bar [pconst] . endfth view TV from T to T2 is sort Foo to Bar . op a to b . endv fmod TEST{X :: T2} is inc BAR{TV}{X} . endfm show all . *** pconst -> non-pconst fth T is sort Foo . op a : -> Foo [pconst] . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(X$a) = X$a . endfm fth T2 is sort Bar . op b : -> Bar . endfth view TV from T to T2 is sort Foo to Bar . op a to b . endv fmod TEST{X :: T2} is inc BAR{TV}{X} . endfm show all . *** non-pconst -> pconst fth T is sort Foo . op a : -> Foo . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(a) = a . endfm fth T2 is sort Bar . op b : -> Bar [pconst] . endfth view TV from T to T2 is sort Foo to Bar . op a to b . endv fmod TEST{X :: T2} is inc BAR{TV}{X} . endfm show all . *** pconst -> pconst, change parameter fth T is sort Foo . op a : -> Foo [pconst] . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(X$a) = X$a . endfm fth T2 is sort Bar . op b : -> Bar [pconst] . endfth view TV from T to T2 is sort Foo to Bar . op a to b . endv fmod TEST{Y :: T2} is inc BAR{TV}{Y} . endfm show all . *** pconst -> non-pconst, change parameter fth T is sort Foo . op a : -> Foo [pconst] . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(X$a) = X$a . endfm fth T2 is sort Bar . op b : -> Bar . endfth view TV from T to T2 is sort Foo to Bar . op a to b . endv fmod TEST{Y :: T2} is inc BAR{TV}{Y} . endfm show all . *** non-pconst -> pconst, change parameter fth T is sort Foo . op a : -> Foo . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(a) = a . endfm fth T2 is sort Bar . op b : -> Bar [pconst] . endfth view TV from T to T2 is sort Foo to Bar . op a to b . endv fmod TEST{Y :: T2} is inc BAR{TV}{Y} . endfm show all . *** pconst -> pconst, implicit mapping fth T is sort Foo . op a : -> Foo [pconst] . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(X$a) = X$a . endfm fth T2 is sort Bar . op a : -> Bar [pconst] . endfth view TV from T to T2 is sort Foo to Bar . endv fmod TEST{X :: T2} is inc BAR{TV}{X} . endfm show all . *** pconst -> non-pconst, implicit mapping fth T is sort Foo . op a : -> Foo [pconst] . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(X$a) = X$a . endfm fth T2 is sort Bar . op a : -> Bar . endfth view TV from T to T2 is sort Foo to Bar . endv fmod TEST{X :: T2} is inc BAR{TV}{X} . endfm show all . *** non-pconst -> pconst, implicit mapping fth T is sort Foo . op a : -> Foo . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(a) = a . endfm fth T2 is sort Bar . op a : -> Bar [pconst] . endfth view TV from T to T2 is sort Foo to Bar . endv fmod TEST{X :: T2} is inc BAR{TV}{X} . endfm show all . *** pconst -> pconst, implicit mapping, change parameter fth T is sort Foo . op a : -> Foo [pconst] . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(X$a) = X$a . endfm fth T2 is sort Bar . op a : -> Bar [pconst] . endfth view TV from T to T2 is sort Foo to Bar . endv fmod TEST{Y :: T2} is inc BAR{TV}{Y} . endfm show all . *** pconst -> non-pconst, implicit mapping, change parameter fth T is sort Foo . op a : -> Foo [pconst] . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(X$a) = X$a . endfm fth T2 is sort Bar . op a : -> Bar . endfth view TV from T to T2 is sort Foo to Bar . endv fmod TEST{Y :: T2} is inc BAR{TV}{Y} . endfm show all . *** non-pconst -> pconst, implicit mapping, change parameter fth T is sort Foo . op a : -> Foo . endfth fmod BAR{X :: T} is op f : X$Foo -> X$Foo . eq f(a) = a . endfm fth T2 is sort Bar . op a : -> Bar [pconst] . endfth view TV from T to T2 is sort Foo to Bar . endv fmod TEST{Y :: T2} is inc BAR{TV}{Y} . endfm show all . Maude-Maude3.5.1/tests/Misc/pconst2.expected0000664000175000017510000000255115036121435020233 0ustar nileshnileshfmod TEST{X :: T2} is sort X$Bar . op X$b : -> X$Bar [pconst] . op f : X$Bar -> X$Bar . eq f(X$b) = X$b . endfm fmod TEST{X :: T2} is sort X$Bar . op b : -> X$Bar . op f : X$Bar -> X$Bar . eq f(b) = b . endfm fmod TEST{X :: T2} is sort X$Bar . op X$b : -> X$Bar [pconst] . op f : X$Bar -> X$Bar . eq f(X$b) = X$b . endfm fmod TEST{Y :: T2} is sort Y$Bar . op Y$b : -> Y$Bar [pconst] . op f : Y$Bar -> Y$Bar . eq f(Y$b) = Y$b . endfm fmod TEST{Y :: T2} is sort Y$Bar . op b : -> Y$Bar . op f : Y$Bar -> Y$Bar . eq f(b) = b . endfm fmod TEST{Y :: T2} is sort Y$Bar . op Y$b : -> Y$Bar [pconst] . op f : Y$Bar -> Y$Bar . eq f(Y$b) = Y$b . endfm fmod TEST{X :: T2} is sort X$Bar . op X$a : -> X$Bar [pconst] . op f : X$Bar -> X$Bar . eq f(X$a) = X$a . endfm fmod TEST{X :: T2} is sort X$Bar . op a : -> X$Bar . op f : X$Bar -> X$Bar . eq f(a) = a . endfm fmod TEST{X :: T2} is sort X$Bar . op X$a : -> X$Bar [pconst] . op f : X$Bar -> X$Bar . eq f(X$a) = X$a . endfm fmod TEST{Y :: T2} is sort Y$Bar . op Y$a : -> Y$Bar [pconst] . op f : Y$Bar -> Y$Bar . eq f(Y$a) = Y$a . endfm fmod TEST{Y :: T2} is sort Y$Bar . op a : -> Y$Bar . op f : Y$Bar -> Y$Bar . eq f(a) = a . endfm fmod TEST{Y :: T2} is sort Y$Bar . op Y$a : -> Y$Bar [pconst] . op f : Y$Bar -> Y$Bar . eq f(Y$a) = Y$a . endfm Bye. Maude-Maude3.5.1/tests/Misc/pconst20000775000175000017510000000033015036121435016427 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/pconst2.maude -no-banner -no-advise \ > pconst2.out 2>&1 diff $srcdir/pconst2.expected pconst2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/pconst.maude0000664000175000017510000000653715036121435017453 0ustar nileshnilesh*** *** Test basic use of pconst attribute *** *** don't pull in BOOL so we have simple modules to look at set include BOOL off . *** Make sure polymorpic operators are not pconst fth T is sort Bar . op a : -> Universal [poly (0) pconst] . endfth *** Make sure a module declared constant doesn't get mapped even if it is overloaded in a theory. fmod M is sort Foo . op a : -> Foo [pconst] . endfm fth T is inc M . sort Bar . op a : -> [Foo] [pconst] . endfth fmod BAR{X :: T} is endfm show all . *** Make sure a constant imported from a theory is mapped fth T is sort Foo . op a : -> Foo [pconst] . endfth fth T2 is inc T . sort Bar . op b : -> Bar [pconst] . endfth fmod BAR{X :: T2} is endfm show all . *** Make sure constant is mapped out of parameter theory on instantiation fth T2 is sort Bar . op b : -> Bar [pconst] . endfth fmod BAR{X :: T2} is op f : X$Bar -> X$Bar . eq f(X$b) = X$b . endfm show all . fmod BAZ is sort Quux . op bb : -> Quux . endfm view V from T2 to BAZ is sort Bar to Quux . op b to bb . endv fmod TEST is inc BAR{V} . endfm show all . *** Make sure constant is mapped out of parameter theory on instantiation with a theory import fth T is sort Foo . op a : -> Foo [pconst] . endfth fth T2 is inc T . sort Bar . op b : -> Bar [pconst] . endfth fmod BAR{X :: T2} is op f : X$Foo -> X$Bar . eq f(X$a) = X$b . endfm show all . fmod BAZ is sort Baz . sort Quux . op aa : -> Baz . op bb : -> Quux . endfm view V from T2 to BAZ is sort Foo to Baz . sort Bar to Quux . op a to aa . op b to bb . endv fmod TEST is inc BAR{V} . endfm show all . *** Make sure constant is mapped out of parameter theory on instantiation without being mentioned in view fth T is sort Foo . op a : -> Foo [pconst] . endfth fth T2 is inc T . sort Bar . op b : -> Bar [pconst] . endfth fmod BAR{X :: T2} is op f : X$Foo -> X$Bar . eq f(X$a) = X$b . endfm show all . fmod BAZ is sort Baz . sort Quux . op a : -> Baz . op b : -> Quux . endfm view V from T2 to BAZ is sort Foo to Baz . sort Bar to Quux . endv fmod TEST is inc BAR{V} . endfm show all . *** Make sure parameter name change works when sorts come from theory fth T is sort Foo . op a : -> Foo [pconst] . endfth fth T2 is inc T . sort Bar . op b : -> Bar [pconst] . endfth fmod BAR{X :: T2} is op f : X$Foo -> X$Bar . eq f(X$a) = X$b . endfm show all . fmod BAR2{Y :: T2} is inc BAR{Y} . op g : Y$Foo -> Y$Bar . eq g(Y$a) = f(Y$a) . endfm show all . fmod BAZ is sort Baz . sort Quux . op a : -> Baz . op b : -> Quux . endfm view V from T2 to BAZ is sort Foo to Baz . sort Bar to Quux . endv fmod TEST is inc BAR2{V} . endfm show all . *** Make sure parameter name change works when one sort comes from module fmod BASE is sort Foo . endfm fth T is inc BASE . op a : -> Foo [pconst] . endfth fth T2 is inc T . sort Bar . op b : -> Bar [pconst] . endfth fmod BAR{X :: T2} is op f : Foo -> X$Bar . eq f(X$a) = X$b . endfm show all . fmod BAR2{Y :: T2} is inc BAR{Y} . op g : Foo -> Y$Bar . eq g(Y$a) = f(Y$a) . endfm show all . fmod BAZ is inc BASE . sort Quux . op aa : -> Foo . op bb : -> Quux . endfm view V from T2 to BAZ is sort Bar to Quux . op a to aa . op b to bb . endv fmod TEST is inc BAR2{V} . endfm show all . Maude-Maude3.5.1/tests/Misc/pconst.expected0000664000175000017510000000410615036121435020147 0ustar nileshnileshWarning: , line 13 (fth T): pconst attribute is not allowed for polymorphic constant a. fmod BAR{X :: T} is sorts Foo X$Bar . op a : -> Foo [pconst] . op a : -> [Foo] [pconst] . endfm fmod BAR{X :: T2} is sorts X$Foo X$Bar . op X$a : -> X$Foo [pconst] . op X$b : -> X$Bar [pconst] . endfm fmod BAR{X :: T2} is sort X$Bar . op X$b : -> X$Bar [pconst] . op f : X$Bar -> X$Bar . eq f(X$b) = X$b . endfm fmod TEST is sort Quux . op bb : -> Quux . op f : Quux -> Quux . eq f(bb) = bb . endfm fmod BAR{X :: T2} is sorts X$Foo X$Bar . op X$a : -> X$Foo [pconst] . op X$b : -> X$Bar [pconst] . op f : X$Foo -> X$Bar . eq f(X$a) = X$b . endfm fmod TEST is sorts Baz Quux . op aa : -> Baz . op bb : -> Quux . op f : Baz -> Quux . eq f(aa) = bb . endfm fmod BAR{X :: T2} is sorts X$Foo X$Bar . op X$a : -> X$Foo [pconst] . op X$b : -> X$Bar [pconst] . op f : X$Foo -> X$Bar . eq f(X$a) = X$b . endfm fmod TEST is sorts Baz Quux . op a : -> Baz . op b : -> Quux . op f : Baz -> Quux . eq f(a) = b . endfm fmod BAR{X :: T2} is sorts X$Foo X$Bar . op X$a : -> X$Foo [pconst] . op X$b : -> X$Bar [pconst] . op f : X$Foo -> X$Bar . eq f(X$a) = X$b . endfm fmod BAR2{Y :: T2} is sorts Y$Foo Y$Bar . op Y$a : -> Y$Foo [pconst] . op Y$b : -> Y$Bar [pconst] . op f : Y$Foo -> Y$Bar . op g : Y$Foo -> Y$Bar . eq g(Y$a) = f(Y$a) . eq f(Y$a) = Y$b . endfm fmod TEST is sorts Baz Quux . op a : -> Baz . op b : -> Quux . op f : Baz -> Quux . op g : Baz -> Quux . eq f(a) = b . eq g(a) = f(a) . endfm fmod BAR{X :: T2} is sorts Foo X$Bar . op X$a : -> Foo [pconst] . op X$b : -> X$Bar [pconst] . op f : Foo -> X$Bar . eq f(X$a) = X$b . endfm fmod BAR2{Y :: T2} is sorts Foo Y$Bar . op Y$a : -> Foo [pconst] . op Y$b : -> Y$Bar [pconst] . op f : Foo -> Y$Bar . op g : Foo -> Y$Bar . eq g(Y$a) = f(Y$a) . eq f(Y$a) = Y$b . endfm fmod TEST is sorts Foo Quux . op aa : -> Foo . op bb : -> Quux . op f : Foo -> Quux . op g : Foo -> Quux . eq f(aa) = bb . eq g(aa) = f(aa) . endfm Bye. Maude-Maude3.5.1/tests/Misc/pconst0000775000175000017510000000032415036121435016350 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/pconst.maude -no-banner -no-advise \ > pconst.out 2>&1 diff $srcdir/pconst.expected pconst.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/parse.maude0000664000175000017510000000271215036121435017246 0ustar nileshnilesh*** Colliding Deterministic Reduction Paths for Leo's algorithm set print mixfix off . fmod COLLIDING-DRPs is sorts A B C D . op a_ : B -> A . op b_ : C -> B . op c_ : D -> C . op d e : -> D . op c d e : -> C . endfm *** ambiguous parse a b c d e . fmod COLLIDING-DRPs2 is sorts A B C D . op a_ : B -> A . op b_ : C -> B . op c d e : -> C . op c _ e : D -> C . op d : -> D . endfm *** ambiguous parse a b c d e . fmod SUB-DRP is sorts A B C D E F G . op a_ : B -> A [prec 10 gather (E)] . op b_ : C -> B [prec 10 gather (E)] . op c_ : D -> C [prec 10 gather (E)] . *** t2 op d e : -> D [prec 10] . *** t1 op _e : E -> D [prec 1 gather (E)] . *** r2 op d : -> E . op __ : G D -> F [prec 1 gather (E E)] . *** u2 op c : -> G . op a b_ : F -> A [prec 10 gather (E)] . endfm *** ambiguous - need to avoid generating the same parse twice parse a b c d e . fmod SUB-DRP2 is sorts A B C D E F G H . op a_ : B -> A [prec 10 gather (E)] . op b_ : C -> B [prec 10 gather (E)] . op c_ : D -> C [prec 10 gather (E)] . *** t2 op d_ : H -> D [prec 10] . *** now above t1 op e : -> H . *** new t1 op _e : E -> D [prec 1 gather (E)] . *** r2 op d : -> E . op __ : G D -> F [prec 1 gather (E E)] . *** u2 op c : -> G . op a b_ : F -> A [prec 10 gather (E)] . endfm *** ambiguous - need to avoid generating the same parse twice parse a b c d e . Maude-Maude3.5.1/tests/Misc/parse.expected0000664000175000017510000000131415036121435017751 0ustar nileshnileshWarning: , line 17: ambiguous term, two parses are: A : a_(b_(c`d`e)) -versus- A : a_(b_(c_(d`e))) Arbitrarily taking the first as correct. A: a_(b_(c`d`e)) Warning: , line 31: ambiguous term, two parses are: A : a_(b_(c`d`e)) -versus- A : a_(b_(c_e(d))) Arbitrarily taking the first as correct. A: a_(b_(c`d`e)) Warning: , line 51: ambiguous term, two parses are: A : a_(b_(c_(d`e))) -versus- A : a_(b_(c_(_e(d)))) Arbitrarily taking the first as correct. A: a_(b_(c_(d`e))) Warning: , line 72: ambiguous term, two parses are: A : a_(b_(c_(d_(e)))) -versus- A : a_(b_(c_(_e(d)))) Arbitrarily taking the first as correct. A: a_(b_(c_(d_(e)))) Bye. Maude-Maude3.5.1/tests/Misc/parse0000775000175000017510000000032015036121435016150 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parse.maude -no-banner -no-advise \ > parse.out 2>&1 diff $srcdir/parse.expected parse.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/parameterizedView.maude0000664000175000017510000000303415036121435021621 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test parameterized views. *** fmod FOO{X :: TRIV, Y :: TRIV} is inc MAP{X, Y} + SET{X} . endfm view SetAsDefault{X :: TRIV} from DEFAULT to SET*{X} is sort Elt to Set{X} . op 0 to {} . endv fmod ARRAY-OF-SETS{X :: TRIV, Y :: TRIV} is inc ARRAY{X, SetAsDefault{Y}} . endfm fmod TEST is inc ARRAY-OF-SETS{String, Nat} . endfm red in TEST : insert("one", {1}, insert("one-two", {1,2}, empty)) . red in TEST : insert("one", {1}, insert("one-two", {1,2}, empty))["unseen"] . red in TEST : insert("one", {1}, insert("one-two", {1,2}, empty))["one"] . fmod TEST2 is inc ARRAY{String, SetAsDefault{Nat}} . endfm red in TEST2 : insert("one", {1}, insert("one-two", {1,2}, empty)) . red in TEST2 : insert("one", {1}, insert("one-two", {1,2}, empty))["unseen"] . red in TEST2 : insert("one", {1}, insert("one-two", {1,2}, empty))["one"] . view ArrayOfSets{X :: TRIV, Y :: TRIV} from TRIV to ARRAY{X, SetAsDefault{Y}} is sort Elt to Array{X,SetAsDefault{Y}} . endv fmod LIST-OF-ARRAYS-OF-SETS{X :: TRIV, Y :: TRIV} is inc LIST{ArrayOfSets{X, Y}} . endfm fmod TEST3 is inc LIST-OF-ARRAYS-OF-SETS{String, Nat} . endfm red in TEST3 : insert("one", {1}, insert("one-two", {1,2}, empty)) insert("one", {1}, insert("one-two-three", {1,2,3}, empty)) insert("two", {2}, insert("one-two-three", {1,2,3}, empty)) . fmod TEST4 is inc ARRAY{String, SetAsDefault{DEFAULT}{Nat0}} . endfm red in TEST4 : insert("one", {1}, insert("one-two", {1,2}, empty))["one"] . show views . show modules . Maude-Maude3.5.1/tests/Misc/parameterizedView.expected0000664000175000017510000002115115036121435022327 0ustar nileshnilesh========================================== reduce in TEST : insert("one", {1}, insert("one-two", {1, 2}, empty)) . rewrites: 6 result Array{String,SetAsDefault{Nat}}: "one" |-> {1} ; "one-two" |-> {1, 2} ========================================== reduce in TEST : insert("one", {1}, insert("one-two", {1, 2}, empty))["unseen"] . rewrites: 7 result Set{Nat}: {} ========================================== reduce in TEST : insert("one", {1}, insert("one-two", {1, 2}, empty))["one"] . rewrites: 9 result NeSet{Nat}: {1} ========================================== reduce in TEST2 : insert("one", {1}, insert("one-two", {1, 2}, empty)) . rewrites: 6 result Array{String,SetAsDefault{Nat}}: "one" |-> {1} ; "one-two" |-> {1, 2} ========================================== reduce in TEST2 : insert("one", {1}, insert("one-two", {1, 2}, empty))[ "unseen"] . rewrites: 7 result Set{Nat}: {} ========================================== reduce in TEST2 : insert("one", {1}, insert("one-two", {1, 2}, empty))["one"] . rewrites: 9 result NeSet{Nat}: {1} ========================================== reduce in TEST3 : insert("one", {1}, insert("one-two", {1, 2}, empty)) insert( "one", {1}, insert("one-two-three", {1, 2, 3}, empty)) insert("two", {2}, insert("one-two-three", {1, 2, 3}, empty)) . rewrites: 15 result NeList{ArrayOfSets{String,Nat}}: ("one" |-> {1} ; "one-two" |-> {1, 2}) ("one" |-> {1} ; "one-two-three" |-> {1, 2, 3}) ("one-two-three" |-> {1, 2, 3} ; "two" |-> {2}) ========================================== reduce in TEST4 : insert("one", {1}, insert("one-two", {1, 2}, empty))["one"] . rewrites: 9 result NeSet{DEFAULT}{Nat0}: {1} view Bool view Nat view Int view Rat view Float view String view Qid view TRIV view STRICT-WEAK-ORDER view STRICT-TOTAL-ORDER view Nat< view Int< view Rat< view Float< view String< view TOTAL-PREORDER view TOTAL-ORDER view Nat<= view Int<= view Rat<= view Float<= view String<= view DEFAULT view Nat0 view Int0 view Rat0 view Float0 view String0 view Qid0 view List view WeaklySortableList view SortableList view WeaklySortableList' view SortableList' view Set view List* view Set* view Map view Array view SetAsDefault view ArrayOfSets view SetAsDefault{[Y]} view SetAsDefault{Nat} view ArrayOfSets{[X], [Y]} view ArrayOfSets{String, Nat} view SetAsDefault{DEFAULT} view SetAsDefault{DEFAULT}{Nat0} fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fmod FOO fmod ARRAY-OF-SETS fmod TEST fmod TEST2 fmod LIST-OF-ARRAYS-OF-SETS fmod TEST3 fmod TEST4 fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{[X]} + MAP{[X], [Y]} fmod SET*{[Y]} fmod ARRAY{[X], SetAsDefault{[Y]}} fmod ARRAY-OF-SETS{String, Nat} fmod SET*{Nat} fmod ARRAY{String, SetAsDefault{Nat}} fmod LIST{ArrayOfSets{[X], [Y]}} fmod LIST-OF-ARRAYS-OF-SETS{String, Nat} fmod LIST{ArrayOfSets{String, Nat}} fth X :: DEFAULT fmod SET*{DEFAULT} fmod SET*{DEFAULT}{[X]} fmod SET*{DEFAULT}{Nat0} fmod ARRAY{String, SetAsDefault{DEFAULT}{Nat0}} Bye. Maude-Maude3.5.1/tests/Misc/parameterizedView0000775000175000017510000000040015036121435020524 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parameterizedView.maude -no-banner -no-advise \ > parameterizedView.out 2>&1 diff $srcdir/parameterizedView.expected parameterizedView.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/parameterizedConstant.maude0000664000175000017510000000401615036121435022501 0ustar nileshnileshset show timing off . set show advisories off . fmod STACK{X :: TRIV} is sorts NeStack{X} Stack{X} . subsort X$Elt < NeStack{X} < Stack{X} . op emptyStack{X} : -> Stack{X} . op _|_ : Stack{X} Stack{X} -> Stack{X} [assoc id: emptyStack{X}] . op _|_ : NeStack{X} Stack{X} -> NeStack{X} [ditto] . op _|_ : Stack{X} NeStack{X} -> NeStack{X} [ditto] . op push : X$Elt Stack{X} -> NeStack{X} . op top : NeStack{X} -> X$Elt . op pop : NeStack{X} -> Stack{X} . var S : Stack{X} . var E : X$Elt . eq push(E, S) = E | S . eq top(E | S) = E . eq pop(E | S) = S . endfm red push(E, emptyStack{X}) . red push(E, push(E, emptyStack{X})) . red top(push(E, emptyStack{X})) . red pop(push(E, emptyStack{X})) . fmod QID-TEST is inc STACK{Qid} . endfm show all . red push('a, emptyStack{Qid}) . red push('a, push('b, emptyStack{Qid})) . red top(push('c, emptyStack{Qid})) . red pop(push('c, emptyStack{Qid})) . fmod NAT-TEST is inc (STACK * (op _|_ to _!_, op emptyStack{X} to null{X})){Nat} . endfm show all . red push(1, null{Nat}) . red push(1, push(2, null{Nat})) . red top(push(3, null{Nat})) . red pop(push(3, null{Nat})) . fmod NAT-TEST2 is inc (STACK * (sort NeStack{X} to NonEmptyStack{X}, op _|_ to _!_, op emptyStack{X} to null{X})){Nat} . endfm show all . red push(1, null{Nat}) . red push(1, push(2, null{Nat})) . red top(push(3, null{Nat})) . red pop(push(3, null{Nat})) . fmod VIEW-TEST{X :: TOTAL-ORDER} is inc STACK{TOTAL-PREORDER}{TOTAL-ORDER}{X} . endfm show all . fmod VIEW-TEST2 is inc VIEW-TEST{Float<=} . endfm show all . red push(1.0, emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}) . red push(1.0, push(2.0, emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=})) . red top(push(3.0, emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=})) . red pop(push(3.0, emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=})) . view Stack{X :: TRIV} from DEFAULT to STACK{X} is sort Elt to Stack{X} . op 0 to emptyStack{X} . endv fmod ARRAY-TEST is inc ARRAY{Nat, Stack{Float}} . endfm show all . red empty[42] . Maude-Maude3.5.1/tests/Misc/parameterizedConstant.expected0000664000175000017510000014443215036121435023216 0ustar nileshnilesh========================================== reduce in STACK : push(E, emptyStack{X}) . rewrites: 1 result X$Elt: E ========================================== reduce in STACK : push(E, push(E, emptyStack{X})) . rewrites: 2 result NeStack{X}: E | E ========================================== reduce in STACK : top(push(E, emptyStack{X})) . rewrites: 2 result X$Elt: E ========================================== reduce in STACK : pop(push(E, emptyStack{X})) . rewrites: 2 result Stack{X}: emptyStack{X} fmod QID-TEST is sorts Bool Zero NzNat Nat String Char FindResult Qid NeStack{Qid} Stack{Qid} . subsorts Zero NzNat < Nat . subsort Char < String . subsort Nat < FindResult . subsort Qid < NeStack{Qid} . subsort NeStack{Qid} < Stack{Qid} . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [FindResult] [FindResult] [FindResult] -> [FindResult] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op : -> Char [special ( id-hook StringSymbol)] . op : -> String [special ( id-hook StringSymbol)] . op notFound : -> FindResult [ctor] . op ascii : Char -> Nat [special ( id-hook StringOpSymbol (ascii) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op char : [FindResult] -> [String] [special ( id-hook StringOpSymbol (char) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : String String -> String [prec 33 gather (E e) special ( id-hook StringOpSymbol (+) op-hook stringSymbol ( : ~> Char))] . op length : String -> Nat [special ( id-hook StringOpSymbol (length) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op substr : String Nat Nat -> String [special ( id-hook StringOpSymbol (substr) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat))] . op find : String String Nat -> FindResult [special ( id-hook StringOpSymbol (find) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook notFoundTerm (notFound))] . op rfind : String String Nat -> FindResult [special ( id-hook StringOpSymbol (rfind) op-hook stringSymbol ( : ~> Char) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook notFoundTerm (notFound))] . op _<_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (<) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (<=) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (>) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : String String -> Bool [prec 37 gather (E E) special ( id-hook StringOpSymbol (>=) op-hook stringSymbol ( : ~> Char) term-hook trueTerm (true) term-hook falseTerm (false))] . op upperCase : String -> String [special ( id-hook StringOpSymbol (upperCase) op-hook stringSymbol ( : ~> Char))] . op lowerCase : String -> String [special ( id-hook StringOpSymbol (lowerCase) op-hook stringSymbol ( : ~> Char))] . op : -> Qid [special ( id-hook QuotedIdentifierSymbol)] . op string : Qid -> String [special ( id-hook QuotedIdentifierOpSymbol (string) op-hook quotedIdentifierSymbol ( : ~> Qid) op-hook stringSymbol ( : ~> Char))] . op qid : [String] -> [Stack{Qid}] [special ( id-hook QuotedIdentifierOpSymbol (qid) op-hook quotedIdentifierSymbol ( : ~> Qid) op-hook stringSymbol ( : ~> Char))] . op emptyStack{Qid} : -> Stack{Qid} . op _|_ : Stack{Qid} Stack{Qid} -> Stack{Qid} [assoc id: emptyStack{Qid} prec 41 gather (e E)] . op _|_ : NeStack{Qid} Stack{Qid} -> NeStack{Qid} [assoc id: emptyStack{Qid} prec 41 gather (e E)] . op _|_ : Stack{Qid} NeStack{Qid} -> NeStack{Qid} [assoc id: emptyStack{Qid} prec 41 gather (e E)] . op push : Qid Stack{Qid} -> NeStack{Qid} . op top : NeStack{Qid} -> Qid . op pop : NeStack{Qid} -> Stack{Qid} . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq push(E:Qid, S:Stack{Qid}) = E:Qid | S:Stack{Qid} . eq top(E:Qid | S:Stack{Qid}) = E:Qid . eq pop(E:Qid | S:Stack{Qid}) = S:Stack{Qid} . endfm ========================================== reduce in QID-TEST : push('a, emptyStack{Qid}) . rewrites: 1 result Qid: 'a ========================================== reduce in QID-TEST : push('a, push('b, emptyStack{Qid})) . rewrites: 2 result NeStack{Qid}: 'a | 'b ========================================== reduce in QID-TEST : top(push('c, emptyStack{Qid})) . rewrites: 2 result Qid: 'c ========================================== reduce in QID-TEST : pop(push('c, emptyStack{Qid})) . rewrites: 2 result Stack{Qid}: emptyStack{Qid} fmod NAT-TEST is sorts Bool Zero NzNat Nat NeStack{Nat} Stack{Nat} . subsorts Zero NzNat < Nat . subsort Nat < NeStack{Nat} . subsort NeStack{Nat} < Stack{Nat} . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Stack{Nat}] [Stack{Nat}] [Stack{Nat}] -> [Stack{Nat}] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op null{Nat} : -> Stack{Nat} . op _!_ : Stack{Nat} Stack{Nat} -> Stack{Nat} [assoc id: null{Nat} prec 41 gather (e E)] . op _!_ : NeStack{Nat} Stack{Nat} -> NeStack{Nat} [assoc id: null{Nat} prec 41 gather (e E)] . op _!_ : Stack{Nat} NeStack{Nat} -> NeStack{Nat} [assoc id: null{Nat} prec 41 gather (e E)] . op push : Nat Stack{Nat} -> NeStack{Nat} . op top : NeStack{Nat} -> Nat . op pop : NeStack{Nat} -> Stack{Nat} . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq push(E:Nat, S:Stack{Nat}) = E:Nat ! S:Stack{Nat} . eq top(E:Nat ! S:Stack{Nat}) = E:Nat . eq pop(E:Nat ! S:Stack{Nat}) = S:Stack{Nat} . endfm ========================================== reduce in NAT-TEST : push(1, null{Nat}) . rewrites: 1 result NzNat: 1 ========================================== reduce in NAT-TEST : push(1, push(2, null{Nat})) . rewrites: 2 result NeStack{Nat}: 1 ! 2 ========================================== reduce in NAT-TEST : top(push(3, null{Nat})) . rewrites: 2 result NzNat: 3 ========================================== reduce in NAT-TEST : pop(push(3, null{Nat})) . rewrites: 2 result Stack{Nat}: null{Nat} fmod NAT-TEST2 is sorts Bool Zero NzNat Nat NonEmptyStack{Nat} Stack{Nat} . subsorts Zero NzNat < Nat . subsort Nat < NonEmptyStack{Nat} . subsort NonEmptyStack{Nat} < Stack{Nat} . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Stack{Nat}] [Stack{Nat}] [Stack{Nat}] -> [Stack{Nat}] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op null{Nat} : -> Stack{Nat} . op _!_ : Stack{Nat} Stack{Nat} -> Stack{Nat} [assoc id: null{Nat} prec 41 gather (e E)] . op _!_ : NonEmptyStack{Nat} Stack{Nat} -> NonEmptyStack{Nat} [assoc id: null{ Nat} prec 41 gather (e E)] . op _!_ : Stack{Nat} NonEmptyStack{Nat} -> NonEmptyStack{Nat} [assoc id: null{ Nat} prec 41 gather (e E)] . op push : Nat Stack{Nat} -> NonEmptyStack{Nat} . op top : NonEmptyStack{Nat} -> Nat . op pop : NonEmptyStack{Nat} -> Stack{Nat} . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq push(E:Nat, S:Stack{Nat}) = E:Nat ! S:Stack{Nat} . eq top(E:Nat ! S:Stack{Nat}) = E:Nat . eq pop(E:Nat ! S:Stack{Nat}) = S:Stack{Nat} . endfm ========================================== reduce in NAT-TEST2 : push(1, null{Nat}) . rewrites: 1 result NzNat: 1 ========================================== reduce in NAT-TEST2 : push(1, push(2, null{Nat})) . rewrites: 2 result NonEmptyStack{Nat}: 1 ! 2 ========================================== reduce in NAT-TEST2 : top(push(3, null{Nat})) . rewrites: 2 result NzNat: 3 ========================================== reduce in NAT-TEST2 : pop(push(3, null{Nat})) . rewrites: 2 result Stack{Nat}: null{Nat} fmod VIEW-TEST{X :: TOTAL-ORDER} is sorts Bool X$Elt NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{X} . subsort X$Elt < NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} . subsort NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} < Stack{TOTAL-PREORDER}{ TOTAL-ORDER}{X} . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op _<=_ : X$Elt X$Elt -> Bool [prec 41 gather (E E)] . op emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} : -> Stack{TOTAL-PREORDER}{ TOTAL-ORDER}{X} . op _|_ : Stack{TOTAL-PREORDER}{TOTAL-ORDER}{X} Stack{TOTAL-PREORDER}{ TOTAL-ORDER}{X} -> Stack{TOTAL-PREORDER}{TOTAL-ORDER}{X} [assoc id: emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} prec 41 gather (e E)] . op _|_ : NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} Stack{TOTAL-PREORDER}{ TOTAL-ORDER}{X} -> NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} [assoc id: emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} prec 41 gather (e E)] . op _|_ : Stack{TOTAL-PREORDER}{TOTAL-ORDER}{X} NeStack{TOTAL-PREORDER}{ TOTAL-ORDER}{X} -> NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} [assoc id: emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} prec 41 gather (e E)] . op push : X$Elt Stack{TOTAL-PREORDER}{TOTAL-ORDER}{X} -> NeStack{ TOTAL-PREORDER}{TOTAL-ORDER}{X} . op top : NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} -> X$Elt . op pop : NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{X} -> Stack{TOTAL-PREORDER}{ TOTAL-ORDER}{X} . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq [X$reflexive] : X:X$Elt <= X:X$Elt = true [nonexec] . ceq [X$transitive] : X:X$Elt <= Z:X$Elt = true if X:X$Elt <= Y:X$Elt = true /\ Y:X$Elt <= Z:X$Elt = true [nonexec] . eq [X$total] : X:X$Elt <= Y:X$Elt or Y:X$Elt <= X:X$Elt = true [nonexec] . ceq [X$antisymmetric] : X:X$Elt = Y:X$Elt if X:X$Elt <= Y:X$Elt = true /\ Y:X$Elt <= X:X$Elt = true [nonexec] . eq push(E:X$Elt, S:Stack{TOTAL-PREORDER}{TOTAL-ORDER}{X}) = E:X$Elt | S:Stack{TOTAL-PREORDER}{TOTAL-ORDER}{X} . eq top(E:X$Elt | S:Stack{TOTAL-PREORDER}{TOTAL-ORDER}{X}) = E:X$Elt . eq pop(E:X$Elt | S:Stack{TOTAL-PREORDER}{TOTAL-ORDER}{X}) = S:Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{X} . endfm fmod VIEW-TEST2 is sorts Bool FiniteFloat Float NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} . subsort FiniteFloat < Float . subsort Float < NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} . subsort NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} < Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op : -> FiniteFloat [special ( id-hook FloatSymbol)] . op : -> Float [special ( id-hook FloatSymbol)] . op -_ : Float -> Float [prec 15 gather (E) special ( id-hook FloatOpSymbol (-) op-hook floatSymbol ( : ~> FiniteFloat))] . op -_ : FiniteFloat -> FiniteFloat [prec 15 gather (E) special ( id-hook FloatOpSymbol (-) op-hook floatSymbol ( : ~> FiniteFloat))] . op _+_ : Float Float -> Float [prec 33 gather (E e) special ( id-hook FloatOpSymbol (+) op-hook floatSymbol ( : ~> FiniteFloat))] . op _-_ : Float Float -> Float [prec 33 gather (E e) special ( id-hook FloatOpSymbol (-) op-hook floatSymbol ( : ~> FiniteFloat))] . op _*_ : Float Float -> Float [prec 31 gather (E e) special ( id-hook FloatOpSymbol (*) op-hook floatSymbol ( : ~> FiniteFloat))] . op _/_ : [Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] [Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] -> [Stack{TOTAL-PREORDER}{ TOTAL-ORDER}{Float<=}] [prec 31 gather (E e) special ( id-hook FloatOpSymbol (/) op-hook floatSymbol ( : ~> FiniteFloat))] . op _rem_ : [Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] [Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] -> [Stack{TOTAL-PREORDER}{ TOTAL-ORDER}{Float<=}] [prec 31 gather (E e) special ( id-hook FloatOpSymbol (rem) op-hook floatSymbol ( : ~> FiniteFloat))] . op _^_ : [Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] [Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] -> [Stack{TOTAL-PREORDER}{ TOTAL-ORDER}{Float<=}] [prec 29 gather (E e) special ( id-hook FloatOpSymbol (^) op-hook floatSymbol ( : ~> FiniteFloat))] . op abs : Float -> Float [special ( id-hook FloatOpSymbol (abs) op-hook floatSymbol ( : ~> FiniteFloat))] . op abs : FiniteFloat -> FiniteFloat [special ( id-hook FloatOpSymbol (abs) op-hook floatSymbol ( : ~> FiniteFloat))] . op floor : Float -> Float [special ( id-hook FloatOpSymbol (floor) op-hook floatSymbol ( : ~> FiniteFloat))] . op ceiling : Float -> Float [special ( id-hook FloatOpSymbol (ceiling) op-hook floatSymbol ( : ~> FiniteFloat))] . op min : Float Float -> Float [special ( id-hook FloatOpSymbol (min) op-hook floatSymbol ( : ~> FiniteFloat))] . op max : Float Float -> Float [special ( id-hook FloatOpSymbol (max) op-hook floatSymbol ( : ~> FiniteFloat))] . op sqrt : [Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] -> [Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] [special ( id-hook FloatOpSymbol (sqrt) op-hook floatSymbol ( : ~> FiniteFloat))] . op exp : Float -> Float [special ( id-hook FloatOpSymbol (exp) op-hook floatSymbol ( : ~> FiniteFloat))] . op log : [Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] -> [Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] [special ( id-hook FloatOpSymbol (log) op-hook floatSymbol ( : ~> FiniteFloat))] . op sin : Float -> Float [special ( id-hook FloatOpSymbol (sin) op-hook floatSymbol ( : ~> FiniteFloat))] . op cos : Float -> Float [special ( id-hook FloatOpSymbol (cos) op-hook floatSymbol ( : ~> FiniteFloat))] . op tan : Float -> Float [special ( id-hook FloatOpSymbol (tan) op-hook floatSymbol ( : ~> FiniteFloat))] . op asin : [Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] -> [Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] [special ( id-hook FloatOpSymbol (asin) op-hook floatSymbol ( : ~> FiniteFloat))] . op acos : [Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] -> [Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}] [special ( id-hook FloatOpSymbol (acos) op-hook floatSymbol ( : ~> FiniteFloat))] . op atan : Float -> Float [special ( id-hook FloatOpSymbol (atan) op-hook floatSymbol ( : ~> FiniteFloat))] . op atan : Float Float -> Float [special ( id-hook FloatOpSymbol (atan) op-hook floatSymbol ( : ~> FiniteFloat))] . op _<_ : Float Float -> Bool [prec 51 gather (E E) special ( id-hook FloatOpSymbol (<) op-hook floatSymbol ( : ~> FiniteFloat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Float Float -> Bool [prec 51 gather (E E) special ( id-hook FloatOpSymbol (<=) op-hook floatSymbol ( : ~> FiniteFloat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Float Float -> Bool [prec 51 gather (E E) special ( id-hook FloatOpSymbol (>) op-hook floatSymbol ( : ~> FiniteFloat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Float Float -> Bool [prec 51 gather (E E) special ( id-hook FloatOpSymbol (>=) op-hook floatSymbol ( : ~> FiniteFloat) term-hook trueTerm (true) term-hook falseTerm (false))] . op pi : -> FiniteFloat . op _=[_]_ : Float FiniteFloat Float -> Bool [prec 51 gather (E & E) format (d d d d d s d)] . op emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} : -> Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} . op _|_ : Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} Stack{TOTAL-PREORDER}{ TOTAL-ORDER}{Float<=} -> Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} [assoc id: emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} prec 41 gather (e E)] . op _|_ : NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} Stack{TOTAL-PREORDER}{ TOTAL-ORDER}{Float<=} -> NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} [ assoc id: emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} prec 41 gather ( e E)] . op _|_ : Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} NeStack{TOTAL-PREORDER}{ TOTAL-ORDER}{Float<=} -> NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} [ assoc id: emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} prec 41 gather ( e E)] . op push : Float Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} -> NeStack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} . op top : NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} -> Float . op pop : NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} -> Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq pi = 3.1415926535897931 . eq X:Float =[Z:FiniteFloat] Y:Float = abs(X:Float - Y:Float) < Z:FiniteFloat . eq push(E:Float, S:Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}) = E:Float | S:Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} . eq top(E:Float | S:Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}) = E:Float . eq pop(E:Float | S:Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}) = S:Stack{ TOTAL-PREORDER}{TOTAL-ORDER}{Float<=} . endfm ========================================== reduce in VIEW-TEST2 : push(1.0, emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{ Float<=}) . rewrites: 1 result FiniteFloat: 1.0 ========================================== reduce in VIEW-TEST2 : push(1.0, push(2.0, emptyStack{TOTAL-PREORDER}{ TOTAL-ORDER}{Float<=})) . rewrites: 2 result NeStack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}: 1.0 | 2.0 ========================================== reduce in VIEW-TEST2 : top(push(3.0, emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{ Float<=})) . rewrites: 2 result FiniteFloat: 3.0 ========================================== reduce in VIEW-TEST2 : pop(push(3.0, emptyStack{TOTAL-PREORDER}{TOTAL-ORDER}{ Float<=})) . rewrites: 2 result Stack{TOTAL-PREORDER}{TOTAL-ORDER}{Float<=}: emptyStack{TOTAL-PREORDER}{ TOTAL-ORDER}{Float<=} fmod ARRAY-TEST is sorts Bool Zero NzNat Nat FiniteFloat Float NeStack{Float} Stack{Float} Entry{Nat,Stack{Float}} Array{Nat,Stack{Float}} . subsorts Zero NzNat < Nat . subsort FiniteFloat < Float . subsort Float < NeStack{Float} . subsort NeStack{Float} < Stack{Float} . subsort Entry{Nat,Stack{Float}} < Array{Nat,Stack{Float}} . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op : -> FiniteFloat [special ( id-hook FloatSymbol)] . op : -> Float [special ( id-hook FloatSymbol)] . op -_ : Float -> Float [prec 15 gather (E) special ( id-hook FloatOpSymbol (-) op-hook floatSymbol ( : ~> FiniteFloat))] . op -_ : FiniteFloat -> FiniteFloat [prec 15 gather (E) special ( id-hook FloatOpSymbol (-) op-hook floatSymbol ( : ~> FiniteFloat))] . op _+_ : Float Float -> Float [prec 33 gather (E e) special ( id-hook FloatOpSymbol (+) op-hook floatSymbol ( : ~> FiniteFloat))] . op _-_ : Float Float -> Float [prec 33 gather (E e) special ( id-hook FloatOpSymbol (-) op-hook floatSymbol ( : ~> FiniteFloat))] . op _*_ : Float Float -> Float [prec 31 gather (E e) special ( id-hook FloatOpSymbol (*) op-hook floatSymbol ( : ~> FiniteFloat))] . op _/_ : [Stack{Float}] [Stack{Float}] -> [Stack{Float}] [prec 31 gather (E e) special ( id-hook FloatOpSymbol (/) op-hook floatSymbol ( : ~> FiniteFloat))] . op _rem_ : [Stack{Float}] [Stack{Float}] -> [Stack{Float}] [prec 31 gather (E e) special ( id-hook FloatOpSymbol (rem) op-hook floatSymbol ( : ~> FiniteFloat))] . op _^_ : [Stack{Float}] [Stack{Float}] -> [Stack{Float}] [prec 29 gather (E e) special ( id-hook FloatOpSymbol (^) op-hook floatSymbol ( : ~> FiniteFloat))] . op abs : Float -> Float [special ( id-hook FloatOpSymbol (abs) op-hook floatSymbol ( : ~> FiniteFloat))] . op abs : FiniteFloat -> FiniteFloat [special ( id-hook FloatOpSymbol (abs) op-hook floatSymbol ( : ~> FiniteFloat))] . op floor : Float -> Float [special ( id-hook FloatOpSymbol (floor) op-hook floatSymbol ( : ~> FiniteFloat))] . op ceiling : Float -> Float [special ( id-hook FloatOpSymbol (ceiling) op-hook floatSymbol ( : ~> FiniteFloat))] . op min : Float Float -> Float [special ( id-hook FloatOpSymbol (min) op-hook floatSymbol ( : ~> FiniteFloat))] . op max : Float Float -> Float [special ( id-hook FloatOpSymbol (max) op-hook floatSymbol ( : ~> FiniteFloat))] . op sqrt : [Stack{Float}] -> [Stack{Float}] [special ( id-hook FloatOpSymbol (sqrt) op-hook floatSymbol ( : ~> FiniteFloat))] . op exp : Float -> Float [special ( id-hook FloatOpSymbol (exp) op-hook floatSymbol ( : ~> FiniteFloat))] . op log : [Stack{Float}] -> [Stack{Float}] [special ( id-hook FloatOpSymbol (log) op-hook floatSymbol ( : ~> FiniteFloat))] . op sin : Float -> Float [special ( id-hook FloatOpSymbol (sin) op-hook floatSymbol ( : ~> FiniteFloat))] . op cos : Float -> Float [special ( id-hook FloatOpSymbol (cos) op-hook floatSymbol ( : ~> FiniteFloat))] . op tan : Float -> Float [special ( id-hook FloatOpSymbol (tan) op-hook floatSymbol ( : ~> FiniteFloat))] . op asin : [Stack{Float}] -> [Stack{Float}] [special ( id-hook FloatOpSymbol (asin) op-hook floatSymbol ( : ~> FiniteFloat))] . op acos : [Stack{Float}] -> [Stack{Float}] [special ( id-hook FloatOpSymbol (acos) op-hook floatSymbol ( : ~> FiniteFloat))] . op atan : Float -> Float [special ( id-hook FloatOpSymbol (atan) op-hook floatSymbol ( : ~> FiniteFloat))] . op atan : Float Float -> Float [special ( id-hook FloatOpSymbol (atan) op-hook floatSymbol ( : ~> FiniteFloat))] . op _<_ : Float Float -> Bool [prec 51 gather (E E) special ( id-hook FloatOpSymbol (<) op-hook floatSymbol ( : ~> FiniteFloat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Float Float -> Bool [prec 51 gather (E E) special ( id-hook FloatOpSymbol (<=) op-hook floatSymbol ( : ~> FiniteFloat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Float Float -> Bool [prec 51 gather (E E) special ( id-hook FloatOpSymbol (>) op-hook floatSymbol ( : ~> FiniteFloat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Float Float -> Bool [prec 51 gather (E E) special ( id-hook FloatOpSymbol (>=) op-hook floatSymbol ( : ~> FiniteFloat) term-hook trueTerm (true) term-hook falseTerm (false))] . op pi : -> FiniteFloat . op _=[_]_ : Float FiniteFloat Float -> Bool [prec 51 gather (E & E) format (d d d d d s d)] . op emptyStack{Float} : -> Stack{Float} . op _|_ : Stack{Float} Stack{Float} -> Stack{Float} [assoc id: emptyStack{ Float} prec 41 gather (e E)] . op _|_ : NeStack{Float} Stack{Float} -> NeStack{Float} [assoc id: emptyStack{ Float} prec 41 gather (e E)] . op _|_ : Stack{Float} NeStack{Float} -> NeStack{Float} [assoc id: emptyStack{ Float} prec 41 gather (e E)] . op push : Float Stack{Float} -> NeStack{Float} . op top : NeStack{Float} -> Float . op pop : NeStack{Float} -> Stack{Float} . op _|->_ : Nat Stack{Float} -> Entry{Nat,Stack{Float}} [ctor prec 41 gather ( E E)] . op empty : -> Array{Nat,Stack{Float}} [ctor] . op _;_ : Array{Nat,Stack{Float}} Array{Nat,Stack{Float}} -> Array{Nat,Stack{ Float}} [ctor assoc comm id: empty prec 71 gather (e E) format (d r os d)] . op insert : Nat Stack{Float} Array{Nat,Stack{Float}} -> Array{Nat,Stack{ Float}} . op _[_] : Array{Nat,Stack{Float}} Nat -> Stack{Float} [prec 23 gather (E &)] . op $hasMapping : Array{Nat,Stack{Float}} Nat -> Bool . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq pi = 3.1415926535897931 . eq X:Float =[Z:FiniteFloat] Y:Float = abs(X:Float - Y:Float) < Z:FiniteFloat . eq push(E:Float, S:Stack{Float}) = E:Float | S:Stack{Float} . eq top(E:Float | S:Stack{Float}) = E:Float . eq pop(E:Float | S:Stack{Float}) = S:Stack{Float} . eq insert(D:Nat, R:Stack{Float}, A:Array{Nat,Stack{Float}} ; D:Nat |-> R':Stack{Float}) = if $hasMapping(A:Array{Nat,Stack{Float}}, D:Nat) then insert(D:Nat, R:Stack{Float}, A:Array{Nat,Stack{Float}}) else if R:Stack{ Float} == emptyStack{Float} then A:Array{Nat,Stack{Float}} else A:Array{ Nat,Stack{Float}} ; D:Nat |-> R:Stack{Float} fi fi . eq insert(D:Nat, R:Stack{Float}, A:Array{Nat,Stack{Float}}) = if R:Stack{ Float} == emptyStack{Float} then A:Array{Nat,Stack{Float}} else A:Array{ Nat,Stack{Float}} ; D:Nat |-> R:Stack{Float} fi [owise] . eq (A:Array{Nat,Stack{Float}} ; D:Nat |-> R:Stack{Float})[D:Nat] = if $hasMapping(A:Array{Nat,Stack{Float}}, D:Nat) then emptyStack{Float} else R:Stack{Float} fi . eq A:Array{Nat,Stack{Float}}[D:Nat] = emptyStack{Float} [owise] . eq $hasMapping(A:Array{Nat,Stack{Float}} ; D:Nat |-> R:Stack{Float}, D:Nat) = true . eq $hasMapping(A:Array{Nat,Stack{Float}}, D:Nat) = false [owise] . endfm ========================================== reduce in ARRAY-TEST : empty[42] . rewrites: 1 result Stack{Float}: emptyStack{Float} Bye. Maude-Maude3.5.1/tests/Misc/parameterizedConstant0000775000175000017510000000042015036121435021405 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parameterizedConstant.maude -no-banner -no-advise \ > parameterizedConstant.out 2>&1 diff $srcdir/parameterizedConstant.expected parameterizedConstant.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/parameterization.maude0000664000175000017510000001253515036121435021516 0ustar nileshnileshset show timing off . *** check renaming instantiation *** trivial case: no parameterized sorts in renaming fmod FOO{X :: TRIV, Y :: TRIV} is sort Foo{X,Y} . op f : Bool -> Bool . endfm fmod BAR{Z :: TRIV} is inc FOO{Z, Nat} . endfm fmod BAZ is inc (BAR * (op f : Bool -> Bool to g)){Rat} . endfm show all . show modules . *** parameterized sorts in renaming fmod FOO{X :: TRIV, Y :: TRIV} is sort Foo{X,Y} . op f : Foo{X,Y} -> Foo{X,Y} . endfm fmod BAR{Z :: TRIV} is inc FOO{Z, Nat} . endfm fmod BAZ is inc (BAR * (sort Foo{Z, Nat} to Bar{Nat, Z}, op f : Foo{Z, Nat} -> Foo{Z, Nat} to g) ){Rat} . endfm show all . show modules . *** parameter has the same name fmod FOO{X :: TRIV, Y :: TRIV} is sort Foo{X,Y} . op f : Foo{X,Y} -> Foo{X,Y} . endfm fmod BAR{X :: TRIV} is inc FOO{X, Nat} . endfm fmod BAZ is inc (BAR * (sort Foo{X, Nat} to Bar{Nat, X}, op f : Foo{X, Nat} -> Foo{X, Nat} to g) ){Rat} . endfm show all . show modules . *** recapture of bound parameters instantiated by a theory-view fmod FOO{X :: TRIV} is sort Foo{X} . op f : Foo{X} -> Foo{X} . endfm fmod BAR{X :: TRIV} is inc FOO{X} . sort Bar{X} . op g : Bar{X} -> Foo{X} . endfm fmod BAZ is inc (BAR * (sort Foo{X} to Foo'{X}, sort Bar{X} to Bar'{X}, op f : Foo{X} -> Foo{X} to f', op g : Bar{X} -> Foo{X} to g') ){STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Nat<} . endfm show all . show modules . *** op->term mappings fth T is sort Elt . op f : Elt -> Elt . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var A : X$Elt . eq g(A) = f(f(A)) . endfm view V from T to NAT is sort Elt to Nat . op f(X:Elt) to term X:Nat + 1 . endv fmod TEST is inc M{V} . endfm show all . *** with terms occuring as identities fth T is sort Elt . op s : Elt -> Elt . op 0 : -> Elt . endfth fmod M{X :: T} is op _#_ : X$Elt X$Elt -> X$Elt [id: s(0)] . vars A B : X$Elt . eq s(A) # s(B) = s(s(A # B)) . endfm view V from T to NAT is sort Elt to Nat . op s(X:Elt) to term s X:Nat . endv fmod TEST is inc M{V} . endfm show all . red 0 # 1 . **** mapping iter ops to terms fth T is sort Elt . op s : Elt -> Elt [iter] . op 0 : -> Elt . endfth fmod M{X :: T} is op f : X$Elt -> X$Elt . var A : X$Elt . eq f(A) = s^10(A) . endfm view V from T to INT is sort Elt to Int . op s(X:Elt) to term - X:Int . endv fmod TEST is inc M{V} . endfm show all . fth T is sort Elt . op s : Elt -> Elt [iter] . op 0 : -> Elt . endfth fmod M{X :: T} is op f : X$Elt -> X$Elt . var A : X$Elt . eq f(A) = s^3(A) . endfm view V from T to INT is sort Elt to Int . op s(X:Elt) to term X:Int * X:Int . endv fmod TEST is inc M{V} . endfm show all . **** mapping assoc ops to terms fth T is sort Elt . op f : Elt Elt -> Elt [assoc] . endfth fmod M{X :: T} is op g : X$Elt X$Elt -> X$Elt . vars A B : X$Elt . eq g(A, B) = f(A, B, A, B) . endfm view V from T to NAT is sort Elt to Nat . op f(X:Elt, Y:Elt) to term X:Nat + Y:Nat . endv fmod TEST is inc M{V} . endfm show all . fth T is sort Elt . op f : Elt Elt -> Elt [assoc] . endfth fmod M{X :: T} is op g : X$Elt X$Elt -> X$Elt . vars A B : X$Elt . eq g(A, B) = f(A, B, A, B) . endfm view V from T to INT is sort Elt to Int . op f(X:Elt, Y:Elt) to term X:Int - s Y:Int . endv fmod TEST is inc M{V} . endfm show all . set print mixfix off . show all . set print mixfix on . **** mapping AC ops to terms fth T is sort Elt . op f : Elt Elt -> Elt [assoc comm] . endfth fmod M{X :: T} is op g : X$Elt X$Elt -> X$Elt . vars A B : X$Elt . eq g(A, B) = f(A, B, A, B) . endfm show all . view V from T to NAT is sort Elt to Nat . op f(X:Elt, Y:Elt) to term X:Nat + Y:Nat . endv fmod TEST is inc M{V} . endfm show all . set print mixfix off . show all . fth T is sort Elt . op f : Elt Elt -> Elt [assoc comm] . endfth fmod M{X :: T} is op g : X$Elt X$Elt -> X$Elt . vars A B : X$Elt . eq g(A, B) = f(A, B, A, B) . endfm show all . view V from T to INT is sort Elt to Int . op f(X:Elt, Y:Elt) to term X:Int - s Y:Int . endv fmod TEST is inc M{V} . endfm show all . set print mixfix off . show all . set print mixfix on . *** what if toTerm contains polymorph instances? fth T is sort Elt . op f : Elt Elt -> Elt [assoc comm] . endfth fmod M{X :: T} is op g : X$Elt X$Elt -> X$Elt . vars A B : X$Elt . eq g(A, B) = f(A, B, A, B) . endfm show all . view V from T to NAT is sort Elt to Nat . op f(X:Elt, Y:Elt) to term if X:Nat > Y:Nat then X:Nat else Y:Nat fi . endv fmod TEST is inc M{V} . endfm show all . set print mixfix off . show all . set print mixfix off . red g(5, 4) . *** check handling of illegal stuff *** summing modules with free parameters fmod FOO{X :: TRIV} is inc (LIST + SET){X} . endfm *** summing modules with bound parameters fmod FOO{X :: TRIV} is inc LIST{X} + SET{X} . endfm *** Now LEGAL *** passing a PEM in a nonfinal instantiation fmod FOO{X :: STRICT-WEAK-ORDER, Y :: TRIV} is inc MAP{STRICT-WEAK-ORDER, Y}{X} . endfm *** illegally overriding an operator from a parameter theory fth T is sort Elt . op f : Elt -> Elt . endfth view V from T to NAT is sort Elt to NzNat . op f(X:Elt) to term X:NzNat . endv fmod MOD{M :: T} is op f : M$Elt -> M$Elt . endfm fmod TEST is protecting MOD{V} . endfm Maude-Maude3.5.1/tests/Misc/parameterization.expected0000664000175000017510000073616715036121435022242 0ustar nileshnileshfmod BAZ is sorts Bool Zero NzNat Nat NzInt Int PosRat NzRat Rat Foo{Rat,Nat} . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat NzInt < Int . subsort NzNat < PosRat . subsorts NzInt PosRat < NzRat . subsorts NzRat Int < Rat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : PosRat PosRat -> PosRat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : PosRat Nat -> PosRat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Rat Rat -> Rat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : PosRat PosRat -> PosRat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzRat NzRat -> NzRat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Rat Rat -> Rat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : PosRat PosRat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Rat NzRat -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Rat NzRat -> Rat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : PosRat Nat -> PosRat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzRat Nat -> NzRat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Rat Nat -> Rat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Rat] [Rat] [Rat] -> [Rat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzRat Rat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzRat NzRat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : PosRat PosRat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzRat NzRat -> NzRat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : PosRat Rat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzRat NzRat -> NzRat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzRat Rat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzRat -> NzRat [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Rat -> Rat [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Rat Rat -> Rat [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzRat -> PosRat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Rat -> Rat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzInt NzNat -> NzRat [ctor prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzNat NzNat -> PosRat [ctor prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : PosRat PosRat -> PosRat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzRat NzRat -> NzRat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : Rat NzRat -> Rat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op trunc : PosRat -> Nat . op trunc : Rat -> Int . op frac : Rat -> Rat . op floor : PosRat -> Nat . op floor : Rat -> Int . op ceiling : PosRat -> NzNat . op ceiling : Rat -> Int . op g : Bool -> Bool . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq 0 / Q:NzRat = 0 . eq I:NzInt / - N:NzNat = - I:NzInt / N:NzNat . eq I:NzInt / N:NzNat / (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) / (J:NzInt * N:NzNat) . eq I:NzInt / N:NzNat / J:NzInt = I:NzInt / (J:NzInt * N:NzNat) . eq I:NzInt / (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) / J:NzInt . eq - (I:NzInt / N:NzNat) = - I:NzInt / N:NzNat . eq I:NzInt / N:NzNat + J:NzInt / M:NzNat = (I:NzInt * M:NzNat + J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq K:Int + I:NzInt / N:NzNat = (I:NzInt + N:NzNat * K:Int) / N:NzNat . eq I:NzInt / N:NzNat - J:NzInt / M:NzNat = (I:NzInt * M:NzNat - J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq I:NzInt / N:NzNat - K:Int = (I:NzInt - N:NzNat * K:Int) / N:NzNat . eq K:Int - J:NzInt / M:NzNat = (M:NzNat * K:Int - J:NzInt) / M:NzNat . eq 0 * Q:NzRat = 0 . eq (I:NzInt / N:NzNat) * (J:NzInt / M:NzNat) = (I:NzInt * J:NzInt) / (N:NzNat * M:NzNat) . eq K:Int * (I:NzInt / N:NzNat) = (I:NzInt * K:Int) / N:NzNat . eq I:NzInt / N:NzNat quo Q:NzRat = I:NzInt quo (Q:NzRat * N:NzNat) . eq K:Int quo (J:NzInt / M:NzNat) = (M:NzNat * K:Int) quo J:NzInt . eq I:NzInt / N:NzNat rem (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) rem ( J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq K:Int rem (J:NzInt / M:NzNat) = (M:NzNat * K:Int) rem J:NzInt / M:NzNat . eq I:NzInt / N:NzNat rem J:NzInt = I:NzInt rem (J:NzInt * N:NzNat) / N:NzNat . eq (I:NzInt / N:NzNat) ^ Z:Nat = I:NzInt ^ Z:Nat / N:NzNat ^ Z:Nat . eq abs(I:NzInt / N:NzNat) = abs(I:NzInt) / N:NzNat . eq gcd(R:Rat, I:NzInt / N:NzNat) = gcd(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq lcm(R:Rat, I:NzInt / N:NzNat) = lcm(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq min(R:Rat, I:NzInt / N:NzNat) = min(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq max(R:Rat, I:NzInt / N:NzNat) = max(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq I:NzInt / N:NzNat < J:NzInt / M:NzNat = I:NzInt * M:NzNat < J:NzInt * N:NzNat . eq I:NzInt / N:NzNat < K:Int = I:NzInt < N:NzNat * K:Int . eq K:Int < J:NzInt / M:NzNat = M:NzNat * K:Int < J:NzInt . eq I:NzInt / N:NzNat <= J:NzInt / M:NzNat = I:NzInt * M:NzNat <= J:NzInt * N:NzNat . eq I:NzInt / N:NzNat <= K:Int = I:NzInt <= N:NzNat * K:Int . eq K:Int <= J:NzInt / M:NzNat = M:NzNat * K:Int <= J:NzInt . eq I:NzInt / N:NzNat > J:NzInt / M:NzNat = I:NzInt * M:NzNat > J:NzInt * N:NzNat . eq I:NzInt / N:NzNat > K:Int = I:NzInt > N:NzNat * K:Int . eq K:Int > J:NzInt / M:NzNat = M:NzNat * K:Int > J:NzInt . eq I:NzInt / N:NzNat >= J:NzInt / M:NzNat = I:NzInt * M:NzNat >= J:NzInt * N:NzNat . eq I:NzInt / N:NzNat >= K:Int = I:NzInt >= N:NzNat * K:Int . eq K:Int >= J:NzInt / M:NzNat = M:NzNat * K:Int >= J:NzInt . eq I:NzInt / N:NzNat divides K:Int = I:NzInt divides N:NzNat * K:Int . eq Q:NzRat divides J:NzInt / M:NzNat = Q:NzRat * M:NzNat divides J:NzInt . eq trunc(K:Int) = K:Int . eq trunc(I:NzInt / N:NzNat) = I:NzInt quo N:NzNat . eq frac(K:Int) = 0 . eq frac(I:NzInt / N:NzNat) = I:NzInt rem N:NzNat / N:NzNat . eq floor(K:Int) = K:Int . eq ceiling(K:Int) = K:Int . eq floor(N:NzNat / M:NzNat) = N:NzNat quo M:NzNat . eq ceiling(N:NzNat / M:NzNat) = ((N:NzNat + M:NzNat) - 1) quo M:NzNat . eq floor(- N:NzNat / M:NzNat) = - ceiling(N:NzNat / M:NzNat) . eq ceiling(- N:NzNat / M:NzNat) = - floor(N:NzNat / M:NzNat) . endfm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fmod FOO fmod BAR fmod BAZ fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) fth Z :: TRIV fmod FOO{[Z], Nat} fmod BAR * (op f : [Bool] -> [Bool] to g) fmod FOO{[Z], Nat} * (op f : [Bool] -> [Bool] to g) fmod (BAR * (op f : [Bool] -> [Bool] to g)){Rat} fmod FOO{Rat, Nat} fmod FOO{Rat, Nat} * (op f : [Bool] -> [Bool] to g) fmod BAZ is sorts Bool Zero NzNat Nat NzInt Int PosRat NzRat Rat Bar{Nat,Rat} . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat NzInt < Int . subsort NzNat < PosRat . subsorts NzInt PosRat < NzRat . subsorts NzRat Int < Rat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : PosRat PosRat -> PosRat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : PosRat Nat -> PosRat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Rat Rat -> Rat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : PosRat PosRat -> PosRat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzRat NzRat -> NzRat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Rat Rat -> Rat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : PosRat PosRat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Rat NzRat -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Rat NzRat -> Rat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : PosRat Nat -> PosRat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzRat Nat -> NzRat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Rat Nat -> Rat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Rat] [Rat] [Rat] -> [Rat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzRat Rat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzRat NzRat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : PosRat PosRat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzRat NzRat -> NzRat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : PosRat Rat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzRat NzRat -> NzRat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzRat Rat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzRat -> NzRat [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Rat -> Rat [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Rat Rat -> Rat [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzRat -> PosRat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Rat -> Rat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzInt NzNat -> NzRat [ctor prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzNat NzNat -> PosRat [ctor prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : PosRat PosRat -> PosRat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzRat NzRat -> NzRat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : Rat NzRat -> Rat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op trunc : PosRat -> Nat . op trunc : Rat -> Int . op frac : Rat -> Rat . op floor : PosRat -> Nat . op floor : Rat -> Int . op ceiling : PosRat -> NzNat . op ceiling : Rat -> Int . op g : Bar{Nat,Rat} -> Bar{Nat,Rat} . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq 0 / Q:NzRat = 0 . eq I:NzInt / - N:NzNat = - I:NzInt / N:NzNat . eq I:NzInt / N:NzNat / (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) / (J:NzInt * N:NzNat) . eq I:NzInt / N:NzNat / J:NzInt = I:NzInt / (J:NzInt * N:NzNat) . eq I:NzInt / (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) / J:NzInt . eq - (I:NzInt / N:NzNat) = - I:NzInt / N:NzNat . eq I:NzInt / N:NzNat + J:NzInt / M:NzNat = (I:NzInt * M:NzNat + J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq K:Int + I:NzInt / N:NzNat = (I:NzInt + N:NzNat * K:Int) / N:NzNat . eq I:NzInt / N:NzNat - J:NzInt / M:NzNat = (I:NzInt * M:NzNat - J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq I:NzInt / N:NzNat - K:Int = (I:NzInt - N:NzNat * K:Int) / N:NzNat . eq K:Int - J:NzInt / M:NzNat = (M:NzNat * K:Int - J:NzInt) / M:NzNat . eq 0 * Q:NzRat = 0 . eq (I:NzInt / N:NzNat) * (J:NzInt / M:NzNat) = (I:NzInt * J:NzInt) / (N:NzNat * M:NzNat) . eq K:Int * (I:NzInt / N:NzNat) = (I:NzInt * K:Int) / N:NzNat . eq I:NzInt / N:NzNat quo Q:NzRat = I:NzInt quo (Q:NzRat * N:NzNat) . eq K:Int quo (J:NzInt / M:NzNat) = (M:NzNat * K:Int) quo J:NzInt . eq I:NzInt / N:NzNat rem (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) rem ( J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq K:Int rem (J:NzInt / M:NzNat) = (M:NzNat * K:Int) rem J:NzInt / M:NzNat . eq I:NzInt / N:NzNat rem J:NzInt = I:NzInt rem (J:NzInt * N:NzNat) / N:NzNat . eq (I:NzInt / N:NzNat) ^ Z:Nat = I:NzInt ^ Z:Nat / N:NzNat ^ Z:Nat . eq abs(I:NzInt / N:NzNat) = abs(I:NzInt) / N:NzNat . eq gcd(R:Rat, I:NzInt / N:NzNat) = gcd(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq lcm(R:Rat, I:NzInt / N:NzNat) = lcm(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq min(R:Rat, I:NzInt / N:NzNat) = min(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq max(R:Rat, I:NzInt / N:NzNat) = max(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq I:NzInt / N:NzNat < J:NzInt / M:NzNat = I:NzInt * M:NzNat < J:NzInt * N:NzNat . eq I:NzInt / N:NzNat < K:Int = I:NzInt < N:NzNat * K:Int . eq K:Int < J:NzInt / M:NzNat = M:NzNat * K:Int < J:NzInt . eq I:NzInt / N:NzNat <= J:NzInt / M:NzNat = I:NzInt * M:NzNat <= J:NzInt * N:NzNat . eq I:NzInt / N:NzNat <= K:Int = I:NzInt <= N:NzNat * K:Int . eq K:Int <= J:NzInt / M:NzNat = M:NzNat * K:Int <= J:NzInt . eq I:NzInt / N:NzNat > J:NzInt / M:NzNat = I:NzInt * M:NzNat > J:NzInt * N:NzNat . eq I:NzInt / N:NzNat > K:Int = I:NzInt > N:NzNat * K:Int . eq K:Int > J:NzInt / M:NzNat = M:NzNat * K:Int > J:NzInt . eq I:NzInt / N:NzNat >= J:NzInt / M:NzNat = I:NzInt * M:NzNat >= J:NzInt * N:NzNat . eq I:NzInt / N:NzNat >= K:Int = I:NzInt >= N:NzNat * K:Int . eq K:Int >= J:NzInt / M:NzNat = M:NzNat * K:Int >= J:NzInt . eq I:NzInt / N:NzNat divides K:Int = I:NzInt divides N:NzNat * K:Int . eq Q:NzRat divides J:NzInt / M:NzNat = Q:NzRat * M:NzNat divides J:NzInt . eq trunc(K:Int) = K:Int . eq trunc(I:NzInt / N:NzNat) = I:NzInt quo N:NzNat . eq frac(K:Int) = 0 . eq frac(I:NzInt / N:NzNat) = I:NzInt rem N:NzNat / N:NzNat . eq floor(K:Int) = K:Int . eq ceiling(K:Int) = K:Int . eq floor(N:NzNat / M:NzNat) = N:NzNat quo M:NzNat . eq ceiling(N:NzNat / M:NzNat) = ((N:NzNat + M:NzNat) - 1) quo M:NzNat . eq floor(- N:NzNat / M:NzNat) = - ceiling(N:NzNat / M:NzNat) . eq ceiling(- N:NzNat / M:NzNat) = - floor(N:NzNat / M:NzNat) . endfm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fmod FOO fmod BAR fmod BAZ fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) fth Z :: TRIV fmod FOO{[Z], Nat} fmod FOO{Rat, Nat} fmod BAR * (sort Foo{Z,Nat} to Bar{Nat,Z}, op f : [Foo{Z,Nat}] -> [Foo{Z,Nat}] to g) fmod FOO{[Z], Nat} * (sort Foo{Z,Nat} to Bar{Nat,Z}, op f : [Foo{Z,Nat}] -> [ Foo{Z,Nat}] to g) fmod (BAR * (sort Foo{Z,Nat} to Bar{Nat,Z}, op f : [Foo{Z,Nat}] -> [Foo{Z,Nat}] to g)){Rat} fmod FOO{Rat, Nat} * (sort Foo{Rat,Nat} to Bar{Nat,Rat}, op f : [Foo{Rat,Nat}] -> [Foo{Rat,Nat}] to g) fmod BAZ is sorts Bool Zero NzNat Nat NzInt Int PosRat NzRat Rat Bar{Nat,Rat} . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat NzInt < Int . subsort NzNat < PosRat . subsorts NzInt PosRat < NzRat . subsorts NzRat Int < Rat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : PosRat PosRat -> PosRat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : PosRat Nat -> PosRat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Rat Rat -> Rat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : PosRat PosRat -> PosRat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzRat NzRat -> NzRat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Rat Rat -> Rat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : PosRat PosRat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Rat NzRat -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Rat NzRat -> Rat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : PosRat Nat -> PosRat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzRat Nat -> NzRat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Rat Nat -> Rat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Rat] [Rat] [Rat] -> [Rat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzRat Rat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzRat NzRat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : PosRat PosRat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzRat NzRat -> NzRat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : PosRat Rat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzRat NzRat -> NzRat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzRat Rat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzRat -> NzRat [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Rat -> Rat [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Rat Rat -> Rat [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzRat -> PosRat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Rat -> Rat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzInt NzNat -> NzRat [ctor prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzNat NzNat -> PosRat [ctor prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : PosRat PosRat -> PosRat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzRat NzRat -> NzRat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : Rat NzRat -> Rat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op trunc : PosRat -> Nat . op trunc : Rat -> Int . op frac : Rat -> Rat . op floor : PosRat -> Nat . op floor : Rat -> Int . op ceiling : PosRat -> NzNat . op ceiling : Rat -> Int . op g : Bar{Nat,Rat} -> Bar{Nat,Rat} . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq 0 / Q:NzRat = 0 . eq I:NzInt / - N:NzNat = - I:NzInt / N:NzNat . eq I:NzInt / N:NzNat / (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) / (J:NzInt * N:NzNat) . eq I:NzInt / N:NzNat / J:NzInt = I:NzInt / (J:NzInt * N:NzNat) . eq I:NzInt / (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) / J:NzInt . eq - (I:NzInt / N:NzNat) = - I:NzInt / N:NzNat . eq I:NzInt / N:NzNat + J:NzInt / M:NzNat = (I:NzInt * M:NzNat + J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq K:Int + I:NzInt / N:NzNat = (I:NzInt + N:NzNat * K:Int) / N:NzNat . eq I:NzInt / N:NzNat - J:NzInt / M:NzNat = (I:NzInt * M:NzNat - J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq I:NzInt / N:NzNat - K:Int = (I:NzInt - N:NzNat * K:Int) / N:NzNat . eq K:Int - J:NzInt / M:NzNat = (M:NzNat * K:Int - J:NzInt) / M:NzNat . eq 0 * Q:NzRat = 0 . eq (I:NzInt / N:NzNat) * (J:NzInt / M:NzNat) = (I:NzInt * J:NzInt) / (N:NzNat * M:NzNat) . eq K:Int * (I:NzInt / N:NzNat) = (I:NzInt * K:Int) / N:NzNat . eq I:NzInt / N:NzNat quo Q:NzRat = I:NzInt quo (Q:NzRat * N:NzNat) . eq K:Int quo (J:NzInt / M:NzNat) = (M:NzNat * K:Int) quo J:NzInt . eq I:NzInt / N:NzNat rem (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) rem ( J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq K:Int rem (J:NzInt / M:NzNat) = (M:NzNat * K:Int) rem J:NzInt / M:NzNat . eq I:NzInt / N:NzNat rem J:NzInt = I:NzInt rem (J:NzInt * N:NzNat) / N:NzNat . eq (I:NzInt / N:NzNat) ^ Z:Nat = I:NzInt ^ Z:Nat / N:NzNat ^ Z:Nat . eq abs(I:NzInt / N:NzNat) = abs(I:NzInt) / N:NzNat . eq gcd(R:Rat, I:NzInt / N:NzNat) = gcd(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq lcm(R:Rat, I:NzInt / N:NzNat) = lcm(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq min(R:Rat, I:NzInt / N:NzNat) = min(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq max(R:Rat, I:NzInt / N:NzNat) = max(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq I:NzInt / N:NzNat < J:NzInt / M:NzNat = I:NzInt * M:NzNat < J:NzInt * N:NzNat . eq I:NzInt / N:NzNat < K:Int = I:NzInt < N:NzNat * K:Int . eq K:Int < J:NzInt / M:NzNat = M:NzNat * K:Int < J:NzInt . eq I:NzInt / N:NzNat <= J:NzInt / M:NzNat = I:NzInt * M:NzNat <= J:NzInt * N:NzNat . eq I:NzInt / N:NzNat <= K:Int = I:NzInt <= N:NzNat * K:Int . eq K:Int <= J:NzInt / M:NzNat = M:NzNat * K:Int <= J:NzInt . eq I:NzInt / N:NzNat > J:NzInt / M:NzNat = I:NzInt * M:NzNat > J:NzInt * N:NzNat . eq I:NzInt / N:NzNat > K:Int = I:NzInt > N:NzNat * K:Int . eq K:Int > J:NzInt / M:NzNat = M:NzNat * K:Int > J:NzInt . eq I:NzInt / N:NzNat >= J:NzInt / M:NzNat = I:NzInt * M:NzNat >= J:NzInt * N:NzNat . eq I:NzInt / N:NzNat >= K:Int = I:NzInt >= N:NzNat * K:Int . eq K:Int >= J:NzInt / M:NzNat = M:NzNat * K:Int >= J:NzInt . eq I:NzInt / N:NzNat divides K:Int = I:NzInt divides N:NzNat * K:Int . eq Q:NzRat divides J:NzInt / M:NzNat = Q:NzRat * M:NzNat divides J:NzInt . eq trunc(K:Int) = K:Int . eq trunc(I:NzInt / N:NzNat) = I:NzInt quo N:NzNat . eq frac(K:Int) = 0 . eq frac(I:NzInt / N:NzNat) = I:NzInt rem N:NzNat / N:NzNat . eq floor(K:Int) = K:Int . eq ceiling(K:Int) = K:Int . eq floor(N:NzNat / M:NzNat) = N:NzNat quo M:NzNat . eq ceiling(N:NzNat / M:NzNat) = ((N:NzNat + M:NzNat) - 1) quo M:NzNat . eq floor(- N:NzNat / M:NzNat) = - ceiling(N:NzNat / M:NzNat) . eq ceiling(- N:NzNat / M:NzNat) = - floor(N:NzNat / M:NzNat) . endfm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fmod FOO fmod BAR fmod BAZ fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) fmod FOO{Rat, Nat} fmod FOO{Rat, Nat} * (sort Foo{Rat,Nat} to Bar{Nat,Rat}, op f : [Foo{Rat,Nat}] -> [Foo{Rat,Nat}] to g) fmod FOO{[X], Nat} fmod BAR * (sort Foo{X,Nat} to Bar{Nat,X}, op f : [Foo{X,Nat}] -> [Foo{X,Nat}] to g) fmod FOO{[X], Nat} * (sort Foo{X,Nat} to Bar{Nat,X}, op f : [Foo{X,Nat}] -> [ Foo{X,Nat}] to g) fmod (BAR * (sort Foo{X,Nat} to Bar{Nat,X}, op f : [Foo{X,Nat}] -> [Foo{X,Nat}] to g)){Rat} fmod BAZ is sorts Bool Zero NzNat Nat Foo'{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Nat<} Bar'{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Nat<} . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op f' : Foo'{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Nat<} -> Foo'{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Nat<} . op g' : Bar'{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Nat<} -> Foo'{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Nat<} . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fmod FOO fmod BAR fmod BAZ fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) fmod FOO{[X]} fmod BAR * (sort Foo{X} to Foo'{X}, sort Bar{X} to Bar'{X}, op f : [Foo{X}] -> [Foo{X}] to f', op g : [Bar{X}] -> [Foo{X}] to g') fmod FOO{[X]} * (sort Foo{X} to Foo'{X}, op f : [Foo{X}] -> [Foo{X}] to f') fmod (BAR * (sort Foo{X} to Foo'{X}, sort Bar{X} to Bar'{X}, op f : [Foo{X}] -> [Foo{X}] to f', op g : [Bar{X}] -> [Foo{X}] to g')){STRICT-WEAK-ORDER} fmod FOO{STRICT-WEAK-ORDER} fmod FOO{STRICT-WEAK-ORDER}{[X]} fmod FOO{STRICT-WEAK-ORDER}{[X]} * (sort Foo{STRICT-WEAK-ORDER}{X} to Foo'{ STRICT-WEAK-ORDER}{X}, op f : [Foo{STRICT-WEAK-ORDER}{X}] -> [Foo{ STRICT-WEAK-ORDER}{X}] to f') fmod (BAR * (sort Foo{X} to Foo'{X}, sort Bar{X} to Bar'{X}, op f : [Foo{X}] -> [Foo{X}] to f', op g : [Bar{X}] -> [Foo{X}] to g')){STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER} fmod FOO{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod FOO{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod FOO{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort Foo{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Foo'{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X}, op f : [Foo{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{ X}] -> [Foo{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X}] to f') fmod (BAR * (sort Foo{X} to Foo'{X}, sort Bar{X} to Bar'{X}, op f : [Foo{X}] -> [Foo{X}] to f', op g : [Bar{X}] -> [Foo{X}] to g')){STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{Nat<} fmod FOO{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Nat<} fmod FOO{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Nat<} * (sort Foo{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{Nat<} to Foo'{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{Nat<}, op f : [Foo{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{Nat<}] -> [Foo{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{ Nat<}] to f') fmod TEST is sorts Bool Zero NzNat Nat . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op g : Nat -> Nat . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq g(A:Nat) = 1 + A:Nat + 1 . endfm fmod TEST is sorts Bool Zero NzNat Nat . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _#_ : Nat Nat -> Nat [id: 1 prec 41 gather (E E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq s A:Nat # s B:Nat = s_^2(A:Nat # B:Nat) . endfm ========================================== reduce in TEST : 0 . rewrites: 0 result Zero: 0 fmod TEST is sorts Bool Zero NzNat Nat NzInt Int . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Int] [Int] [Int] -> [Int] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op f : Int -> Int . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq f(A:Int) = - - - - - - - - - - A:Int . endfm fmod TEST is sorts Bool Zero NzNat Nat NzInt Int . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Int] [Int] [Int] -> [Int] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op f : Int -> Int . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq f(A:Int) = ((A:Int * A:Int) * A:Int * A:Int) * (A:Int * A:Int) * A:Int * A:Int . endfm fmod TEST is sorts Bool Zero NzNat Nat . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op g : Nat Nat -> Nat . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq g(A:Nat, B:Nat) = B:Nat + A:Nat + A:Nat + B:Nat . endfm fmod TEST is sorts Bool Zero NzNat Nat NzInt Int . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Int] [Int] [Int] -> [Int] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op g : Int Int -> Int . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq g(A:Int, B:Int) = A:Int - s B:Int - s A:Int - s B:Int . endfm fmod TEST is sorts Bool Zero NzNat Nat NzInt Int . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Int] [Int] [Int] -> [Int] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op g : Int Int -> Int . eq _and_(true, A:Bool) = A:Bool . eq _and_(false, A:Bool) = false . eq _and_(A:Bool, A:Bool) = A:Bool . eq _xor_(false, A:Bool) = A:Bool . eq _xor_(A:Bool, A:Bool) = false . eq _and_(A:Bool, _xor_(B:Bool, C:Bool)) = _xor_(_and_(A:Bool, B:Bool), _and_( A:Bool, C:Bool)) . eq not_(A:Bool) = _xor_(true, A:Bool) . eq _or_(A:Bool, B:Bool) = _xor_(_and_(A:Bool, B:Bool), _xor_(A:Bool, B:Bool)) . eq _implies_(A:Bool, B:Bool) = not_(_xor_(A:Bool, _and_(A:Bool, B:Bool))) . eq g(A:Int, B:Int) = _-_(_-_(_-_(A:Int, s_(B:Int)), s_(A:Int)), s_(B:Int)) . endfm fmod M{X :: T} is sorts X$Elt Bool . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op f : X$Elt X$Elt -> X$Elt [assoc comm] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op g : X$Elt X$Elt -> X$Elt . var A : X$Elt . var B : X$Elt . eq g(A, B) = f(A, A, B, B) . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm fmod TEST is sorts Bool Zero NzNat Nat . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op g : Nat Nat -> Nat . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq g(A:Nat, B:Nat) = B:Nat + B:Nat + A:Nat + A:Nat . endfm fmod TEST is sorts Bool Zero NzNat Nat . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op g : Nat Nat -> Nat . eq _and_(true, A:Bool) = A:Bool . eq _and_(false, A:Bool) = false . eq _and_(A:Bool, A:Bool) = A:Bool . eq _xor_(false, A:Bool) = A:Bool . eq _xor_(A:Bool, A:Bool) = false . eq _and_(A:Bool, _xor_(B:Bool, C:Bool)) = _xor_(_and_(A:Bool, B:Bool), _and_( A:Bool, C:Bool)) . eq not_(A:Bool) = _xor_(true, A:Bool) . eq _or_(A:Bool, B:Bool) = _xor_(_and_(A:Bool, B:Bool), _xor_(A:Bool, B:Bool)) . eq _implies_(A:Bool, B:Bool) = not_(_xor_(A:Bool, _and_(A:Bool, B:Bool))) . eq g(A:Nat, B:Nat) = _+_(B:Nat, _+_(B:Nat, _+_(A:Nat, A:Nat))) . endfm fmod M{X :: T} is sorts X$Elt Bool . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op f : X$Elt X$Elt -> X$Elt [assoc comm] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op g : X$Elt X$Elt -> X$Elt . var A : X$Elt . var B : X$Elt . eq g(A, B) = f(A, A, B, B) . eq _and_(true, A:Bool) = A:Bool . eq _and_(false, A:Bool) = false . eq _and_(A:Bool, A:Bool) = A:Bool . eq _xor_(false, A:Bool) = A:Bool . eq _xor_(A:Bool, A:Bool) = false . eq _and_(A:Bool, _xor_(B:Bool, C:Bool)) = _xor_(_and_(A:Bool, B:Bool), _and_( A:Bool, C:Bool)) . eq not_(A:Bool) = _xor_(true, A:Bool) . eq _or_(A:Bool, B:Bool) = _xor_(_and_(A:Bool, B:Bool), _xor_(A:Bool, B:Bool)) . eq _implies_(A:Bool, B:Bool) = not_(_xor_(A:Bool, _and_(A:Bool, B:Bool))) . endfm fmod TEST is sorts Bool Zero NzNat Nat NzInt Int . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Int] [Int] [Int] -> [Int] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op g : Int Int -> Int . eq _and_(true, A:Bool) = A:Bool . eq _and_(false, A:Bool) = false . eq _and_(A:Bool, A:Bool) = A:Bool . eq _xor_(false, A:Bool) = A:Bool . eq _xor_(A:Bool, A:Bool) = false . eq _and_(A:Bool, _xor_(B:Bool, C:Bool)) = _xor_(_and_(A:Bool, B:Bool), _and_( A:Bool, C:Bool)) . eq not_(A:Bool) = _xor_(true, A:Bool) . eq _or_(A:Bool, B:Bool) = _xor_(_and_(A:Bool, B:Bool), _xor_(A:Bool, B:Bool)) . eq _implies_(A:Bool, B:Bool) = not_(_xor_(A:Bool, _and_(A:Bool, B:Bool))) . eq g(A:Int, B:Int) = _-_(_-_(_-_(A:Int, s_(A:Int)), s_(B:Int)), s_(B:Int)) . endfm fmod TEST is sorts Bool Zero NzNat Nat NzInt Int . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Int] [Int] [Int] -> [Int] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op g : Int Int -> Int . eq _and_(true, A:Bool) = A:Bool . eq _and_(false, A:Bool) = false . eq _and_(A:Bool, A:Bool) = A:Bool . eq _xor_(false, A:Bool) = A:Bool . eq _xor_(A:Bool, A:Bool) = false . eq _and_(A:Bool, _xor_(B:Bool, C:Bool)) = _xor_(_and_(A:Bool, B:Bool), _and_( A:Bool, C:Bool)) . eq not_(A:Bool) = _xor_(true, A:Bool) . eq _or_(A:Bool, B:Bool) = _xor_(_and_(A:Bool, B:Bool), _xor_(A:Bool, B:Bool)) . eq _implies_(A:Bool, B:Bool) = not_(_xor_(A:Bool, _and_(A:Bool, B:Bool))) . eq g(A:Int, B:Int) = _-_(_-_(_-_(A:Int, s_(A:Int)), s_(B:Int)), s_(B:Int)) . endfm fmod M{X :: T} is sorts X$Elt Bool . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op f : X$Elt X$Elt -> X$Elt [assoc comm] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op g : X$Elt X$Elt -> X$Elt . var A : X$Elt . var B : X$Elt . eq g(A, B) = f(A, A, B, B) . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm fmod TEST is sorts Bool Zero NzNat Nat . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op g : Nat Nat -> Nat . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq g(A:Nat, B:Nat) = if if if A:Nat > A:Nat then A:Nat else A:Nat fi > B:Nat then if A:Nat > A:Nat then A:Nat else A:Nat fi else B:Nat fi > B:Nat then if if A:Nat > A:Nat then A:Nat else A:Nat fi > B:Nat then if A:Nat > A:Nat then A:Nat else A:Nat fi else B:Nat fi else B:Nat fi . endfm fmod TEST is sorts Bool Zero NzNat Nat . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op g : Nat Nat -> Nat . eq _and_(true, A:Bool) = A:Bool . eq _and_(false, A:Bool) = false . eq _and_(A:Bool, A:Bool) = A:Bool . eq _xor_(false, A:Bool) = A:Bool . eq _xor_(A:Bool, A:Bool) = false . eq _and_(A:Bool, _xor_(B:Bool, C:Bool)) = _xor_(_and_(A:Bool, B:Bool), _and_( A:Bool, C:Bool)) . eq not_(A:Bool) = _xor_(true, A:Bool) . eq _or_(A:Bool, B:Bool) = _xor_(_and_(A:Bool, B:Bool), _xor_(A:Bool, B:Bool)) . eq _implies_(A:Bool, B:Bool) = not_(_xor_(A:Bool, _and_(A:Bool, B:Bool))) . eq g(A:Nat, B:Nat) = if_then_else_fi(_>_(if_then_else_fi(_>_(if_then_else_fi( _>_(A:Nat, A:Nat), A:Nat, A:Nat), B:Nat), if_then_else_fi(_>_(A:Nat, A:Nat), A:Nat, A:Nat), B:Nat), B:Nat), if_then_else_fi(_>_(if_then_else_fi( _>_(A:Nat, A:Nat), A:Nat, A:Nat), B:Nat), if_then_else_fi(_>_(A:Nat, A:Nat), A:Nat, A:Nat), B:Nat), B:Nat) . endfm ========================================== reduce in TEST : g(5, 4) . rewrites: 7 result NzNat: 5 Warning: summand module LIST has free parameters. Warning: , line 326 (fmod FOO): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: Instantiation MAP{STRICT-WEAK-ORDER, Y} uses both a theory-view and a parameter from enclosing module FOO. Warning: , line 339 (fmod FOO): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 356 (fmod MOD): operator declaration for operation f subsort overloads an operator of the same name from a parameter. Warning: , line 355 (fmod MOD): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 360 (fmod TEST): unable to use module MOD due to unpatchable errors. Warning: , line 359 (fmod TEST): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Bye. Maude-Maude3.5.1/tests/Misc/parameterization0000775000175000017510000000037415036121435020425 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/parameterization.maude -no-banner -no-advise \ > parameterization.out 2>&1 diff $srcdir/parameterization.expected parameterization.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/narrow2.maude0000664000175000017510000001424615036121435017533 0ustar nileshnileshset show timing off . *** *** Examples provided by Jose Meseguer, tested with new features. *** mod R&W is protecting NAT . sort Config . op <_,_> : Nat Nat -> Config [ctor] . --- readers/writers vars R W : Nat . rl < 0, 0 > => < 0, s(0) > [narrowing] . rl < R, s(W) > => < R, W > [narrowing] . rl < R, 0 > => < s(R), 0 > [narrowing] . rl < s(R), W > => < R, W > [narrowing] . endm *** checking mutual exclusion invariant {fold} vu-narrow < R, 0 > \/ < 0, s(0) > =>* < s(N:Nat),s(M:Nat) > . show most general states . show frontier states . *** checking at most one writer invariant {fold} vu-narrow < R, 0 > \/ < 0, s(0) > =>* < N:Nat,s(s(M:Nat)) > . show most general states . show frontier states . *** checking mutual exclusion invariant {vfold} vu-narrow < R, 0 > \/ < 0, s(0) > =>* < s(N:Nat),s(M:Nat) > . show most general states . show frontier states . *** checking at most one writer invariant {vfold} vu-narrow < R, 0 > \/ < 0, s(0) > =>* < N:Nat,s(s(M:Nat)) > . show most general states . show frontier states . ************************ mod R&W-FAIR is sorts NzNat Nat Conf . subsorts NzNat < Nat . op 0 : -> Nat [ctor] . op 1 : -> NzNat [ctor] . op _+_ : Nat Nat -> Nat [ctor assoc comm id: 0] . op _+_ : NzNat Nat -> NzNat [ctor assoc comm id: 0] . op [_]<_,_>[_|_] : Nat Nat Nat Nat Nat -> Conf . op init : NzNat -> Conf . vars N M M1 K K1 I J N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 : Nat . var N' N'' M' M'' Z' Z'' Q' Q'' : NzNat . eq init(N') = [N']< 0,0 >[ 0 | N'] . rl [w-in] : [N]< 0,0 >[ 0 | N] => [N]< 0,1 >[0 | N] [narrowing] . rl [w-out] : [N]< 0,1 >[ 0 | N] => [N]< 0,0 >[N | 0] [narrowing] . rl [r-in] : [K + N + M + 1]< N,0 >[M + 1 | K] => [K + N + M + 1]< N + 1,0 >[M | K] [narrowing] . rl [r-out] : [K + N + M + 1]< N + 1,0 >[M | K] => [K + N + M + 1]< N,0 >[M | K + 1] [narrowing] . endm *** checking mutual exclusion invariant {fold} vu-narrow [Z']< 0,0 >[ 0 | Z'] \/ [Z'']< 0,1 >[ 0 | Z''] \/ [N' + K + M]< M,0 >[N' | K] \/ [N'' + I + J]< N'',0 >[J | I] \/ [M' + K1 + M1]< M1,0 >[K1 | M'] \/ [1 + N1 + N2]< 1 + N1, 0 >[0 | N2] \/ [1 + N3 + N4]< 0, 0 >[N3 | 1 + N4] \/ [1 + N5 + N6]< N5, 0 >[0 | 1 + N6] \/ [1 + N7]< 0, 1 >[0 | 1 + N7] \/ [1 + N8]< 0, 0 >[1 + N8 | 0] =>* [M'']< Q', Q'' >[N9 | N10] . show most general states . show frontier states . *** checking at most one writer invariant {fold} vu-narrow [Z']< 0,0 >[ 0 | Z'] \/ [Z'']< 0,1 >[ 0 | Z''] \/ [N' + K + M]< M,0 >[N' | K] \/ [N'' + I + J]< N'',0 >[J | I] \/ [M' + K1 + M1]< M1,0 >[K1 | M'] \/ [1 + N1 + N2]< 1 + N1, 0 >[0 | N2] \/ [1 + N3 + N4]< 0, 0 >[N3 | 1 + N4] \/ [1 + N5 + N6]< N5, 0 >[0 | 1 + N6] \/ [1 + N7]< 0, 1 >[0 | 1 + N7] \/ [1 + N8]< 0, 0 >[1 + N8 | 0] =>* [M'']< N9, Q' + 1 >[N9 | N10] . show most general states . show frontier states . *** checking mutual exclusion invariant {vfold} vu-narrow [Z']< 0,0 >[ 0 | Z'] \/ [Z'']< 0,1 >[ 0 | Z''] \/ [N' + K + M]< M,0 >[N' | K] \/ [N'' + I + J]< N'',0 >[J | I] \/ [M' + K1 + M1]< M1,0 >[K1 | M'] \/ [1 + N1 + N2]< 1 + N1, 0 >[0 | N2] \/ [1 + N3 + N4]< 0, 0 >[N3 | 1 + N4] \/ [1 + N5 + N6]< N5, 0 >[0 | 1 + N6] \/ [1 + N7]< 0, 1 >[0 | 1 + N7] \/ [1 + N8]< 0, 0 >[1 + N8 | 0] =>* [M'']< Q', Q'' >[N9 | N10] . show most general states . show frontier states . *** checking at most one writer invariant {vfold} vu-narrow [Z']< 0,0 >[ 0 | Z'] \/ [Z'']< 0,1 >[ 0 | Z''] \/ [N' + K + M]< M,0 >[N' | K] \/ [N'' + I + J]< N'',0 >[J | I] \/ [M' + K1 + M1]< M1,0 >[K1 | M'] \/ [1 + N1 + N2]< 1 + N1, 0 >[0 | N2] \/ [1 + N3 + N4]< 0, 0 >[N3 | 1 + N4] \/ [1 + N5 + N6]< N5, 0 >[0 | 1 + N6] \/ [1 + N7]< 0, 1 >[0 | 1 + N7] \/ [1 + N8]< 0, 0 >[1 + N8 | 0] =>* [M'']< N9, Q' + 1 >[N9 | N10] . show most general states . show frontier states . ************************ fmod NAT-LIST is sort Nat List . subsort Nat < List . op 0 : -> Nat . op s : Nat -> Nat . op nil : -> List . op _;_ : List List -> List [assoc id: nil] . endfm mod COMM is protecting NAT-LIST . protecting TRUTH-VALUE . sorts Oid Sender Receiver Msg Conf State . subsorts Sender Receiver Msg < Conf . op o : Nat -> Oid . ops a b : -> Oid . *** Skolem constants used as parameters op null : -> Conf . op _ _ : Conf Conf -> Conf [assoc comm id: null] . op < _ :Snd | buff: _ , rec: _ , cnt: _ , rack: _ > : Oid List Oid Nat Bool -> Sender . op < _ :Rec | buff: _ , snd: _ , cnt: _ > : Oid List Oid Nat -> Receiver . op [_]{_} : List Conf -> State . op to_from_val_cnt_ : Oid Oid Nat Nat -> Msg . op to_from_ack_ : Oid Oid Nat -> Msg . vars N N' M K I J : Nat . var L Q R Q1 R1 Q2 R2 Q3 R3 : List . vars A B : Oid . var C : Conf . var BV : Bool . rl [snd] : [Q]{C < A :Snd | buff: (N ; L), rec: B, cnt: M , rack: true >} => [Q]{C (to B from A val N cnt M) < A :Snd | buff: L, rec: B, cnt: M, rack: false >} [narrowing] . rl [rec] : [Q]{C (to B from A val N cnt M) < B :Rec | buff: L, snd: A, cnt: M >} => [Q]{C < B :Rec | buff: (L ; N), snd: A, cnt: s(M) > (to A from B ack M)} [narrowing] . rl [rack] : [Q]{C (to A from B ack M) < A :Snd | buff: L, rec: B, cnt: M , rack: false >} => [Q]{C < A :Snd | buff: L, rec: B, cnt: s(M), rack: true >} [narrowing] . endm {fold} vu-narrow [Q ; R]{< a :Snd | buff: R , rec: b, cnt: M, rack: true > < b :Rec | buff: Q, snd: a, cnt: M >} \/ [Q1 ; N ; R1]{< a :Snd | buff: R1 , rec: b, cnt: K, rack: false > (to b from a val N cnt K) < b :Rec | buff: Q1, snd: a, cnt: K >} \/ [Q2 ; N' ; R2]{< a :Snd | buff: R2 , rec: b, cnt: J, rack: false > (to a from b ack J) < b :Rec | buff: (Q2 ; N'), snd: a, cnt: s(J) >} =>* [L]{C < a :Snd | buff: R3 , rec: b, cnt: I, rack: BV > < b :Rec | buff: Q3, snd: a, cnt: s(s(I)) >} . show most general states . show frontier states . {vfold} vu-narrow [Q ; R]{< a :Snd | buff: R , rec: b, cnt: M, rack: true > < b :Rec | buff: Q, snd: a, cnt: M >} \/ [Q1 ; N ; R1]{< a :Snd | buff: R1 , rec: b, cnt: K, rack: false > (to b from a val N cnt K) < b :Rec | buff: Q1, snd: a, cnt: K >} \/ [Q2 ; N' ; R2]{< a :Snd | buff: R2 , rec: b, cnt: J, rack: false > (to a from b ack J) < b :Rec | buff: (Q2 ; N'), snd: a, cnt: s(J) >} =>* [L]{C < a :Snd | buff: R3 , rec: b, cnt: I, rack: BV > < b :Rec | buff: Q3, snd: a, cnt: s(s(I)) >} . show most general states . show frontier states . Maude-Maude3.5.1/tests/Misc/narrow2.expected0000664000175000017510000001352015036121435020233 0ustar nileshnilesh========================================== {fold} vu-narrow in R&W : < R, 0 > \/ < 0, 1 > =>* < s N:Nat, s M:Nat > . No solution. rewrites: 4 < #1:Nat, 0 > \/ < 0, 1 > *** frontier is empty *** ========================================== {fold} vu-narrow in R&W : < R, 0 > \/ < 0, 1 > =>* < N:Nat, s s M:Nat > . No solution. rewrites: 4 < #1:Nat, 0 > \/ < 0, 1 > *** frontier is empty *** ========================================== {vfold} vu-narrow in R&W : < R, 0 > \/ < 0, 1 > =>* < s N:Nat, s M:Nat > . No solution. rewrites: 4 < #1:Nat, 0 > \/ < 0, 1 > *** frontier is empty *** ========================================== {vfold} vu-narrow in R&W : < R, 0 > \/ < 0, 1 > =>* < N:Nat, s s M:Nat > . No solution. rewrites: 4 < #1:Nat, 0 > \/ < 0, 1 > *** frontier is empty *** ========================================== {fold} vu-narrow in R&W-FAIR : [Z']< 0, 0 >[0 | Z'] \/ [Z'']< 0, 1 >[0 | Z''] \/ [N' + M + K]< M, 0 >[N' | K] \/ [N'' + I + J]< N'', 0 >[J | I] \/ [M' + M1 + K1]< M1, 0 >[K1 | M'] \/ [1 + N1 + N2]< 1 + N1, 0 >[0 | N2] \/ [1 + N3 + N4]< 0, 0 >[N3 | 1 + N4] \/ [1 + N5 + N6]< N5, 0 >[0 | 1 + N6] \/ [1 + N7]< 0, 1 >[0 | 1 + N7] \/ [1 + N8]< 0, 0 >[1 + N8 | 0] =>* [M'']< Q', Q'' >[N9 | N10] . No solution. rewrites: 8 [#1:NzNat]< 0, 1 >[0 | #1:NzNat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #2:Nat, 0 >[#1:NzNat | #3:Nat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #1:NzNat, 0 >[#3:Nat | #2:Nat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #2:Nat, 0 >[#3:Nat | #1:NzNat] *** frontier is empty *** ========================================== {fold} vu-narrow in R&W-FAIR : [Z']< 0, 0 >[0 | Z'] \/ [Z'']< 0, 1 >[0 | Z''] \/ [N' + M + K]< M, 0 >[N' | K] \/ [N'' + I + J]< N'', 0 >[J | I] \/ [M' + M1 + K1]< M1, 0 >[K1 | M'] \/ [1 + N1 + N2]< 1 + N1, 0 >[0 | N2] \/ [1 + N3 + N4]< 0, 0 >[N3 | 1 + N4] \/ [1 + N5 + N6]< N5, 0 >[0 | 1 + N6] \/ [1 + N7]< 0, 1 >[0 | 1 + N7] \/ [1 + N8]< 0, 0 >[1 + N8 | 0] =>* [M'']< N9, Q' + 1 >[N9 | N10] . No solution. rewrites: 8 [#1:NzNat]< 0, 1 >[0 | #1:NzNat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #2:Nat, 0 >[#1:NzNat | #3:Nat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #1:NzNat, 0 >[#3:Nat | #2:Nat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #2:Nat, 0 >[#3:Nat | #1:NzNat] *** frontier is empty *** ========================================== {vfold} vu-narrow in R&W-FAIR : [Z']< 0, 0 >[0 | Z'] \/ [Z'']< 0, 1 >[0 | Z''] \/ [N' + M + K]< M, 0 >[N' | K] \/ [N'' + I + J]< N'', 0 >[J | I] \/ [M' + M1 + K1]< M1, 0 >[K1 | M'] \/ [1 + N1 + N2]< 1 + N1, 0 >[0 | N2] \/ [1 + N3 + N4]< 0, 0 >[N3 | 1 + N4] \/ [1 + N5 + N6]< N5, 0 >[0 | 1 + N6] \/ [1 + N7]< 0, 1 >[0 | 1 + N7] \/ [1 + N8]< 0, 0 >[1 + N8 | 0] =>* [M'']< Q', Q'' >[N9 | N10] . No solution. rewrites: 8 [#1:NzNat]< 0, 1 >[0 | #1:NzNat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #2:Nat, 0 >[#1:NzNat | #3:Nat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #1:NzNat, 0 >[#3:Nat | #2:Nat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #2:Nat, 0 >[#3:Nat | #1:NzNat] *** frontier is empty *** ========================================== {vfold} vu-narrow in R&W-FAIR : [Z']< 0, 0 >[0 | Z'] \/ [Z'']< 0, 1 >[0 | Z''] \/ [N' + M + K]< M, 0 >[N' | K] \/ [N'' + I + J]< N'', 0 >[J | I] \/ [M' + M1 + K1]< M1, 0 >[K1 | M'] \/ [1 + N1 + N2]< 1 + N1, 0 >[0 | N2] \/ [1 + N3 + N4]< 0, 0 >[N3 | 1 + N4] \/ [1 + N5 + N6]< N5, 0 >[0 | 1 + N6] \/ [1 + N7]< 0, 1 >[0 | 1 + N7] \/ [1 + N8]< 0, 0 >[1 + N8 | 0] =>* [M'']< N9, Q' + 1 >[N9 | N10] . No solution. rewrites: 8 [#1:NzNat]< 0, 1 >[0 | #1:NzNat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #2:Nat, 0 >[#1:NzNat | #3:Nat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #1:NzNat, 0 >[#3:Nat | #2:Nat] \/ [#1:NzNat + #2:Nat + #3:Nat]< #2:Nat, 0 >[#3:Nat | #1:NzNat] *** frontier is empty *** ========================================== {fold} vu-narrow in COMM : [Q ; R]{< b :Rec | buff: Q, snd: a, cnt: M > < a :Snd | buff: R, rec: b, cnt: M, rack: true >} \/ [Q1 ; N ; R1]{(< b :Rec | buff: Q1, snd: a, cnt: K > to b from a val N cnt K) < a :Snd | buff: R1, rec: b, cnt: K, rack: false >} \/ [Q2 ; N' ; R2]{((to a from b ack J) < b :Rec | buff: Q2 ; N', snd: a, cnt: s(J) >) < a :Snd | buff: R2, rec: b, cnt: J, rack: false >} =>* [L]{C < a :Snd | buff: R3, rec: b, cnt: I, rack: BV > < b :Rec | buff: Q3, snd: a, cnt: s(s(I)) >} . No solution. rewrites: 3 [#1:List ; #2:List]{< b :Rec | buff: #1:List, snd: a, cnt: #3:Nat > < a :Snd | buff: #2:List, rec: b, cnt: #3:Nat, rack: true >} \/ [#1:List ; #2:Nat ; #3:List]{< b :Rec | buff: #1:List, snd: a, cnt: #4:Nat > ( to b from a val #2:Nat cnt #4:Nat) < a :Snd | buff: #3:List, rec: b, cnt: #4:Nat, rack: false >} \/ [#1:List ; #2:Nat ; #3:List]{(to a from b ack #4:Nat) < b :Rec | buff: #1:List ; #2:Nat, snd: a, cnt: s(#4:Nat) > < a :Snd | buff: #3:List, rec: b, cnt: #4:Nat, rack: false >} *** frontier is empty *** ========================================== {vfold} vu-narrow in COMM : [Q ; R]{< b :Rec | buff: Q, snd: a, cnt: M > < a :Snd | buff: R, rec: b, cnt: M, rack: true >} \/ [Q1 ; N ; R1]{(< b :Rec | buff: Q1, snd: a, cnt: K > to b from a val N cnt K) < a :Snd | buff: R1, rec: b, cnt: K, rack: false >} \/ [Q2 ; N' ; R2]{((to a from b ack J) < b :Rec | buff: Q2 ; N', snd: a, cnt: s(J) >) < a :Snd | buff: R2, rec: b, cnt: J, rack: false >} =>* [L]{C < a :Snd | buff: R3, rec: b, cnt: I, rack: BV > < b :Rec | buff: Q3, snd: a, cnt: s(s(I)) >} . No solution. rewrites: 3 [#1:List ; #2:List]{< b :Rec | buff: #1:List, snd: a, cnt: #3:Nat > < a :Snd | buff: #2:List, rec: b, cnt: #3:Nat, rack: true >} \/ [#1:List ; #2:Nat ; #3:List]{< b :Rec | buff: #1:List, snd: a, cnt: #4:Nat > ( to b from a val #2:Nat cnt #4:Nat) < a :Snd | buff: #3:List, rec: b, cnt: #4:Nat, rack: false >} \/ [#1:List ; #2:Nat ; #3:List]{(to a from b ack #4:Nat) < b :Rec | buff: #1:List ; #2:Nat, snd: a, cnt: s(#4:Nat) > < a :Snd | buff: #3:List, rec: b, cnt: #4:Nat, rack: false >} *** frontier is empty *** Bye. Maude-Maude3.5.1/tests/Misc/narrow20000775000175000017510000000033015036121435016431 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/narrow2.maude -no-banner -no-advise \ > narrow2.out 2>&1 diff $srcdir/narrow2.expected narrow2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/narrow.maude0000664000175000017510000000251715036121435017447 0ustar nileshnileshset show timing off . mod BAZ is sort Foo . ops f g h : Foo -> Foo . ops i j k : Foo Foo -> Foo . vars X Y Z W A B C D : Foo . eq j(f(X), Y) = i(f(Y), X) [variant] . rl g(i(X, k(Y, Z))) => f(k(Z, X)) [narrowing] . rl f(k(X, X)) => h(X) [narrowing] . endm set show breakdown on . vu-narrow in BAZ : g(j(A, B)) =>* C . vu-narrow in BAZ : g(j(A, B)) =>+ C . vu-narrow in BAZ : g(j(A, B)) =>! C . vu-narrow [,1] in BAZ : g(j(A, B)) =>! C . vu-narrow [,2] in BAZ : g(j(A, B)) =>! C . vu-narrow [,3] in BAZ : g(j(A, B)) =>! C . vu-narrow [,4] in BAZ : g(j(A, B)) =>! C . vu-narrow [,1] in BAZ : g(j(A, B)) =>* C . vu-narrow [,2] in BAZ : g(j(A, B)) =>* C . vu-narrow [,3] in BAZ : g(j(A, B)) =>* C . fvu-narrow in BAZ : g(j(A, B)) =>* C . fvu-narrow in BAZ : g(j(A, B)) =>+ C . fvu-narrow in BAZ : g(j(A, B)) =>! C . fvu-narrow [,1] in BAZ : g(j(A, B)) =>! C . fvu-narrow [,2] in BAZ : g(j(A, B)) =>! C . fvu-narrow [,3] in BAZ : g(j(A, B)) =>! C . fvu-narrow [,4] in BAZ : g(j(A, B)) =>! C . fvu-narrow [,1] in BAZ : g(j(A, B)) =>* C . fvu-narrow [,2] in BAZ : g(j(A, B)) =>* C . fvu-narrow [,3] in BAZ : g(j(A, B)) =>* C . mod FOO is sort Foo . ops f g h : Foo -> Foo . op i : Foo Foo -> Foo . vars X Y Z W A B C D : Foo . rl i(f(X), h(Y)) => g(f(X)) [narrowing] . endm vu-narrow i(A, B) =>+ g(A) . fvu-narrow i(A, B) =>+ g(A) . Maude-Maude3.5.1/tests/Misc/narrow.expected0000664000175000017510000005631615036121435020163 0ustar nileshnilesh========================================== vu-narrow in BAZ : g(j(A, B)) =>* C . Solution 1 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(j(@1:Foo, @2:Foo)) #1:Foo --> @1:Foo #2:Foo --> @2:Foo Solution 2 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(i(f(%1:Foo), %2:Foo)) #1:Foo --> f(%2:Foo) #2:Foo --> %1:Foo Solution 3 rewrites: 3 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 2 narrowing steps: 1 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo Solution 4 rewrites: 7 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 2 state: h(f(@1:Foo)) accumulated substitution: A --> f(k(@2:Foo, f(@1:Foo))) B --> @1:Foo variant unifier: C --> h(f(%1:Foo)) @1:Foo --> %1:Foo Solution 5 rewrites: 8 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 3 state: f(k(@2:Foo, h(@1:Foo))) accumulated substitution: A --> f(k(@3:Foo, @2:Foo)) B --> k(@1:Foo, @1:Foo) variant unifier: C --> f(k(%1:Foo, h(%2:Foo))) @2:Foo --> %1:Foo @1:Foo --> %2:Foo Solution 6 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 4 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo Solution 7 rewrites: 10 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, h(%1:Foo))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 10 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 5 ========================================== vu-narrow in BAZ : g(j(A, B)) =>+ C . Solution 1 rewrites: 2 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 1 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo Solution 2 rewrites: 6 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 2 state: h(f(@1:Foo)) accumulated substitution: A --> f(k(@2:Foo, f(@1:Foo))) B --> @1:Foo variant unifier: C --> h(f(%1:Foo)) @1:Foo --> %1:Foo Solution 3 rewrites: 7 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 3 state: f(k(@2:Foo, h(@1:Foo))) accumulated substitution: A --> f(k(@3:Foo, @2:Foo)) B --> k(@1:Foo, @1:Foo) variant unifier: C --> f(k(%1:Foo, h(%2:Foo))) @2:Foo --> %1:Foo @1:Foo --> %2:Foo Solution 4 rewrites: 8 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 4 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo Solution 5 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, h(%1:Foo))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 ========================================== vu-narrow in BAZ : g(j(A, B)) =>! C . Solution 1 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo Solution 2 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, h(%1:Foo))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 ========================================== vu-narrow [, 1] in BAZ : g(j(A, B)) =>! C . No solution. rewrites: 5 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 1 ========================================== vu-narrow [, 2] in BAZ : g(j(A, B)) =>! C . No solution. rewrites: 7 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 3 ========================================== vu-narrow [, 3] in BAZ : g(j(A, B)) =>! C . Solution 1 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo Solution 2 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, h(%1:Foo))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 ========================================== vu-narrow [, 4] in BAZ : g(j(A, B)) =>! C . Solution 1 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo Solution 2 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, h(%1:Foo))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 ========================================== vu-narrow [, 1] in BAZ : g(j(A, B)) =>* C . Solution 1 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(j(@1:Foo, @2:Foo)) #1:Foo --> @1:Foo #2:Foo --> @2:Foo Solution 2 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(i(f(%1:Foo), %2:Foo)) #1:Foo --> f(%2:Foo) #2:Foo --> %1:Foo Solution 3 rewrites: 3 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 2 narrowing steps: 1 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo No more solutions. rewrites: 6 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 1 ========================================== vu-narrow [, 2] in BAZ : g(j(A, B)) =>* C . Solution 1 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(j(@1:Foo, @2:Foo)) #1:Foo --> @1:Foo #2:Foo --> @2:Foo Solution 2 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(i(f(%1:Foo), %2:Foo)) #1:Foo --> f(%2:Foo) #2:Foo --> %1:Foo Solution 3 rewrites: 3 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 2 narrowing steps: 1 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo Solution 4 rewrites: 7 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 2 state: h(f(@1:Foo)) accumulated substitution: A --> f(k(@2:Foo, f(@1:Foo))) B --> @1:Foo variant unifier: C --> h(f(%1:Foo)) @1:Foo --> %1:Foo Solution 5 rewrites: 8 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 3 state: f(k(@2:Foo, h(@1:Foo))) accumulated substitution: A --> f(k(@3:Foo, @2:Foo)) B --> k(@1:Foo, @1:Foo) variant unifier: C --> f(k(%1:Foo, h(%2:Foo))) @2:Foo --> %1:Foo @1:Foo --> %2:Foo No more solutions. rewrites: 8 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 3 ========================================== vu-narrow [, 3] in BAZ : g(j(A, B)) =>* C . Solution 1 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(j(@1:Foo, @2:Foo)) #1:Foo --> @1:Foo #2:Foo --> @2:Foo Solution 2 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(i(f(%1:Foo), %2:Foo)) #1:Foo --> f(%2:Foo) #2:Foo --> %1:Foo Solution 3 rewrites: 3 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 2 narrowing steps: 1 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo Solution 4 rewrites: 7 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 2 state: h(f(@1:Foo)) accumulated substitution: A --> f(k(@2:Foo, f(@1:Foo))) B --> @1:Foo variant unifier: C --> h(f(%1:Foo)) @1:Foo --> %1:Foo Solution 5 rewrites: 8 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 3 state: f(k(@2:Foo, h(@1:Foo))) accumulated substitution: A --> f(k(@3:Foo, @2:Foo)) B --> k(@1:Foo, @1:Foo) variant unifier: C --> f(k(%1:Foo, h(%2:Foo))) @2:Foo --> %1:Foo @1:Foo --> %2:Foo Solution 6 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 4 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo Solution 7 rewrites: 10 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, h(%1:Foo))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 10 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 5 ========================================== fvu-narrow in BAZ : g(j(A, B)) =>* C . Solution 1 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(j(@1:Foo, @2:Foo)) #1:Foo --> @1:Foo #2:Foo --> @2:Foo Solution 2 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(i(f(%1:Foo), %2:Foo)) #1:Foo --> f(%2:Foo) #2:Foo --> %1:Foo Solution 3 rewrites: 3 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 2 narrowing steps: 1 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo Solution 4 rewrites: 7 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 2 state: h(f(@1:Foo)) accumulated substitution: A --> f(k(@2:Foo, f(@1:Foo))) B --> @1:Foo variant unifier: C --> h(f(%1:Foo)) @1:Foo --> %1:Foo Solution 5 rewrites: 8 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 3 state: f(k(@2:Foo, h(@1:Foo))) accumulated substitution: A --> f(k(@3:Foo, @2:Foo)) B --> k(@1:Foo, @1:Foo) variant unifier: C --> f(k(%1:Foo, h(%2:Foo))) @2:Foo --> %1:Foo @1:Foo --> %2:Foo Solution 6 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 4 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 10 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 5 ========================================== fvu-narrow in BAZ : g(j(A, B)) =>+ C . Solution 1 rewrites: 2 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 1 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo Solution 2 rewrites: 6 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 2 state: h(f(@1:Foo)) accumulated substitution: A --> f(k(@2:Foo, f(@1:Foo))) B --> @1:Foo variant unifier: C --> h(f(%1:Foo)) @1:Foo --> %1:Foo Solution 3 rewrites: 7 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 3 state: f(k(@2:Foo, h(@1:Foo))) accumulated substitution: A --> f(k(@3:Foo, @2:Foo)) B --> k(@1:Foo, @1:Foo) variant unifier: C --> f(k(%1:Foo, h(%2:Foo))) @2:Foo --> %1:Foo @1:Foo --> %2:Foo Solution 4 rewrites: 8 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 4 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 ========================================== fvu-narrow in BAZ : g(j(A, B)) =>! C . Solution 1 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 ========================================== fvu-narrow [, 1] in BAZ : g(j(A, B)) =>! C . No solution. rewrites: 5 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 1 ========================================== fvu-narrow [, 2] in BAZ : g(j(A, B)) =>! C . No solution. rewrites: 7 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 3 ========================================== fvu-narrow [, 3] in BAZ : g(j(A, B)) =>! C . Solution 1 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 ========================================== fvu-narrow [, 4] in BAZ : g(j(A, B)) =>! C . Solution 1 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 4 narrowing steps: 5 ========================================== fvu-narrow [, 1] in BAZ : g(j(A, B)) =>* C . Solution 1 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(j(@1:Foo, @2:Foo)) #1:Foo --> @1:Foo #2:Foo --> @2:Foo Solution 2 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(i(f(%1:Foo), %2:Foo)) #1:Foo --> f(%2:Foo) #2:Foo --> %1:Foo Solution 3 rewrites: 3 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 2 narrowing steps: 1 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo No more solutions. rewrites: 6 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 1 ========================================== fvu-narrow [, 2] in BAZ : g(j(A, B)) =>* C . Solution 1 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(j(@1:Foo, @2:Foo)) #1:Foo --> @1:Foo #2:Foo --> @2:Foo Solution 2 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(i(f(%1:Foo), %2:Foo)) #1:Foo --> f(%2:Foo) #2:Foo --> %1:Foo Solution 3 rewrites: 3 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 2 narrowing steps: 1 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo Solution 4 rewrites: 7 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 2 state: h(f(@1:Foo)) accumulated substitution: A --> f(k(@2:Foo, f(@1:Foo))) B --> @1:Foo variant unifier: C --> h(f(%1:Foo)) @1:Foo --> %1:Foo Solution 5 rewrites: 8 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 3 state: f(k(@2:Foo, h(@1:Foo))) accumulated substitution: A --> f(k(@3:Foo, @2:Foo)) B --> k(@1:Foo, @1:Foo) variant unifier: C --> f(k(%1:Foo, h(%2:Foo))) @2:Foo --> %1:Foo @1:Foo --> %2:Foo No more solutions. rewrites: 8 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 3 ========================================== fvu-narrow [, 3] in BAZ : g(j(A, B)) =>* C . Solution 1 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(j(@1:Foo, @2:Foo)) #1:Foo --> @1:Foo #2:Foo --> @2:Foo Solution 2 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 1 narrowing steps: 0 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(i(f(%1:Foo), %2:Foo)) #1:Foo --> f(%2:Foo) #2:Foo --> %1:Foo Solution 3 rewrites: 3 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 2 narrowing steps: 1 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo Solution 4 rewrites: 7 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 2 state: h(f(@1:Foo)) accumulated substitution: A --> f(k(@2:Foo, f(@1:Foo))) B --> @1:Foo variant unifier: C --> h(f(%1:Foo)) @1:Foo --> %1:Foo Solution 5 rewrites: 8 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 3 state: f(k(@2:Foo, h(@1:Foo))) accumulated substitution: A --> f(k(@3:Foo, @2:Foo)) B --> k(@1:Foo, @1:Foo) variant unifier: C --> f(k(%1:Foo, h(%2:Foo))) @2:Foo --> %1:Foo @1:Foo --> %2:Foo Solution 6 rewrites: 9 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 4 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 10 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 5 narrowing steps: 5 ========================================== vu-narrow in FOO : i(A, B) =>+ g(A) . Solution 1 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 0 narrowing steps: 1 state: g(f(@1:Foo)) accumulated substitution: A --> f(@1:Foo) B --> h(@2:Foo) variant unifier: @1:Foo --> #1:Foo No more solutions. rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 0 narrowing steps: 1 ========================================== fvu-narrow in FOO : i(A, B) =>+ g(A) . Solution 1 rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 0 narrowing steps: 1 state: g(f(@1:Foo)) accumulated substitution: A --> f(@1:Foo) B --> h(@2:Foo) variant unifier: @1:Foo --> #1:Foo No more solutions. rewrites: 1 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 0 narrowing steps: 1 Bye. Maude-Maude3.5.1/tests/Misc/narrow0000775000175000017510000000032415036121435016352 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/narrow.maude -no-banner -no-advise \ > narrow.out 2>&1 diff $srcdir/narrow.expected narrow.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/meseguerFiniteVariant.maude0000664000175000017510000003150715036121435022440 0ustar nileshnilesh***( Based on code supplied by Jose Meseguer for specifications with the finite variant property, which in turn are based on: @TECHREPORT{var-sat, AUTHOR = {J. Meseguer}, TITLE = {Variant-Based Satisfiability in Initial Algebras}, INSTITUTION = {University of Illinois at Urbana-Champaign}, NUMBER = {\texttt{http://hdl.handle.net/2142/88408}}, MONTH = {November}, YEAR = {2015} } ) set show timing off . set include BOOL off . **************************************** fmod BOOL-FVP is sort Boolean . ops tt ff : -> Boolean [ctor] . op _/\_ : Boolean Boolean -> Boolean . op _\/_ : Boolean Boolean -> Boolean . op ~ : Boolean -> Boolean . vars B X Y Z : Boolean . eq B /\ tt = B [variant] . eq B /\ ff = ff [variant] . eq B \/ ff = B [variant] . eq B \/ tt = tt [variant] . eq ~(tt) = ff [variant] . eq ~(ff) = tt [variant] . endfm *** expect 3 get variants in BOOL-FVP : X /\ Y . *** expect 3 get variants in BOOL-FVP : X \/ Y . *** expect 3 get variants in BOOL-FVP : ~(X) . **************************************** fmod NAT-AC-MONUS is sorts Nat NzNat Pred Lit Conj . subsorts NzNat < Nat . subsort Lit < Conj . op 0 : -> Nat [ctor] . op 1 : -> NzNat [ctor] . op _+_ : NzNat NzNat -> NzNat [ctor assoc comm] . op _=_ : Nat Nat -> Lit [ctor] . op _=/=_ : Nat Nat -> Lit [ctor] . op _=_ : Pred Pred -> Lit [ctor] . op _=/=_ : Pred Pred -> Lit [ctor] . op _/\_ : Conj Conj -> Conj [ctor assoc comm] . *** defined functions op _+_ : Nat Nat -> Nat [assoc comm] . var n m : Nat . vars p q : NzNat . eq n + 0 = n [variant] . op _-_ : Nat Nat -> Nat . *** monus eq n - (n + p) = 0 [variant]. eq (n + p) - n = p [variant] . eq n - n = 0 [variant] . endfm *** expect 3 get variants in NAT-AC-MONUS : n + m . *** expect 4 get variants in NAT-AC-MONUS : n - m . **************************************** fmod NAT-ACU-MONUS is sorts Nat . op 0 : -> Nat [ctor] . op 1 : -> Nat [ctor] . op _+_ : Nat Nat -> Nat [ctor assoc comm id: 0] . *** defined functions monus op _-_ : Nat Nat -> Nat . *** monus vars n m : Nat . eq n - (n + m) = 0 [variant]. eq (n + m) - n = m [variant] . endfm fmod NAT-ACU-MONUS-CONJ is protecting NAT-ACU-MONUS . sorts Lit Conj . subsorts Lit < Conj . op _=_ : Nat Nat -> Lit [ctor] . op _=/=_ : Nat Nat -> Lit [ctor] . op _/\_ : Conj Conj -> Conj [ctor assoc comm] . vars n m : Nat . endfm *** expect 3 get variants in NAT-ACU-MONUS : n - m . *** expect 3 get variants in NAT-ACU-MONUS-CONJ : (n - m =/= 0) /\ (m - n =/= 0) . **************************************** fmod NAT-ACU is sorts Nat NzNat . subsorts NzNat < Nat . op 0 : -> Nat [ctor] . op 1 : -> NzNat [ctor] . op _+_ : NzNat NzNat -> NzNat [ctor assoc comm id: 0] . op _+_ : Nat Nat -> Nat [ctor assoc comm id: 0] . endfm fmod INT-ACU is protecting NAT-ACU . sorts NzNeg Int . subsorts Nat NzNeg < Int . op - : NzNat -> NzNeg [ctor] . vars n m : NzNat . vars i j k l : Int . *** defined function op _+_ : Int Int -> Int [assoc comm id: 0] . eq i + -(n) + -(m) = i + -(n + m) [variant] . eq i + n + -(n) = i [variant] . eq i + n + -(n + m) = i + -(m) [variant] . eq i + n + m + -(n) = i + m [variant] . endfm *** expect 12 get variants in INT-ACU : i + j . *** expect 1 but too slow to detect there are no further ones variant unify [1] in INT-ACU : i + j =? i + l . *** expect 1 variant unify in INT-ACU : j =? l . **************************************** fmod INT-OFFSET-COMP-LIST is sorts Zero Nat Neg Int NeList List Lit Conj . subsorts Zero < Nat Neg < Int . subsort NeList < List . subsort Lit < Conj . op 0 : -> Zero [ctor] . op s : Nat -> Nat [ctor] . op p : Neg -> Neg [ctor] . op nil : -> List [ctor] . op _;_ : Int List -> NeList [ctor] . op _=_ : Int Int -> Lit [ctor] . op _=_ : List List -> Lit [ctor] . op _=/=_ : Int Int -> Lit [ctor] . op _=/=_ : List List -> Lit [ctor] . op _/\_ : Lit Conj -> Conj [ctor] . var M : Nat . var N : Neg . vars I J : Int . var L : List . var Q : NeList . eq I ; I ; L = I ; L [variant] . *** defined functions ops s p : Int -> Int . eq s(p(N)) = N [variant] . eq p(s(M)) = M [variant] . op head : NeList -> Int . eq head(I ; L) = I [variant] . endfm *** expect 2 get variants in INT-OFFSET-COMP-LIST : head(Q) . *** expect 2 get variants in INT-OFFSET-COMP-LIST : I ; L . **************************************** fmod INT-OFFSET-CONJ is sorts Zero Nat Neg Int Lit Conj . subsorts Zero < Nat Neg < Int . subsort Lit < Conj . op 0 : -> Zero [ctor] . op s : Nat -> Nat [ctor] . op p : Neg -> Neg [ctor] . op _=_ : Int Int -> Lit [ctor] . op _=/=_ : Int Int -> Lit [ctor] . op _/\_ : Lit Conj -> Conj [ctor] . var M : Nat . var N : Neg . vars I J : Int . *** defined functions ops s p : Int -> Int . eq s(p(N)) = N [variant] . eq p(s(M)) = M [variant] . endfm *** expect 2 get variants in INT-OFFSET-CONJ : s(I) . *** expect 2 get variants in INT-OFFSET-CONJ : p(I) . **************************************** set include BOOL off . fmod INT-OFFSET-MSET is sorts Zero Nat Neg Int NeMSet MSet Lit Conj Pred . subsorts Zero < Nat Neg < Int < NeMSet < MSet . subsort Lit < Conj . op 0 : -> Zero [ctor] . op s : Nat -> Nat [ctor] . op p : Neg -> Neg [ctor] . op mt : -> MSet [ctor] . op _,_ : NeMSet NeMSet -> NeMSet [ctor assoc comm] . op tt : -> Pred [ctor] . op _in_ : Int MSet -> Pred [ctor] . op dupl : MSet -> Pred . op _=_ : MSet MSet -> Lit [ctor] . op _=/=_ : MSet MSet -> Lit [ctor] . op _/\_ : Lit Conj -> Conj [ctor] . var m : Nat . var n : Neg . vars x y : Int . var Q Q' : MSet . vars M M' : NeMSet . eq x in x = tt [variant] . eq x in x,M = tt [variant] . eq dupl(M,M) = tt [variant] . eq dupl(M,M,M') = tt [variant] . *** defined functions op _,_ : MSet MSet -> MSet [assoc comm] . eq Q,mt = Q [variant] . ops s p : Int -> Int . eq s(p(n)) = n [variant] . eq p(s(m)) = m [variant] . endfm *** expect 3 get variants in INT-OFFSET-MSET : Q,Q' . *** expect 3 get variants in INT-OFFSET-MSET : x in Q . *** expect 3 get variants in INT-OFFSET-MSET : dupl(Q) . **************************************** fmod INT-OFFSET-SET is sorts Zero Nat Neg Int NeSet Set Lit Conj Pred . subsorts Zero < Nat Neg < Int < NeSet < Set . subsort Lit < Conj . op 0 : -> Zero [ctor] . op s : Nat -> Nat [ctor] . op p : Neg -> Neg [ctor] . op mt : -> Set [ctor] . op _,_ : NeSet NeSet -> NeSet [ctor assoc comm] . op tt : -> Pred [ctor] . op _=<_ : Set Set -> Pred [ctor] . op _=_ : Set Set -> Lit [ctor] . op _=/=_ : Set Set -> Lit [ctor] . op _/\_ : Lit Conj -> Conj [ctor] . var m : Nat . var n : Neg . vars x y : Int . vars S S' : NeSet . var Q U V : Set . eq S,S = S [variant] . eq S,S,S' = S,S' [variant] . eq mt =< U = tt [variant] . eq U =< U = tt [variant] . eq U =< U,V = tt [variant] . *** defined functions op _,_ : Set Set -> Set [assoc comm] . eq Q,mt = Q [variant] . ops s p : Int -> Int . eq s(p(n)) = n [variant] . eq p(s(m)) = m [variant] . endfm *** expect 7 get variants in INT-OFFSET-SET : V,U . *** expect 4 get variants in INT-OFFSET-SET : U =< V . *** expect 3 variant unify in INT-OFFSET-SET : x,y,S =? y,S . **************************************** fmod INT-OFFSET-SET is sorts Zero Nat Neg Int NeMSet MSet NeSet Set Lit Conj Pred . subsorts Zero < Nat Neg < Int < NeMSet < MSet . subsort NeSet < Set . subsort Lit < Conj . op 0 : -> Zero [ctor] . op s : Nat -> Nat [ctor] . op p : Neg -> Neg [ctor] . op mt : -> MSet [ctor] . op null : -> Set [ctor] . op {_} : NeMSet -> NeSet [ctor] . op _,_ : NeMSet NeMSet -> NeMSet [ctor assoc comm] . op tt : -> Pred [ctor] . op _in_ : Int MSet -> Pred [ctor] . op _in_ : Int Set -> Pred [ctor] . op dupl : MSet -> Pred . op _=_ : MSet MSet -> Lit [ctor] . op _=/=_ : MSet MSet -> Lit [ctor] . op _/\_ : Lit Conj -> Conj [ctor] . var m : Nat . var n : Neg . vars x y : Int . var Q : MSet . vars M M' : NeMSet . var S : Set . eq {M,M} = {M} [variant] . eq {M,M,M'} = {M,M'} [variant] . eq x in x = tt [variant] . eq x in x,M = tt [variant] . eq x in {x} = tt [variant] . eq x in {x,M} = tt [variant] . eq dupl(M,M) = tt [variant] . eq dupl(M,M,M') = tt [variant] . *** defined functions op _,_ : MSet MSet -> MSet [assoc comm] . eq Q,mt = Q [variant] . op _U_ : Set Set -> Set [assoc comm] . eq null U S = S [variant] . eq S U null = S [variant] . eq {M} U {M'} = {M,M'} [variant] . ops s p : Int -> Int . eq s(p(n)) = n [variant] . eq p(s(m)) = m [variant] . endfm *** expect 111 but only the first 23 are fast enough for the test suite variant unify [23] in INT-OFFSET-SET : {M} =? {M'} . **************************************** fmod HF-SETS-CONJ is sorts Magma Set DNat Pred Lit Conj . subsorts DNat < Set < Magma . subsort Lit < Conj . op _,_ : Magma Magma -> Magma [ctor assoc comm] . op {_} : Magma -> Set [ctor] . op {_} : DNat -> DNat [ctor] . *** Dedekid number successor op 0 : -> DNat [ctor] . op tt : -> Pred [ctor] . op _<=_ : Set Set -> Pred [ctor] . *** set containment predicate op _=_ : Magma Magma -> Lit [ctor] . op _=/=_ : Magma Magma -> Lit [ctor] . op _=_ : Pred Pred -> Lit [ctor] . op _=/=_ : Pred Pred -> Lit [ctor] . op _/\_ : Lit Conj -> Conj [ctor] . vars M M' : Magma . vars S S' : Set . *** set idempotency equations eq [1]: M, M = M [variant] . eq [2]: M,M,M' = M,M' [variant] . *** set containment equations eq [3]: 0 <= S = tt [variant] . eq [4]: {M} <= {M} = tt [variant] . eq [5]: {M} <= {M,M'} = tt [variant] . *** specification of defined functions op _U_ : Set Set -> Set . *** union eq [6]: S U 0 = S [variant] . eq [7]: 0 U S = S [variant] . eq [8]: {M} U {M'} = {M,M'} [variant] . endfm *** expect 5 get variants in HF-SETS-CONJ : M,M' . *** expect 4 get variants in HF-SETS-CONJ : S <= S' . *** expect 8 get variants in HF-SETS-CONJ : S U S' . **************************************** fmod NAT-ACU-CONJ is protecting NAT-ACU . sorts Lit Conj . subsort Lit < Conj . op _=_ : Nat Nat -> Lit [ctor] . op _=~=_ : Nat Nat -> Lit [ctor] . op _/\_ : Conj Conj -> Conj [ctor assoc comm] . endfm fmod NAT-PRES is protecting NAT-ACU-CONJ . sort Pred . op tt : -> Pred [ctor] . op _=_ : Pred Pred -> Lit [ctor] . op _=~=_ : Pred Pred -> Lit [ctor] . vars n n' m : Nat . vars p q : NzNat . op _>_ : Nat Nat -> Pred [ctor] . eq p + n > n = tt [variant] . endfm get variants in NAT-PRES : n > m . get variants in NAT-PRES : (n > m =~= tt) /\ (m > n =~= tt) /\ (n =~= m) . **************************************** fmod NAT-PRES-BOOL is protecting NAT-ACU-CONJ . sort Truth . ops true false : -> Truth [ctor] . op _=_ : Truth Truth -> Lit [ctor] . op _=~=_ : Truth Truth -> Lit [ctor] . vars n n' m : Nat . vars p q : NzNat . op _>_ : Nat Nat -> Truth . eq p + n > n = true [variant] . eq n > n + m = false [variant] . endfm get variants in NAT-PRES-BOOL : n > m . variant unify in NAT-PRES-BOOL : n > m =? true /\ m > n' =? true /\ n > n' =? false . **************************************** fmod NATU-ACU is sort Nat . ops 0 1 : -> Nat [ctor] . op _+_ : Nat Nat -> Nat [ctor assoc comm id: 0] . endfm fmod NATU-PRES-BOOL is protecting NATU-ACU . sort Truth . ops true false : -> Truth [ctor] . vars n n' m : Nat . op _>_ : Nat Nat -> Truth . op _>=_ : Nat Nat -> Truth . eq m + n + 1 > n = true [variant] . eq n > n + m = false [variant] . eq m + n >= n = true [variant] . eq n >= m + n + 1 = false [variant] . endfm get variants in NATU-PRES-BOOL : n > m . get variants in NATU-PRES-BOOL : n >= m . variant unify in NATU-PRES-BOOL : n > m =? true /\ m > n' =? true /\ n > n' =? false . variant unify in NATU-PRES-BOOL : n >= m =? false /\ m >= n =? false . **************************************** fmod INT-PRES is protecting NAT-PRES . extending INT-ACU . op _>_ : Int Int -> Pred [ctor] . var n : Nat . vars p q : NzNat . vars i j k : Int . *** remaining equations for definign > outside Nat eq n > -(q) = tt [variant] . eq -(p) > -(p + q) = tt [variant] . endfm get variants in INT-PRES : i > j . **************************************** fmod INT-PRESS-BOOL is protecting INT-ACU . sort Truth . ops true false : -> Truth [ctor] . vars n n' m : Nat . vars p q : NzNat . vars i j k : Int . op _>_ : Int Int -> Truth . eq p + n > n = true [variant] . eq n > -(q) = true [variant] . eq -(p) > -(p + q) = true [variant] . eq i > i + n = false [variant] . endfm get variants in INT-PRESS-BOOL : i > j . variant unify in INT-PRESS-BOOL : i > j =? true /\ j > k =? true /\ i > k =? false . Maude-Maude3.5.1/tests/Misc/meseguerFiniteVariant.expected0000664000175000017510000003532015036121435023143 0ustar nileshnilesh========================================== get variants in BOOL-FVP : X /\ Y . Variant 1 rewrites: 0 Boolean: #1:Boolean /\ #2:Boolean X --> #1:Boolean Y --> #2:Boolean Variant 2 rewrites: 2 Boolean: %1:Boolean X --> %1:Boolean Y --> tt Variant 3 rewrites: 2 Boolean: ff X --> %1:Boolean Y --> ff No more variants. rewrites: 2 ========================================== get variants in BOOL-FVP : X \/ Y . Variant 1 rewrites: 0 Boolean: #1:Boolean \/ #2:Boolean X --> #1:Boolean Y --> #2:Boolean Variant 2 rewrites: 2 Boolean: %1:Boolean X --> %1:Boolean Y --> ff Variant 3 rewrites: 2 Boolean: tt X --> %1:Boolean Y --> tt No more variants. rewrites: 2 ========================================== get variants in BOOL-FVP : ~(X) . Variant 1 rewrites: 0 Boolean: ~(#1:Boolean) X --> #1:Boolean Variant 2 rewrites: 2 Boolean: ff X --> tt Variant 3 rewrites: 2 Boolean: tt X --> ff No more variants. rewrites: 2 ========================================== get variants in NAT-AC-MONUS : n + m . Variant 1 rewrites: 0 Nat: #1:Nat + #2:Nat n --> #1:Nat m --> #2:Nat Variant 2 rewrites: 2 Nat: %1:Nat n --> 0 m --> %1:Nat Variant 3 rewrites: 2 Nat: %1:Nat n --> %1:Nat m --> 0 No more variants. rewrites: 2 ========================================== get variants in NAT-AC-MONUS : n - m . Variant 1 rewrites: 0 Nat: #1:Nat - #2:Nat n --> #1:Nat m --> #2:Nat Variant 2 rewrites: 3 Nat: 0 n --> %2:Nat m --> %2:Nat + %1:NzNat Variant 3 rewrites: 3 NzNat: %1:NzNat n --> %2:Nat + %1:NzNat m --> %2:Nat Variant 4 rewrites: 3 Nat: 0 n --> %1:Nat m --> %1:Nat No more variants. rewrites: 3 ========================================== get variants in NAT-ACU-MONUS : n - m . Variant 1 rewrites: 0 Nat: #1:Nat - #2:Nat n --> #1:Nat m --> #2:Nat Variant 2 rewrites: 2 Nat: 0 n --> %2:Nat m --> %1:Nat + %2:Nat Variant 3 rewrites: 2 Nat: %1:Nat n --> %1:Nat + %2:Nat m --> %2:Nat No more variants. rewrites: 2 ========================================== get variants in NAT-ACU-MONUS-CONJ : ((n - m) =/= 0) /\ (m - n) =/= 0 . Variant 1 rewrites: 0 Conj: ((#1:Nat - #2:Nat) =/= 0) /\ (#2:Nat - #1:Nat) =/= 0 n --> #1:Nat m --> #2:Nat Variant 2 rewrites: 4 Conj: (0 =/= 0) /\ %1:Nat =/= 0 n --> %2:Nat m --> %1:Nat + %2:Nat Variant 3 rewrites: 4 Conj: (0 =/= 0) /\ %1:Nat =/= 0 n --> %1:Nat + %2:Nat m --> %2:Nat No more variants. rewrites: 4 ========================================== get variants in INT-ACU : i + j . Variant 1 rewrites: 0 Int: #1:Int + #2:Int i --> #1:Int j --> #2:Int Variant 2 rewrites: 5 Int: %3:Int + %4:Int + -(%1:NzNat + %2:NzNat) i --> %3:Int + -(%2:NzNat) j --> %4:Int + -(%1:NzNat) Variant 3 rewrites: 5 Int: %2:Int + %3:Int i --> %2:Int + -(%1:NzNat) j --> %3:Int + %1:NzNat Variant 4 rewrites: 5 Int: %2:Int + %3:Int i --> %2:Int + %1:NzNat j --> %3:Int + -(%1:NzNat) Variant 5 rewrites: 5 Int: %3:Int + %4:Int + -(%2:NzNat) i --> %3:Int + -(%1:NzNat + %2:NzNat) j --> %4:Int + %1:NzNat Variant 6 rewrites: 5 Int: %3:Int + %4:Int + -(%2:NzNat) i --> %3:Int + %1:NzNat j --> %4:Int + -(%1:NzNat + %2:NzNat) Variant 7 rewrites: 19 Int: #2:Int + #4:Int + -(#3:NzNat + #5:NzNat) i --> #4:Int + #1:NzNat + -(#3:NzNat) j --> #2:Int + -(#1:NzNat + #5:NzNat) Variant 8 rewrites: 19 Int: #2:Int + #4:Int + -(#3:NzNat + #5:NzNat) i --> #2:Int + -(#1:NzNat + #5:NzNat) j --> #4:Int + #1:NzNat + -(#3:NzNat) Variant 9 rewrites: 19 Int: #3:Int + #4:Int i --> #3:Int + #1:NzNat + -(#2:NzNat) j --> #4:Int + #2:NzNat + -(#1:NzNat) Variant 10 rewrites: 19 Int: #4:Int + #5:Int + -(#2:NzNat) i --> #4:Int + #1:NzNat + -(#3:NzNat) j --> #5:Int + #3:NzNat + -(#1:NzNat + #2:NzNat) Variant 11 rewrites: 19 Int: #4:Int + #5:Int + -(#2:NzNat) i --> #4:Int + #3:NzNat + -(#1:NzNat + #2:NzNat) j --> #5:Int + #1:NzNat + -(#3:NzNat) Variant 12 rewrites: 31 Int: %2:Int + %5:Int + -(%3:NzNat + %6:NzNat) i --> %2:Int + %4:NzNat + -(%1:NzNat + %6:NzNat) j --> %5:Int + %1:NzNat + -(%3:NzNat + %4:NzNat) No more variants. rewrites: 35 ========================================== variant unify [1] in INT-ACU : i + j =? i + l . Unifier 1 rewrites: 10 i --> %1:Int j --> %2:Int l --> %2:Int ========================================== variant unify in INT-ACU : j =? l . Unifier 1 rewrites: 0 j --> %1:Int l --> %1:Int No more unifiers. rewrites: 0 ========================================== get variants in INT-OFFSET-COMP-LIST : head(Q) . Variant 1 rewrites: 0 Int: head(#1:NeList) Q --> #1:NeList Variant 2 rewrites: 1 Int: %1:Int Q --> %1:Int ; %2:List No more variants. rewrites: 1 ========================================== get variants in INT-OFFSET-COMP-LIST : I ; L . Variant 1 rewrites: 0 NeList: #1:Int ; #2:List I --> #1:Int L --> #2:List Variant 2 rewrites: 1 NeList: %2:Int ; %1:List I --> %2:Int L --> %2:Int ; %1:List No more variants. rewrites: 1 ========================================== get variants in INT-OFFSET-CONJ : s(I) . Variant 1 rewrites: 0 Int: s(#1:Int) I --> #1:Int Variant 2 rewrites: 1 Neg: %1:Neg I --> p(%1:Neg) No more variants. rewrites: 1 ========================================== get variants in INT-OFFSET-CONJ : p(I) . Variant 1 rewrites: 0 Int: p(#1:Int) I --> #1:Int Variant 2 rewrites: 1 Nat: %1:Nat I --> s(%1:Nat) No more variants. rewrites: 1 ========================================== get variants in INT-OFFSET-MSET : Q, Q' . Variant 1 rewrites: 0 MSet: #1:MSet, #2:MSet Q --> #1:MSet Q' --> #2:MSet Variant 2 rewrites: 2 MSet: %1:MSet Q --> mt Q' --> %1:MSet Variant 3 rewrites: 2 MSet: %1:MSet Q --> %1:MSet Q' --> mt No more variants. rewrites: 2 ========================================== get variants in INT-OFFSET-MSET : x in Q . Variant 1 rewrites: 0 Pred: #1:Int in #2:MSet x --> #1:Int Q --> #2:MSet Variant 2 rewrites: 2 Pred: tt x --> %1:Int Q --> %1:Int Variant 3 rewrites: 2 Pred: tt x --> %2:Int Q --> %2:Int, %1:NeMSet No more variants. rewrites: 2 ========================================== get variants in INT-OFFSET-MSET : dupl(Q) . Variant 1 rewrites: 0 Pred: dupl(#1:MSet) Q --> #1:MSet Variant 2 rewrites: 2 Pred: tt Q --> %1:NeMSet, %1:NeMSet Variant 3 rewrites: 2 Pred: tt Q --> %1:NeMSet, %1:NeMSet, %2:NeMSet No more variants. rewrites: 2 ========================================== get variants in INT-OFFSET-SET : V, U . Variant 1 rewrites: 0 Set: #1:Set, #2:Set V --> #1:Set U --> #2:Set Variant 2 rewrites: 6 NeSet: %1:NeSet V --> %1:NeSet U --> %1:NeSet Variant 3 rewrites: 6 NeSet: %1:NeSet, %2:NeSet, %3:NeSet V --> %1:NeSet, %2:NeSet U --> %1:NeSet, %3:NeSet Variant 4 rewrites: 6 NeSet: %1:NeSet, %2:NeSet V --> %1:NeSet, %2:NeSet U --> %1:NeSet Variant 5 rewrites: 6 NeSet: %1:NeSet, %2:NeSet V --> %1:NeSet U --> %1:NeSet, %2:NeSet Variant 6 rewrites: 6 Set: %1:Set V --> mt U --> %1:Set Variant 7 rewrites: 6 Set: %1:Set V --> %1:Set U --> mt No more variants. rewrites: 10 ========================================== get variants in INT-OFFSET-SET : U =< V . Variant 1 rewrites: 0 Pred: #1:Set =< #2:Set U --> #1:Set V --> #2:Set Variant 2 rewrites: 3 Pred: tt U --> mt V --> %1:Set Variant 3 rewrites: 3 Pred: tt U --> %1:Set V --> %1:Set Variant 4 rewrites: 3 Pred: tt U --> %2:Set V --> %1:Set, %2:Set No more variants. rewrites: 3 ========================================== variant unify in INT-OFFSET-SET : x, y, S =? y, S . Unifier 1 rewrites: 11 S --> #1:NeSet, #2:Int x --> #2:Int y --> #3:Int Unifier 2 rewrites: 11 S --> #1:Int x --> #1:Int y --> #2:Int Unifier 3 rewrites: 11 S --> #1:NeSet x --> #2:Int y --> #2:Int No more unifiers. rewrites: 11 ========================================== variant unify [23] in INT-OFFSET-SET : {M} =? {M'} . Unifier 1 rewrites: 4 M --> %1:NeMSet M' --> %1:NeMSet Unifier 2 rewrites: 32 M --> #1:NeMSet, #1:NeMSet M' --> #1:NeMSet Unifier 3 rewrites: 32 M --> #1:NeMSet, #1:NeMSet, #2:NeMSet M' --> #1:NeMSet, #2:NeMSet Unifier 4 rewrites: 32 M --> #1:NeMSet M' --> #1:NeMSet, #1:NeMSet Unifier 5 rewrites: 32 M --> #1:NeMSet, #2:NeMSet M' --> #1:NeMSet, #1:NeMSet, #2:NeMSet Unifier 6 rewrites: 248 M --> %1:NeMSet, %1:NeMSet, %1:NeMSet, %1:NeMSet M' --> %1:NeMSet Unifier 7 rewrites: 248 M --> %1:NeMSet, %1:NeMSet, %1:NeMSet, %1:NeMSet, %2:NeMSet, %2:NeMSet M' --> %1:NeMSet, %2:NeMSet Unifier 8 rewrites: 248 M --> %1:NeMSet, %1:NeMSet, %1:NeMSet M' --> %1:NeMSet Unifier 9 rewrites: 248 M --> %1:NeMSet, %1:NeMSet, %1:NeMSet, %1:NeMSet, %2:NeMSet, %3:NeMSet, %3:NeMSet M' --> %1:NeMSet, %2:NeMSet, %3:NeMSet Unifier 10 rewrites: 248 M --> %1:NeMSet, %1:NeMSet, %1:NeMSet, %1:NeMSet, %2:NeMSet M' --> %1:NeMSet, %2:NeMSet Unifier 11 rewrites: 248 M --> %1:NeMSet, %1:NeMSet, %1:NeMSet, %2:NeMSet, %2:NeMSet, %3:NeMSet M' --> %1:NeMSet, %2:NeMSet, %3:NeMSet Unifier 12 rewrites: 248 M --> %1:NeMSet, %1:NeMSet, %2:NeMSet, %2:NeMSet, %2:NeMSet M' --> %1:NeMSet, %2:NeMSet Unifier 13 rewrites: 248 M --> %1:NeMSet, %2:NeMSet, %2:NeMSet, %2:NeMSet M' --> %1:NeMSet, %2:NeMSet Unifier 14 rewrites: 248 M --> %1:NeMSet, %1:NeMSet, %2:NeMSet, %3:NeMSet M' --> %1:NeMSet, %2:NeMSet, %2:NeMSet, %3:NeMSet Unifier 15 rewrites: 248 M --> %1:NeMSet, %2:NeMSet, %2:NeMSet M' --> %1:NeMSet, %1:NeMSet, %2:NeMSet Unifier 16 rewrites: 248 M --> %1:NeMSet M' --> %1:NeMSet, %1:NeMSet, %1:NeMSet, %1:NeMSet Unifier 17 rewrites: 248 M --> %1:NeMSet, %2:NeMSet M' --> %1:NeMSet, %1:NeMSet, %1:NeMSet, %1:NeMSet, %2:NeMSet, %2:NeMSet Unifier 18 rewrites: 248 M --> %1:NeMSet M' --> %1:NeMSet, %1:NeMSet, %1:NeMSet Unifier 19 rewrites: 248 M --> %1:NeMSet, %2:NeMSet, %3:NeMSet M' --> %1:NeMSet, %1:NeMSet, %1:NeMSet, %1:NeMSet, %2:NeMSet, %3:NeMSet, %3:NeMSet Unifier 20 rewrites: 248 M --> %1:NeMSet, %2:NeMSet M' --> %1:NeMSet, %1:NeMSet, %1:NeMSet, %1:NeMSet, %2:NeMSet Unifier 21 rewrites: 248 M --> %1:NeMSet, %2:NeMSet, %3:NeMSet M' --> %1:NeMSet, %1:NeMSet, %1:NeMSet, %2:NeMSet, %2:NeMSet, %3:NeMSet Unifier 22 rewrites: 248 M --> %1:NeMSet, %2:NeMSet M' --> %1:NeMSet, %1:NeMSet, %2:NeMSet, %2:NeMSet, %2:NeMSet Unifier 23 rewrites: 248 M --> %1:NeMSet, %2:NeMSet M' --> %1:NeMSet, %2:NeMSet, %2:NeMSet, %2:NeMSet ========================================== get variants in HF-SETS-CONJ : M, M' . Variant 1 rewrites: 0 Magma: #1:Magma, #2:Magma M --> #1:Magma M' --> #2:Magma Variant 2 rewrites: 4 Magma: %1:Magma M --> %1:Magma M' --> %1:Magma Variant 3 rewrites: 4 Magma: %1:Magma, %2:Magma, %3:Magma M --> %1:Magma, %2:Magma M' --> %1:Magma, %3:Magma Variant 4 rewrites: 4 Magma: %1:Magma, %2:Magma M --> %1:Magma, %2:Magma M' --> %2:Magma Variant 5 rewrites: 4 Magma: %1:Magma, %2:Magma M --> %2:Magma M' --> %1:Magma, %2:Magma No more variants. rewrites: 8 ========================================== get variants in HF-SETS-CONJ : S <= S' . Variant 1 rewrites: 0 Pred: #1:Set <= #2:Set S --> #1:Set S' --> #2:Set Variant 2 rewrites: 3 Pred: tt S --> 0 S' --> %1:Set Variant 3 rewrites: 3 Pred: tt S --> {%1:Magma} S' --> {%1:Magma} Variant 4 rewrites: 3 Pred: tt S --> {%1:Magma} S' --> {%1:Magma, %2:Magma} No more variants. rewrites: 3 ========================================== get variants in HF-SETS-CONJ : S U S' . Variant 1 rewrites: 0 Set: #1:Set U #2:Set S --> #1:Set S' --> #2:Set Variant 2 rewrites: 3 Set: %1:Set S --> %1:Set S' --> 0 Variant 3 rewrites: 3 Set: %1:Set S --> 0 S' --> %1:Set Variant 4 rewrites: 3 Set: {%1:Magma, %2:Magma} S --> {%1:Magma} S' --> {%2:Magma} Variant 5 rewrites: 7 Set: {#1:Magma} S --> {#1:Magma} S' --> {#1:Magma} Variant 6 rewrites: 7 Set: {#1:Magma, #2:Magma, #3:Magma} S --> {#1:Magma, #2:Magma} S' --> {#1:Magma, #3:Magma} Variant 7 rewrites: 7 Set: {#1:Magma, #2:Magma} S --> {#1:Magma, #2:Magma} S' --> {#2:Magma} Variant 8 rewrites: 7 Set: {#1:Magma, #2:Magma} S --> {#2:Magma} S' --> {#1:Magma, #2:Magma} No more variants. rewrites: 11 ========================================== get variants in NAT-PRES : n > m . Variant 1 rewrites: 0 Pred: #1:Nat > #2:Nat n --> #1:Nat m --> #2:Nat Variant 2 rewrites: 1 Pred: tt n --> %1:NzNat + %2:Nat m --> %2:Nat No more variants. rewrites: 1 ========================================== get variants in NAT-PRES : ((n =~= m) /\ m > n =~= tt) /\ n > m =~= tt . Variant 1 rewrites: 0 Conj: (#1:Nat =~= #2:Nat) /\ (#1:Nat > #2:Nat =~= tt) /\ #2:Nat > #1:Nat =~= tt n --> #1:Nat m --> #2:Nat Variant 2 rewrites: 2 Conj: ((%1:NzNat + %2:Nat) =~= %2:Nat) /\ (tt =~= tt) /\ %2:Nat > %1:NzNat + %2:Nat =~= tt n --> %1:NzNat + %2:Nat m --> %2:Nat Variant 3 rewrites: 2 Conj: (%2:Nat =~= %1:NzNat + %2:Nat) /\ (tt =~= tt) /\ %2:Nat > %1:NzNat + %2:Nat =~= tt n --> %2:Nat m --> %1:NzNat + %2:Nat No more variants. rewrites: 2 ========================================== get variants in NAT-PRES-BOOL : n > m . Variant 1 rewrites: 0 Truth: #1:Nat > #2:Nat n --> #1:Nat m --> #2:Nat Variant 2 rewrites: 2 Truth: true n --> %1:NzNat + %2:Nat m --> %2:Nat Variant 3 rewrites: 2 Truth: false n --> %2:Nat m --> %1:Nat + %2:Nat No more variants. rewrites: 2 ========================================== variant unify in NAT-PRES-BOOL : n > m =? true /\ m > n' =? true /\ n > n' =? false . No unifiers. rewrites: 56 ========================================== get variants in NATU-PRES-BOOL : n > m . Variant 1 rewrites: 0 Truth: #1:Nat > #2:Nat n --> #1:Nat m --> #2:Nat Variant 2 rewrites: 2 Truth: true n --> 1 + %1:Nat + %2:Nat m --> %2:Nat Variant 3 rewrites: 2 Truth: false n --> %2:Nat m --> %1:Nat + %2:Nat No more variants. rewrites: 2 ========================================== get variants in NATU-PRES-BOOL : n >= m . Variant 1 rewrites: 0 Truth: #1:Nat >= #2:Nat n --> #1:Nat m --> #2:Nat Variant 2 rewrites: 2 Truth: true n --> %1:Nat + %2:Nat m --> %2:Nat Variant 3 rewrites: 2 Truth: false n --> %2:Nat m --> 1 + %1:Nat + %2:Nat No more variants. rewrites: 2 ========================================== variant unify in NATU-PRES-BOOL : n > m =? true /\ m > n' =? true /\ n > n' =? false . No unifiers. rewrites: 34 ========================================== variant unify in NATU-PRES-BOOL : n >= m =? false /\ m >= n =? false . No unifiers. rewrites: 6 ========================================== get variants in INT-PRES : i > j . Variant 1 rewrites: 0 Pred: #1:Int > #2:Int i --> #1:Int j --> #2:Int Variant 2 rewrites: 3 Pred: tt i --> %1:Nat j --> -(%2:NzNat) Variant 3 rewrites: 3 Pred: tt i --> -(%1:NzNat) j --> -(%1:NzNat + %2:NzNat) Variant 4 rewrites: 3 Pred: tt i --> %1:Nat + %2:NzNat j --> %1:Nat No more variants. rewrites: 3 ========================================== get variants in INT-PRESS-BOOL : i > j . Variant 1 rewrites: 0 Truth: #1:Int > #2:Int i --> #1:Int j --> #2:Int Variant 2 rewrites: 4 Truth: true i --> %1:NzNat + %2:Nat j --> %2:Nat Variant 3 rewrites: 4 Truth: true i --> %1:Nat j --> -(%2:NzNat) Variant 4 rewrites: 4 Truth: true i --> -(%1:NzNat) j --> -(%1:NzNat + %2:NzNat) Variant 5 rewrites: 4 Truth: false i --> %2:Int j --> %1:Nat + %2:Int No more variants. rewrites: 4 ========================================== variant unify in INT-PRESS-BOOL : i > j =? true /\ j > k =? true /\ i > k =? false . No unifiers. rewrites: 123 Bye. Maude-Maude3.5.1/tests/Misc/meseguerFiniteVariant0000775000175000017510000000042015036121435021337 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/meseguerFiniteVariant.maude -no-banner -no-advise \ > meseguerFiniteVariant.out 2>&1 diff $srcdir/meseguerFiniteVariant.expected meseguerFiniteVariant.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/mapToParameterTheory.maude0000664000175000017510000002571115036121435022254 0ustar nileshnilesh*** *** Examples to exercise the weird case where a parameterized view explicitly *** or implicitly maps sorts or operators from its fromTheory into one of its *** parameters rather than its toModule. *** set show timing off . *** don't pull in BOOL so we have simple modules to look at set include BOOL off . ************************************** *** explicit-explicit sort mapping *** ************************************** fth T is sort Elt . endfth fth T2 is sort Elt2 . endfth fmod M{X :: T} is sort Foo{X} . op f : X$Elt -> Foo{X} . endfm view V{A :: T} from T2 to M{A} is sort Elt2 to A$Elt . *** mapping fromTheory sort to parameterTheory sort endv fmod C is sort Bar . op a : -> Bar . endfm view V2 from T to C is sort Elt to Bar . endv fmod M2{Y :: T2} is sort Baz{Y} . op g : Y$Elt2 -> Baz{Y} . endfm fmod TEST is inc M2{V{V2}} . endfm show all . *** Now Y$Elt2 which is mapped by Elt2 to A$Elt in V *** which in turn is mapped by Elt to Bar in V2 *** should end up at Bar and thus g which maps from Y$Elt2 *** should now map from Bar *** op g : Bar -> Baz{V{V2}} . ************************************** *** implicit-explicit sort mapping *** ************************************** fth T is sort Elt . endfth fth T2 is sort A$Elt . *** highly dubious name endfth fmod M{X :: T} is sort Foo{X} . op f : X$Elt -> Foo{X} . endfm view V{A :: T} from T2 to M{A} is *** A$Elt in fromTheory is implicitly mapped to A$Elt in parameterTheory endv fmod C is sort Bar . op a : -> Bar . endfm view V2 from T to C is sort Elt to Bar . endv fmod M2{Y :: T2} is sort Baz{Y} . op g : Y$A$Elt -> Baz{Y} . endfm fmod TEST is inc M2{V{V2}} . endfm show all . *** Now Y$A$Elt which is implicitly mapped to A$Elt by V *** which in turn is mapped by Elt to Bar in V2 *** should end up at Bar and thus g which maps from Y$A$Elt2 *** should now map from Bar *** op g : Bar -> Baz{V{V2}} . ************************************** *** explicit-implicit sort mapping *** ************************************** fth T is sort Elt . endfth fth T2 is sort Elt2 . endfth fmod M{X :: T} is sort Foo{X} . op f : X$Elt -> Foo{X} . endfm view V{A :: T} from T2 to M{A} is sort Elt2 to A$Elt . *** mapping fromTheory sort to parameterTheory sort endv fmod C is sort Elt . op a : -> Elt . endfm view V2 from T to C is *** Elt is implicitly mapped from T to C endv fmod M2{Y :: T2} is sort Baz{Y} . op g : Y$Elt2 -> Baz{Y} . endfm fmod TEST is inc M2{V{V2}} . endfm show all . *** Now Y$Elt2 which is mapped by Elt2 to A$Elt in V *** which in turn is mapped by to Elt in C by V2 *** Thus thus g which maps from Y$Elt2 *** should now map from Elt *** op g : Elt -> Baz{V{V2}} . ************************************** *** implicit-implicit sort mapping *** ************************************** fth T is sort Elt . endfth fth T2 is sort A$Elt . *** highly dubious name endfth fmod M{X :: T} is sort Foo{X} . op f : X$Elt -> Foo{X} . endfm view V{A :: T} from T2 to M{A} is *** A$Elt in fromTheory is implicitly mapped to A$Elt in parameterTheory endv fmod C is sort Elt . op a : -> Elt . endfm view V2 from T to C is *** Elt is implicitly mapped from T to C endv fmod M2{Y :: T2} is sort Baz{Y} . op g : Y$A$Elt -> Baz{Y} . endfm fmod TEST is inc M2{V{V2}} . endfm show all . *** Now Y$A$Elt which is implicitly mapped to A$Elt by V *** which in turn is mapped by Elt in C by V2 *** Thus g which maps from Y$A$Elt2 *** should now map from Elt *** op g : Elt -> Baz{V{V2}} . ****************************************** *** explicit-explicit operator mapping *** ****************************************** fth T is sort Elt . op _+_ : Elt Elt -> Elt . endfth fth T2 is sort Elt2 . op sum : Elt2 Elt2 -> Elt2 . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = X + X . endfm view V{A :: T} from T2 to M{A} is sort Elt2 to A$Elt . *** mapping fromTheory sort to parameterTheory sort op sum to _+_ . *** mapping fromTheory operator to parameterTheory operator endv fmod C is sort Bar . op summation : Bar Bar -> Bar . endfm view V2 from T to C is sort Elt to Bar . op _+_ to summation . endv fmod M2{Y :: T2} is op h : Y$Elt2 Y$Elt2 -> Y$Elt2 . vars X Y : Y$Elt2 . eq h(X, Y) = sum(X, Y) . endfm fmod TEST is inc M2{V{V2}} . endfm show all . *** sum in eq h(X, Y) = sum(X, Y) should be mapped to _+_ by V, but then *** V2 instantiates the operator from the parameter theory to summation so we get *** eq h(X:Bar, Y:Bar) = summation(X:Bar, Y:Bar) . ****************************************** *** implicit-explicit operator mapping *** ****************************************** fth T is sort Elt . op _+_ : Elt Elt -> Elt . endfth fth T2 is sort Elt2 . op _+_ : Elt2 Elt2 -> Elt2 . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = X + X . endfm view V{A :: T} from T2 to M{A} is sort Elt2 to A$Elt . *** mapping fromTheory sort to parameterTheory sort *** _+_ in fromTheory is implicitly mapped to _+_ in parameterTheory endv fmod C is sort Bar . op summation : Bar Bar -> Bar . endfm view V2 from T to C is sort Elt to Bar . op _+_ to summation . endv fmod M2{Y :: T2} is op h : Y$Elt2 Y$Elt2 -> Y$Elt2 . vars X Y : Y$Elt2 . eq h(X, Y) = X + Y . endfm fmod TEST is inc M2{V{V2}} . endfm show all . *** _+_ in eq h(X, Y) = X + Y should be mapped to _+_ in T by V, but then *** V2 instantiates the operator from the parameter theory to summation so we get *** eq h(X:Bar, Y:Bar) = summation(X:Bar, Y:Bar) . ****************************************** *** op->term-explicit operator mapping *** ****************************************** fth T is sort Elt . op _+_ : Elt Elt -> Elt . endfth fth T2 is sort Elt2 . op sum : Elt2 Elt2 -> Elt2 . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = X + X . endfm view V{A :: T} from T2 to M{A} is sort Elt2 to A$Elt . *** mapping fromTheory sort to parameterTheory sort vars X Y : Elt2 . op sum(X, Y) to term X + g(Y) . *** mapping fromTheory operator to parameterTheory operator endv fmod C is sort Bar . op summation : Bar Bar -> Bar . endfm view V2 from T to C is sort Elt to Bar . op _+_ to summation . endv fmod M2{Y :: T2} is op h : Y$Elt2 Y$Elt2 -> Y$Elt2 . vars X Y : Y$Elt2 . eq h(X, Y) = sum(X, Y) . endfm fmod TEST is inc M2{V{V2}} . endfm show all . *** sum in eq h(X, Y) = sum(X, Y) should be mapped to X + g(Y) by V, but then *** V2 instantiates the operator _+_ from the parameter theory to summation so we get *** eq h(X:Bar, Y:Bar) = summation(X:Bar, g(Y:Bar)) . ****************************************** *** explicit-op->term operator mapping *** ****************************************** fth T is sort Elt . op _+_ : Elt Elt -> Elt . endfth fth T2 is sort Elt2 . op sum : Elt2 Elt2 -> Elt2 . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = X + X . endfm view V{A :: T} from T2 to M{A} is sort Elt2 to A$Elt . *** mapping fromTheory sort to parameterTheory sort op sum to _+_ . *** mapping fromTheory operator to parameterTheory operator endv fmod C is sort Bar . op summation : Bar Bar -> Bar . op inv : Bar -> Bar . endfm view V2 from T to C is sort Elt to Bar . vars X Y : Elt . op X + Y to term summation(inv(Y), inv(X)) . endv fmod M2{Y :: T2} is op h : Y$Elt2 Y$Elt2 -> Y$Elt2 . vars X Y : Y$Elt2 . eq h(X, Y) = sum(X, Y) . endfm fmod TEST is inc M2{V{V2}} . endfm show all . *** sum in eq h(X, Y) = sum(X, Y) should be mapped to _+_ by V, but then *** V2 instantiates the operator from the parameter theory to summation *** summation(inv(Y), inv(X)) so we get *** eq h(X:Bar, Y:Bar) = summation(inv(Y:Bar), inv(X:Bar)) . ************************************************************* *** explicit-op->term operator mapping with lost variable *** ************************************************************* fth T is sort Elt . op + : Elt Elt Elt -> Elt . endfth fth T2 is sort Elt2 . op sum : Elt2 Elt2 Elt2 -> Elt2 . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = +(X, X, X) . endfm view V{A :: T} from T2 to M{A} is sort Elt2 to A$Elt . *** mapping fromTheory sort to parameterTheory sort op sum to + . *** mapping fromTheory operator to parameterTheory operator endv fmod C is sort Bar . op summation : Bar Bar -> Bar . op inv : Bar -> Bar . endfm view V2 from T to C is sort Elt to Bar . vars X Y Z : Elt . op +(X, Y, Z) to term summation(inv(X), inv(Z)) . *** Y is lost endv fmod M2{Y :: T2} is op h : Y$Elt2 Y$Elt2 Y$Elt2 -> Y$Elt2 . vars X Y Z : Y$Elt2 . eq h(X, Y, Z) = sum(X, Y, Z) . endfm fmod TEST is inc M2{V{V2}} . endfm show all . *** eq h(X:Bar, Y:Bar, Z:Bar) = summation(inv(X:Bar), inv(Z:Bar)) . ****************************************************************** *** explicit-op->term operator mapping with two lost variables *** ****************************************************************** fth T is sort Elt . op + : Elt Elt Elt Elt -> Elt . endfth fth T2 is sort Elt2 . op sum : Elt2 Elt2 Elt2 Elt2 -> Elt2 . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = +(X, X, X, X) . endfm view V{A :: T} from T2 to M{A} is sort Elt2 to A$Elt . *** mapping fromTheory sort to parameterTheory sort op sum to + . *** mapping fromTheory operator to parameterTheory operator endv fmod C is sort Bar . op summation : Bar Bar -> Bar . op inv : Bar -> Bar . endfm view V2 from T to C is sort Elt to Bar . vars W, X Y Z : Elt . op +(W, X, Y, Z) to term summation(inv(X), inv(Z)) . *** W, Y is lost endv fmod M2{Y :: T2} is op h : Y$Elt2 Y$Elt2 Y$Elt2 Y$Elt2 -> Y$Elt2 . vars W, X Y Z : Y$Elt2 . eq h(W, X, Y, Z) = sum(W, X, Y, Z) . endfm fmod TEST is inc M2{V{V2}} . endfm show all . *** eq h(W:Bar, X:Bar, Y:Bar, Z:Bar) = summation(inv(X:Bar), inv(Z:Bar)) . ****************************************************** *** explicit-explicit polymorphic operator mapping *** ****************************************************** fth T is sort Elt . op f : Elt Universal -> Universal [poly(2 0)] . ops a b : -> Elt . endfth fth T2 is sort Elt2 . op f2 : Elt2 Universal -> Universal [poly(2 0)] . endfth fmod M{X :: T} is sort One{X} Two{X} . op g1 : One{X} -> One{X} . op g2 : Two{X} -> Two{X} . var X : One{X} . var Y : Two{X} . eq g1(X) = f(a, X) . eq g2(Y) = f(b, Y) . endfm view V{A :: T} from T2 to M{A} is sort Elt2 to A$Elt . op f2 to f . *** map polymorphic operator f2 to polymorphic operator f in parameter theory endv fmod C is sort Bar . op h : Bar Universal -> Universal [poly(2 0)] . ops 1 2 : -> Bar . endfm view V2 from T to C is sort Elt to Bar . op f to h . op a to 1 . op b to 2 . endv fmod M2{Y :: T2} is sort MySort . op p : Y$Elt2 MySort -> MySort . var X : Y$Elt2 . var Y : MySort . eq p(X, Y) = f2(X, Y) . endfm fmod TEST is inc M2{V{V2}} . endfm show all . red p(1, A:MySort) . Maude-Maude3.5.1/tests/Misc/mapToParameterTheory.expected0000664000175000017510000000452215036121435022757 0ustar nileshnileshfmod TEST is sorts Bar Foo{V2} Baz{V{V2}} . op a : -> Bar . op f : Bar -> Foo{V2} . op g : Bar -> Baz{V{V2}} . endfm fmod TEST is sorts Bar Foo{V2} Baz{V{V2}} . op a : -> Bar . op f : Bar -> Foo{V2} . op g : Bar -> Baz{V{V2}} . endfm fmod TEST is sorts Elt Foo{V2} Baz{V{V2}} . op a : -> Elt . op f : Elt -> Foo{V2} . op g : Elt -> Baz{V{V2}} . endfm fmod TEST is sorts Elt Foo{V2} Baz{V{V2}} . op a : -> Elt . op f : Elt -> Foo{V2} . op g : Elt -> Baz{V{V2}} . endfm fmod TEST is sort Bar . op summation : Bar Bar -> Bar . op g : Bar -> Bar . op h : Bar Bar -> Bar . eq g(X:Bar) = summation(X:Bar, X:Bar) . eq h(X:Bar, Y:Bar) = summation(X:Bar, Y:Bar) . endfm fmod TEST is sort Bar . op summation : Bar Bar -> Bar . op g : Bar -> Bar . op h : Bar Bar -> Bar . eq g(X:Bar) = summation(X:Bar, X:Bar) . eq h(X:Bar, Y:Bar) = summation(X:Bar, Y:Bar) . endfm fmod TEST is sort Bar . op summation : Bar Bar -> Bar . op g : Bar -> Bar . op h : Bar Bar -> Bar . eq g(X:Bar) = summation(X:Bar, X:Bar) . eq h(X:Bar, Y:Bar) = summation(X:Bar, g(Y:Bar)) . endfm fmod TEST is sort Bar . op summation : Bar Bar -> Bar . op inv : Bar -> Bar . op g : Bar -> Bar . op h : Bar Bar -> Bar . eq g(X:Bar) = summation(inv(X:Bar), inv(X:Bar)) . eq h(X:Bar, Y:Bar) = summation(inv(Y:Bar), inv(X:Bar)) . endfm fmod TEST is sort Bar . op summation : Bar Bar -> Bar . op inv : Bar -> Bar . op g : Bar -> Bar . op h : Bar Bar Bar -> Bar . eq g(X:Bar) = summation(inv(X:Bar), inv(X:Bar)) . eq h(X:Bar, Y:Bar, Z:Bar) = summation(inv(X:Bar), inv(Z:Bar)) . endfm fmod TEST is sort Bar . op summation : Bar Bar -> Bar . op inv : Bar -> Bar . op g : Bar -> Bar . op h : Bar Bar Bar Bar -> Bar . eq g(X:Bar) = summation(inv(X:Bar), inv(X:Bar)) . eq h(W:Bar, X:Bar, Y:Bar, Z:Bar) = summation(inv(X:Bar), inv(Z:Bar)) . endfm fmod TEST is sorts Bar One{V2} Two{V2} MySort . op h : Bar Universal -> Universal [poly (2 0)] . op 1 : -> Bar . op 2 : -> Bar . op g1 : One{V2} -> One{V2} . op g2 : Two{V2} -> Two{V2} . op p : Bar MySort -> MySort . eq g1(X:One{V2}) = h(1, X:One{V2}) . eq g2(Y:Two{V2}) = h(2, Y:Two{V2}) . eq p(X:Bar, Y:MySort) = h(X:Bar, Y:MySort) . endfm ========================================== reduce in TEST : p(1, A:MySort) . rewrites: 1 result [MySort]: h(1, A:MySort) Bye. Maude-Maude3.5.1/tests/Misc/mapToParameterTheory0000775000175000017510000000041415036121435021156 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/mapToParameterTheory.maude -no-banner -no-advise \ > mapToParameterTheory.out 2>&1 diff $srcdir/mapToParameterTheory.expected mapToParameterTheory.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/initialEqualityPredicate.maude0000664000175000017510000000340115036121435023120 0ustar nileshnileshset show timing off . set show advisories off . fmod DECOMPOSE is inc INITIAL-EQUALITY-PREDICATE . sorts Nat String . op 0 : -> Nat . ops f g : Nat Nat -> Nat [ctor] . ops h i : Nat Nat -> String [ctor] . op c : Nat Nat -> Nat [ctor comm] . ops b : Nat Nat -> Nat [assoc comm id: 0] . op s : Nat -> Nat [iter ctor] . vars W X Y Z : Nat . vars A B C D : Nat . endfm red X .=. X . red X .=. Y . *** free red f(X, Y) .=. f(Y, Z) . red f(X, Y) .=. f(Y, X) . red f(X, Y) .=. X . red f(f(X, Y), Z) .=. f(X, Y) . red f(X, Y) .=. g(W, Z) . red h(X, Y) .=. h(W, Z) . red h(X, Y) .=. h(Y, X) . red h(X, Y) .=. i(W, Z) . *** dissimilar collapse symbol red f(X, Y) .=. b(W, Z) . *** iter red s^100(X) .=. s^40(X) . red s^100(X) .=. s^40(Y) . red s^10(X) .=. s^10(Y) . *** commutative red c(X, Y) .=. c(A, B) . red c(X, Y) .=. c(A, X) . red c(c(X, Y), Z) .=. c(X, Y) . *** compound red c(f(X, Y), g(W, Z)) .=. c(g(A, B), f(C, D)) . red c(f(X, Y), g(W, Z)) .=. c(f(A, B), f(C, D)) . fmod FOO is inc INITIAL-EQUALITY-PREDICATE . sort Foo . ops a b c 1 : -> Foo . op __ : Foo Foo -> Foo [assoc] . op _+_ : Foo Foo -> Foo [assoc comm] . op s : Foo Foo -> Foo [comm] . op f : Foo Foo -> Foo [assoc comm id: 1] . ops g h p : Foo -> Foo . var A B C D E W X Y Z : Foo . eq p(X) = g(h(X)) . endfm *** ctor declaration not needed for decomposition red g(X) .=. g(Y) . *** ground vs equationally-stable red f(a, g(b), c) .=. h(X) . *** canceling under commutative red s(g(X), Z) .=. s(Y, g(X)) . *** AC red g(A) + g(B) + g(C) .=. g(A) + B + h(C) . red g(A) + g(B) + g(C) .=. g(A) + B . *** associative red g(A) (B) X h(A) Y h(C) .=. h(A) g(D) g(E) Z X h(A) . red g(A) X Y h(A) h(C) .=. g(D) g(E) g(D) X h(A) . red g(A) g(B) X h(A) Y h(C) .=. g(D) g(E) Z X h(A) . Maude-Maude3.5.1/tests/Misc/initialEqualityPredicate.expected0000664000175000017510000000672615036121435023643 0ustar nileshnilesh========================================== reduce in DECOMPOSE : X .=. X . rewrites: 1 result Bool: true ========================================== reduce in DECOMPOSE : X .=. Y . rewrites: 0 result Bool: X .=. Y ========================================== reduce in DECOMPOSE : f(X, Y) .=. f(Y, Z) . rewrites: 1 result Bool: Z .=. Y and X .=. Y ========================================== reduce in DECOMPOSE : f(X, Y) .=. f(Y, X) . rewrites: 2 result Bool: X .=. Y ========================================== reduce in DECOMPOSE : X .=. f(X, Y) . rewrites: 1 result Bool: false ========================================== reduce in DECOMPOSE : f(X, Y) .=. f(f(X, Y), Z) . rewrites: 3 result Bool: false ========================================== reduce in DECOMPOSE : f(X, Y) .=. g(W, Z) . rewrites: 1 result Bool: false ========================================== reduce in DECOMPOSE : h(X, Y) .=. h(W, Z) . rewrites: 1 result Bool: Z .=. Y and X .=. W ========================================== reduce in DECOMPOSE : h(X, Y) .=. h(Y, X) . rewrites: 2 result Bool: X .=. Y ========================================== reduce in DECOMPOSE : h(X, Y) .=. i(W, Z) . rewrites: 1 result Bool: false ========================================== reduce in DECOMPOSE : f(X, Y) .=. b(Z, W) . rewrites: 0 result Bool: f(X, Y) .=. b(Z, W) ========================================== reduce in DECOMPOSE : s^40(X) .=. s^100(X) . rewrites: 2 result Bool: false ========================================== reduce in DECOMPOSE : s^40(Y) .=. s^100(X) . rewrites: 1 result Bool: Y .=. s^60(X) ========================================== reduce in DECOMPOSE : s^10(X) .=. s^10(Y) . rewrites: 1 result Bool: X .=. Y ========================================== reduce in DECOMPOSE : c(A, B) .=. c(X, Y) . rewrites: 2 result Bool: A .=. X and B .=. Y xor A .=. Y and B .=. X xor A .=. X and A .=. Y and B .=. X and B .=. Y ========================================== reduce in DECOMPOSE : c(A, X) .=. c(X, Y) . rewrites: 1 result Bool: A .=. Y ========================================== reduce in DECOMPOSE : c(Z, c(X, Y)) .=. c(X, Y) . rewrites: 1 result Bool: false ========================================== reduce in DECOMPOSE : c(f(C, D), g(A, B)) .=. c(f(X, Y), g(W, Z)) . rewrites: 10 result Bool: A .=. W and B .=. Z and C .=. X and Y .=. D ========================================== reduce in DECOMPOSE : c(f(A, B), f(C, D)) .=. c(f(X, Y), g(W, Z)) . rewrites: 11 result Bool: false ========================================== reduce in FOO : g(X) .=. g(Y) . rewrites: 1 result Bool: X .=. Y ========================================== reduce in FOO : h(X) .=. f(a, c, g(b)) . rewrites: 1 result Bool: false ========================================== reduce in FOO : s(Z, g(X)) .=. s(Y, g(X)) . rewrites: 1 result Bool: Z .=. Y ========================================== reduce in FOO : g(A) + B + h(C) .=. g(A) + g(B) + g(C) . rewrites: 1 result Bool: false ========================================== reduce in FOO : B + g(A) .=. g(A) + g(B) + g(C) . rewrites: 1 result Bool: B .=. g(B) + g(C) ========================================== reduce in FOO : g(A) B X h(A) Y h(C) .=. h(A) g(D) g(E) Z X h(A) . rewrites: 1 result Bool: false ========================================== reduce in FOO : g(A) X Y h(A) h(C) .=. g(D) g(E) g(D) X h(A) . rewrites: 1 result Bool: false ========================================== reduce in FOO : g(A) g(B) X h(A) Y h(C) .=. g(D) g(E) Z X h(A) . rewrites: 4 result Bool: E .=. B and A .=. C and A .=. D and Z X .=. X h(A) Y Bye. Maude-Maude3.5.1/tests/Misc/initialEqualityPredicate0000775000175000017510000000043415036121435022034 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/initialEqualityPredicate.maude -no-banner -no-advise \ > initialEqualityPredicate.out 2>&1 diff $srcdir/initialEqualityPredicate.expected initialEqualityPredicate.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/filteredVariantUnification.maude0000664000175000017510000000441715036121435023454 0ustar nileshnileshset show timing off . ***( From: Santiago Escobar, Julia Sapiña: Most General Variant Unifiers. International Conference on Logic Programming (ICLP 2019) Technical Communications, EPTCS 306, pp.154-167 ) fmod EXCLUSIVE-OR is sorts Elem ElemXor . subsort Elem < ElemXor . ops a b c : -> Elem . op mt : -> ElemXor . op _*_ : ElemXor ElemXor -> ElemXor [assoc comm] . vars X Y Z U V : [ElemXor] . vars V1 V2 V3 V4 V5 V6 V7 V8 V9 : [ElemXor] . eq [idem] : X * X = mt [variant] . eq [idem-Coh] : X * X * Z = Z [variant] . eq [id] : X * mt = X [variant] . op f1 : [ElemXor] -> [ElemXor] . op f2 : [ElemXor] [ElemXor] -> [ElemXor] . op f3 : [ElemXor] [ElemXor] [ElemXor] -> [ElemXor] . endfm *** P1 filtered variant unify V1 =? V2 * V3 . *** P2 filtered variant unify V1 =? V2 * V3 * V4 . *** P3 filtered variant unify V1 =? f1(V2 * V3 * f1(V4)) . *** P4 filtered variant unify V1 =? f2(V2 * V3, f1(V2 * V4)) . *** P5 filtered variant unify V1 =? f3(V2 * V3, f1(V3 * V4), f2(V2, f1(V4))) . --------------------------------------------------------------- *** P6 filtered variant unify V1 * V2 =? V3 * V4 . *** P7 filtered variant unify V1 * V2 =? f1(V3 * V4) . *** P8 filtered variant unify V1 * V2 =? f1(V3 * V3 * f1(V4)) . *** P9 - too slow for test suite *** filtered variant unify V1 * V2 =? f2(V3 * V4, f1(V3 * V5)) . *** P10 - too slow for test suite *** filtered variant unify V1 * V2 =? f3(V3 * V4, f1(V4 * V5), f2(V3, f1(V5))) . --------------------------------------------------------------- *** P11 filtered variant unify f1(V1) =? f1(V2 * V3) . *** P12 - 3 mgus filtered variant unify f1(V1) * f1(V2) =? f1(V3) * f1(V3 * V4) . *** P13 - too slow for test suite *** filtered variant unify f1(V1 * V2) =? f1(V3 * V4 * V5) . *** P14 filtered variant unify f2(V1 * V2, V2 * V3) =? f2(V4, V5) . *** P15 filtered variant unify f3(V1 * V2, V3 * V4, V5 * V6) =? f3(V7, V8, V9) . --------------------------------------------------------------- *** P16 filtered variant unify V1 =? a * b * V2 . *** P17 filtered variant unify V1 * V2 =? a * b * V3 . *** P18 filtered variant unify V1 * a =? V2 * b . *** P19 - 3 mgus filtered variant unify f1(a) * f1(V1) =? f1(V2 * b) * f1(V3 * c) . *** P20 filtered variant unify f2(a, V1) =? f2(V2 * V3, f1(a * b)) . Maude-Maude3.5.1/tests/Misc/filteredVariantUnification.expected0000664000175000017510000001133215036121435024154 0ustar nileshnilesh========================================== filtered variant unify in EXCLUSIVE-OR : V1 =? V2 * V3 . rewrites: 20 Unifier 1 V1 --> %1:[ElemXor] * %2:[ElemXor] V2 --> %1:[ElemXor] V3 --> %2:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : V1 =? V2 * V3 * V4 . rewrites: 420 Unifier 1 V1 --> %1:[ElemXor] * %2:[ElemXor] * %3:[ElemXor] V2 --> %1:[ElemXor] V3 --> %2:[ElemXor] V4 --> %3:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : V1 =? f1(V2 * V3 * f1(V4)) . rewrites: 92 Unifier 1 V1 --> f1(%1:[ElemXor] * %2:[ElemXor] * f1(%3:[ElemXor])) V2 --> %1:[ElemXor] V3 --> %2:[ElemXor] V4 --> %3:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : V1 =? f2(V2 * V3, f1(V2 * V4)) . rewrites: 548 Unifier 1 V1 --> f2(%1:[ElemXor] * %2:[ElemXor], f1(%1:[ElemXor] * %3:[ElemXor])) V2 --> %1:[ElemXor] V3 --> %2:[ElemXor] V4 --> %3:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : V1 =? f3(V2 * V3, f1(V3 * V4), f2(V2, f1(V4))) . rewrites: 548 Unifier 1 V1 --> f3(%1:[ElemXor] * %2:[ElemXor], f1(%2:[ElemXor] * %3:[ElemXor]), f2(%1:[ ElemXor], f1(%3:[ElemXor]))) V2 --> %1:[ElemXor] V3 --> %2:[ElemXor] V4 --> %3:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : V1 * V2 =? V3 * V4 . rewrites: 905 Unifier 1 V1 --> %1:[ElemXor] * %3:[ElemXor] V2 --> %2:[ElemXor] * %4:[ElemXor] V3 --> %1:[ElemXor] * %2:[ElemXor] V4 --> %3:[ElemXor] * %4:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : V1 * V2 =? f1(V3 * V4) . rewrites: 181 Unifier 1 V1 --> #3:[ElemXor] * f1(#1:[ElemXor] * #2:[ElemXor]) V2 --> #3:[ElemXor] V3 --> #1:[ElemXor] V4 --> #2:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : V1 * V2 =? f1(V3 * V3 * f1(V4)) . rewrites: 15 Unifier 1 V1 --> #2:[ElemXor] * f1(f1(#1:[ElemXor])) V2 --> #2:[ElemXor] V3 --> #3:[ElemXor] V4 --> #1:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : f1(V1) =? f1(V2 * V3) . rewrites: 20 Unifier 1 V1 --> %1:[ElemXor] * %2:[ElemXor] V2 --> %1:[ElemXor] V3 --> %2:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : f1(V1) * f1(V2) =? f1(V3) * f1(V3 * V4) . rewrites: 53 Unifier 1 V1 --> %1:[ElemXor] V2 --> %1:[ElemXor] * %2:[ElemXor] V3 --> %1:[ElemXor] V4 --> %2:[ElemXor] Unifier 2 V1 --> %1:[ElemXor] * %2:[ElemXor] V2 --> %1:[ElemXor] V3 --> %1:[ElemXor] V4 --> %2:[ElemXor] Unifier 3 V1 --> %1:[ElemXor] V2 --> %1:[ElemXor] V3 --> %2:[ElemXor] V4 --> mt No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : f2(V1 * V2, V2 * V3) =? f2(V4, V5) . rewrites: 548 Unifier 1 V1 --> %1:[ElemXor] V2 --> %2:[ElemXor] V3 --> %3:[ElemXor] V4 --> %1:[ElemXor] * %2:[ElemXor] V5 --> %2:[ElemXor] * %3:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : f3(V1 * V2, V3 * V4, V5 * V6) =? f3( V7, V8, V9) . rewrites: 2940 Unifier 1 V1 --> %1:[ElemXor] V2 --> %2:[ElemXor] V3 --> %3:[ElemXor] V4 --> %4:[ElemXor] V5 --> %5:[ElemXor] V6 --> %6:[ElemXor] V7 --> %1:[ElemXor] * %2:[ElemXor] V8 --> %3:[ElemXor] * %4:[ElemXor] V9 --> %5:[ElemXor] * %6:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : V1 =? a * b * V2 . rewrites: 18 Unifier 1 V1 --> a * b * %1:[ElemXor] V2 --> %1:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : V1 * V2 =? a * b * V3 . rewrites: 370 Unifier 1 V1 --> a * b * %2:[ElemXor] V2 --> %1:[ElemXor] V3 --> %1:[ElemXor] * %2:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : V1 * a =? V2 * b . rewrites: 34 Unifier 1 V1 --> b * %1:[ElemXor] V2 --> a * %1:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : f1(a) * f1(V1) =? f1(V2 * b) * f1(V3 * c) . rewrites: 105 Unifier 1 V1 --> c * #1:[ElemXor] V2 --> a * b V3 --> #1:[ElemXor] Unifier 2 V1 --> b * #1:[ElemXor] V2 --> #1:[ElemXor] V3 --> a * c Unifier 3 V1 --> a V2 --> c * %1:[ElemXor] V3 --> b * %1:[ElemXor] No more unifiers. ========================================== filtered variant unify in EXCLUSIVE-OR : f2(a, V1) =? f2(V2 * V3, f1(a * b)) . rewrites: 13 Unifier 1 V1 --> f1(a * b) V2 --> a * #1:[ElemXor] V3 --> #1:[ElemXor] No more unifiers. Bye. Maude-Maude3.5.1/tests/Misc/filteredVariantUnification0000775000175000017510000000044415036121435022361 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/filteredVariantUnification.maude -no-banner -no-advise \ > filteredVariantUnification.out 2>&1 diff $srcdir/filteredVariantUnification.expected filteredVariantUnification.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/fileTest.maude0000664000175000017510000001665015036121435017721 0ustar nileshnilesh*** *** Test file operations and error handling. *** set show timing off . set print conceal on . print conceal file . load file mod FILE-TEST1 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op badName : -> String . endm erew <> < me : myClass | none > openFile(fileManager, me, badName, "r") . erew <> < me : myClass | none > openFile(fileManager, me, "/shouldNotExist", "r") . mod FILE-TEST2 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . op badNat : -> Nat . vars O O2 F : Oid . eq run = <> < me : myClass | none > openFile(fileManager, me, "../../../tests/Misc/fileTest.maude", "r") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > getChars(F, O, badNat) . endm erew run . mod FILE-TEST3 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . vars O O2 F : Oid . eq run = <> < me : myClass | none > openFile(fileManager, me, "../../../tests/Misc/fileTest.maude", "r") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > getChars(F, O, 1000) . endm erew run . mod FILE-TEST4 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . op badNat : -> Nat . vars O O2 F : Oid . var S : String . eq run = <> < me : myClass | none > openFile(fileManager, me, "../../../tests/Misc/fileTest.maude", "r") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > getChars(F, O, 1000) . rl < O : myClass | none > gotChars(O, F, S) => < O : myClass | none > setPosition(F, O, badNat, start) . endm erew run . mod FILE-TEST5 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . op badNat : -> Nat . vars O O2 F : Oid . var S : String . eq run = <> < me : myClass | none > openFile(fileManager, me, "../../../tests/Misc/fileTest.maude", "r") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > getChars(F, O, 1000) . rl < O : myClass | none > gotChars(O, F, S) => < O : myClass | none > setPosition(F, O, badNat, current) . endm erew run . mod FILE-TEST6 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . op badNat : -> Nat . vars O O2 F : Oid . var S : String . eq run = <> < me : myClass | none > openFile(fileManager, me, "../../../tests/Misc/fileTest.maude", "r") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > getChars(F, O, 1000) . rl < O : myClass | none > gotChars(O, F, S) => < O : myClass | none > setPosition(F, O, badNat, end) . endm erew run . mod FILE-TEST7 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . op badBase : -> Base . vars O O2 F : Oid . var S : String . eq run = <> < me : myClass | none > openFile(fileManager, me, "../../../tests/Misc/fileTest.maude", "r") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > getChars(F, O, 1000) . rl < O : myClass | none > gotChars(O, F, S) => < O : myClass | none > setPosition(F, O, 100, badBase) . endm erew run . mod FILE-TEST8 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . op state : Nat -> Attribute . vars O O2 F : Oid . var S : String . eq run = <> < me : myClass | none > openFile(fileManager, me, "../../../tests/Misc/fileTest.maude", "r") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > getChars(F, O, 1000) . rl < O : myClass | none > gotChars(O, F, S) => < O : myClass | none > setPosition(F, O, 100, start) . rl < O : myClass | none > positionSet(O, F) => < O : myClass | state(1) > getChars(F, O, 100) . endm erew run . mod FILE-TEST9 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . op state : Nat -> Attribute . vars O O2 F : Oid . var S : String . eq run = <> < me : myClass | none > openFile(fileManager, me, "../../../tests/Misc/fileTest.maude", "r") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > getChars(F, O, 1000) . rl < O : myClass | none > gotChars(O, F, S) => < O : myClass | none > setPosition(F, O, 100, start) . rl < O : myClass | none > positionSet(O, F) => < O : myClass | state(1) > getChars(F, O, 100) . rl < O : myClass | state(1) > gotChars(O, F, S) => < O : myClass | state(1) > getPosition(F, O) . endm erew run . mod FILE-TEST10 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . vars O O2 F : Oid . eq run = <> < me : myClass | none > openFile(fileManager, me, "../../../tests/Misc/fileTest.maude", "r") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > write(F, O, "test") . endm erew run . mod FILE-TEST11 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . vars O O2 F : Oid . eq run = <> < me : myClass | none > openFile(fileManager, me, "../../../tests/Misc/fileTest.maude", "r") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > flush(F, O) . endm erew run . mod FILE-TEST12 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . vars O O2 F : Oid . eq run = <> < me : myClass | none > openFile(fileManager, me, "fileTest.tmp", "w") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > write(F, O, "testing testing 1 2 3\n") . rl < O : myClass | none > wrote(O, F) => < O : myClass | none > getChars(F, O, 100) . endm erew run . mod FILE-TEST13 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . vars O O2 F : Oid . eq run = <> < me : myClass | none > openFile(fileManager, me, "fileTest.tmp", "w") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > write(F, O, "testing testing 1 2 3\n") . rl < O : myClass | none > wrote(O, F) => < O : myClass | none > getLine(F, O) . endm erew run . mod FILE-TEST14 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . vars O O2 F : Oid . eq run = <> < me : myClass | none > openFile(fileManager, me, "fileTest.tmp", "w+") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > write(F, O, "testing testing 1 2 3\n") . rl < O : myClass | none > wrote(O, F) => < O : myClass | none > setPosition(F, O, 0, start) . rl < O : myClass | none > positionSet(O, F) => < O : myClass | none > getLine(F, O) . endm erew run . mod FILE-TEST15 is pr FILE . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . op badName : -> String . vars O O2 F : Oid . var S : String . eq run = <> < me : myClass | none > openFile(fileManager, me, "fileTest.tmp", "w+") . rl < O : myClass | none > openedFile(O, O2, F) => < O : myClass | none > write(F, O, "testing testing 1 2 3\n") . rl < O : myClass | none > wrote(O, F) => < O : myClass | none > setPosition(F, O, 0, start) . rl < O : myClass | none > positionSet(O, F) => < O : myClass | none > getLine(F, O) . rl < O : myClass | none > gotLine(O, F, S) => < O : myClass | none > closeFile(F, O) . endm erew run . erew <> < me : myClass | none > removeFile(fileManager, me, "fileTest.tmp") . erew <> < me : myClass | none > removeFile(fileManager, me, badName) . erew <> < me : myClass | none > removeFile(fileManager, me, "fileTest.tmp") . Maude-Maude3.5.1/tests/Misc/fileTest.expected0000664000175000017510000001155415036121435020425 0ustar nileshnilesh========================================== erewrite in FILE-TEST1 : <> < me : myClass | none > openFile(fileManager, me, badName, "r") . rewrites: 0 result Configuration: <> < me : myClass | none > fileError(me, fileManager, "Bad file name.") ========================================== erewrite in FILE-TEST1 : <> < me : myClass | none > openFile(fileManager, me, "/shouldNotExist", "r") . rewrites: 0 result Configuration: <> < me : myClass | none > fileError(me, fileManager, "No such file or directory") ========================================== erewrite in FILE-TEST2 : run . rewrites: 2 result Configuration: <> < me : myClass | none > fileError(me, file(...), "Bad size.") ========================================== erewrite in FILE-TEST3 : run . rewrites: 2 result Configuration: <> < me : myClass | none > gotChars(me, file(...), "***\n***\tTest file operations and error handling.\n***\n\nset show timing off .\nset print conceal on .\nprint conceal file .\n\nload file\n\nmod FILE-TEST1 is\n pr FILE .\n op myClass : -> Cid .\n ops me : -> Oid .\n op badName : -> String .\nendm\n\nerew <> < me : myClass | none > openFile(fileManager, me, badName, \"r\") .\nerew <> < me : myClass | none > openFile(fileManager, me, \"/shouldNotExist\", \"r\") .\n\n\nmod FILE-TEST2 is\n pr FILE .\n op myClass : -> Cid .\n ops me : -> Oid .\n op run : -> Configuration .\n op badNat : -> Nat .\nvars O O2 F : Oid .\n\n eq run = <> < me : myClass | none > openFile(fileManager, me, \"../../../tests/Misc/fileTest.maude\", \"r\") .\n\n rl < O : myClass | none > openedFile(O, O2, F) =>\n < O : myClass | none > getChars(F, O, badNat) .\nendm\n\nerew run .\n\n\nmod FILE-TEST3 is\n pr FILE .\n op myClass : -> Cid .\n ops me : -> Oid .\n op run : -> Configuration .\nvars O O2 F : Oid .\n\n eq run = <> < me : myClass | none > openFile(fileManager, me, \"../../../tests/Misc/fileTest.") ========================================== erewrite in FILE-TEST4 : run . rewrites: 3 result Configuration: <> < me : myClass | none > fileError(me, file(...), "Bad offset.") ========================================== erewrite in FILE-TEST5 : run . rewrites: 3 result Configuration: <> < me : myClass | none > fileError(me, file(...), "Bad offset.") ========================================== erewrite in FILE-TEST6 : run . rewrites: 3 result Configuration: <> < me : myClass | none > fileError(me, file(...), "Bad offset.") ========================================== erewrite in FILE-TEST7 : run . rewrites: 3 result Configuration: <> < me : myClass | none > fileError(me, file(...), "Bad base.") ========================================== erewrite in FILE-TEST8 : run . rewrites: 4 result Configuration: <> < me : myClass | state(1) > gotChars(me, file(...), "rint conceal file .\n\nload file\n\nmod FILE-TEST1 is\n pr FILE .\n op myClass : -> Cid .\n ops me : -> ") ========================================== erewrite in FILE-TEST9 : run . rewrites: 5 result Configuration: <> < me : myClass | state(1) > positionGot(me, file(...), 200) ========================================== erewrite in FILE-TEST10 : run . rewrites: 2 result Configuration: <> < me : myClass | none > fileError(me, file(...), "File not open for writing.") ========================================== erewrite in FILE-TEST11 : run . rewrites: 2 result Configuration: <> < me : myClass | none > fileError(me, file(...), "File not open for writing.") ========================================== erewrite in FILE-TEST12 : run . rewrites: 3 result Configuration: <> < me : myClass | none > fileError(me, file(...), "File not open for reading.") ========================================== erewrite in FILE-TEST13 : run . rewrites: 3 result Configuration: <> < me : myClass | none > fileError(me, file(...), "File not open for reading.") ========================================== erewrite in FILE-TEST14 : run . rewrites: 4 result Configuration: <> < me : myClass | none > gotLine(me, file(...), "testing testing 1 2 3\n") ========================================== erewrite in FILE-TEST15 : run . rewrites: 5 result Configuration: <> closedFile(me, file(...)) < me : myClass | none > ========================================== erewrite in FILE-TEST15 : <> < me : myClass | none > removeFile(fileManager, me, "fileTest.tmp") . rewrites: 0 result Configuration: <> removedFile(me, fileManager) < me : myClass | none > ========================================== erewrite in FILE-TEST15 : <> < me : myClass | none > removeFile(fileManager, me, badName) . rewrites: 0 result Configuration: <> < me : myClass | none > fileError(me, fileManager, "Bad file name.") ========================================== erewrite in FILE-TEST15 : <> < me : myClass | none > removeFile(fileManager, me, "fileTest.tmp") . rewrites: 0 result Configuration: <> < me : myClass | none > fileError(me, fileManager, "No such file or directory") Bye. Maude-Maude3.5.1/tests/Misc/fileTest0000775000175000017510000000035115036121435016621 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/fileTest.maude -no-banner -no-advise -allow-files \ > fileTest.out 2>&1 diff $srcdir/fileTest.expected fileTest.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/directoryTest.maude0000664000175000017510000000270415036121435021001 0ustar nileshnilesh*** *** Test directory operations and error handling. *** set show timing off . set show stats off . load file view Message from TRIV to CONFIGURATION is sort Elt to Msg . endv mod DIR-TEST is inc DIRECTORY . pr (LIST * (op __ to _;_)){Message} . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . op [_] : List{Message} -> Attribute . vars O O2 D : Oid . var S : String . var T : EntryType . var L : List{Message} . eq run = <> < me : myClass | none > openDirectory(directoryManager, me, "/dev") . rl < O : myClass | none > openedDirectory(O, O2, D) => < O : myClass | [nil] > getDirectoryEntry(D, O) . rl < O : myClass | [L] > gotDirectoryEntry(O, D, S, T) => < O : myClass | [L ; gotDirectoryEntry(D, O, S, T)] > getDirectoryEntry(D, O) . *** need to return none for reproducable results in test suite rl < O : myClass | [L] > gotDirectoryEntry(O, D, "", endOfDirectory) => < O : myClass | none > . endm erew run . set show stats on . mod DIR-TEST2 is inc DIRECTORY . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . eq run = <> < me : myClass | none > makeDirectory(directoryManager, me, "testDirectory") . endm erew run . erew run . mod DIR-TEST3 is inc DIRECTORY . op myClass : -> Cid . ops me : -> Oid . op run : -> Configuration . eq run = <> < me : myClass | none > removeDirectory(directoryManager, me, "testDirectory") . endm erew run . erew run . Maude-Maude3.5.1/tests/Misc/directoryTest.expected0000664000175000017510000000154715036121435021513 0ustar nileshnilesh========================================== erewrite in DIR-TEST : run . result Configuration: <> < me : myClass | none > ========================================== erewrite in DIR-TEST2 : run . rewrites: 1 result Configuration: <> madeDirectory(me, directoryManager) < me : myClass | none > ========================================== erewrite in DIR-TEST2 : run . rewrites: 1 result Configuration: <> < me : myClass | none > directoryError(me, directoryManager, "File exists") ========================================== erewrite in DIR-TEST3 : run . rewrites: 1 result Configuration: <> removedDirectory(me, directoryManager) < me : myClass | none > ========================================== erewrite in DIR-TEST3 : run . rewrites: 1 result Configuration: <> < me : myClass | none > directoryError(me, directoryManager, "No such file or directory") Bye. Maude-Maude3.5.1/tests/Misc/directoryTest0000775000175000017510000000037315036121435017712 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/directoryTest.maude -no-banner -no-advise -allow-dir \ > directoryTest.out 2>&1 diff $srcdir/directoryTest.expected directoryTest.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/diophantine.maude0000664000175000017510000000112415036121435020432 0ustar nileshnileshset show timing off . load linear *** 10 solution system from Domenjoud LNCS 520 red natSystemSolve( ( (0,0) |-> 1 ; (0,1) |-> 2 ; (0,2) |-> -3 ; (0,3) |-> -2 ; (0,4) |-> -4 ; (1,0) |-> 2 ; (1,1) |-> -1 ; (1,2) |-> -3 ; (1,3) |-> 2 ; (1,4) |-> 5 ), zeroVector, "cd" ) . *** sailors and monkey from Contejean and Devie 1994 red natSystemSolve( ( (0,0) |-> 1 ; (0,1) |-> -5 ; (1,1) |-> 4 ; (1,2) |-> -5 ; (2,2) |-> 4 ; (2,3) |-> -5 ; (3,3) |-> 4 ; (3,4) |-> -5 ; (4,4) |-> 4 ; (4,5) |-> -5 ; (5,5) |-> 4 ; (5,6) |-> -5 ), (0 |-> 1 ; 1 |-> 1 ; 2 |-> 1 ; 3 |-> 1 ; 4 |-> 1 ; 5 |-> 1), "gcd" ) . Maude-Maude3.5.1/tests/Misc/diophantine.expected0000664000175000017510000000234715036121435021150 0ustar nileshnilesh========================================== reduce in DIOPHANTINE : natSystemSolve(0, 0 |-> 1 ; 0, 1 |-> 2 ; 0, 2 |-> -3 ; 0, 3 |-> -2 ; 0, 4 |-> -4 ; 1, 0 |-> 2 ; 1, 1 |-> -1 ; 1, 2 |-> -3 ; 1, 3 |-> 2 ; 1, 4 |-> 5, zeroVector, "cd") . rewrites: 1 result IntVectorSetPair: [ zeroVector | 0 |-> 9 ; 1 |-> 3 ; 2 |-> 5, 1 |-> 9 ; 2 |-> 2 ; 4 |-> 3, 1 |-> 12 ; 2 |-> 2 ; 3 |-> 9, 0 |-> 1 ; 1 |-> 3 ; 2 |-> 1 ; 3 |-> 2, 0 |-> 3 ; 1 |-> 7 ; 2 |-> 3 ; 4 |-> 2, 0 |-> 5 ; 1 |-> 3 ; 2 |-> 3 ; 3 |-> 1, 0 |-> 6 ; 1 |-> 5 ; 2 |-> 4 ; 4 |-> 1, 1 |-> 10 ; 2 |-> 2 ; 3 |-> 3 ; 4 |-> 2, 1 |-> 11 ; 2 |-> 2 ; 3 |-> 6 ; 4 |-> 1, 0 |-> 2 ; 1 |-> 5 ; 2 |-> 2 ; 3 |-> 1 ; 4 |-> 1 ] ========================================== reduce in DIOPHANTINE : natSystemSolve(0, 0 |-> 1 ; 0, 1 |-> -5 ; 1, 1 |-> 4 ; 1, 2 |-> -5 ; 2, 2 |-> 4 ; 2, 3 |-> -5 ; 3, 3 |-> 4 ; 3, 4 |-> -5 ; 4, 4 |-> 4 ; 4, 5 |-> -5 ; 5, 5 |-> 4 ; 5, 6 |-> -5, 0 |-> 1 ; 1 |-> 1 ; 2 |-> 1 ; 3 |-> 1 ; 4 |-> 1 ; 5 |-> 1, "gcd") . rewrites: 1 result IntVectorSetPair: [ 0 |-> 15621 ; 1 |-> 3124 ; 2 |-> 2499 ; 3 |-> 1999 ; 4 |-> 1599 ; 5 |-> 1279 ; 6 |-> 1023 | 0 |-> 15625 ; 1 |-> 3125 ; 2 |-> 2500 ; 3 |-> 2000 ; 4 |-> 1600 ; 5 |-> 1280 ; 6 |-> 1024 ] Bye. Maude-Maude3.5.1/tests/Misc/diophantine0000775000175000017510000000035015036121435017343 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/diophantine.maude -no-banner -no-advise \ > diophantine.out 2>&1 diff $srcdir/diophantine.expected diophantine.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/dekker.maude0000664000175000017510000001161115036121435017377 0ustar nileshnileshset show timing off . set show advisories off . ***( Dekker's algorithm is generally defined with two processes on a shared memory machine specified in an imperative language. Rather than give a translation of Dekker's algorithm into rewriting logic we give a deep embedding of a toy language just powerful enough to express Dekker's algorithm. ) load model-checker ***( Naive model of memory with locations named by Qids and holding Ints. ) fmod MEMORY is inc INT . inc QID . sorts Memory . op none : -> Memory . op __ : Memory Memory -> Memory [assoc comm id: none] . op [_,_] : Qid Int -> Memory . endfm ***( Equality test comparing the contents of a named memory location to a given machine integer. ) fmod TESTS is inc MEMORY . sort Test . op _=_ : Qid Int -> Test . op eval : Test Memory -> Bool . var Q : Qid . var M : Memory . vars N N' : Int . eq eval(Q = N, [Q, N'] M) = N == N' . endfm ***( Syntax for a trival sequential programming langauge. ) fmod SEQUENTIAL is inc TESTS . sorts UserStatement Program . subsort UserStatement < Program . op skip : -> Program . op _;_ : Program Program -> Program [prec 61 assoc id: skip] . op _:=_ : Qid Int -> Program . op if_then_fi : Test Program -> Program . op while_do_od : Test Program -> Program . op repeat_forever : Program -> Program . endfm ***( Processes have a process identifier and a program. The machine state is a soup of processes, a shared memory and a process identifier. The latter records the id of the last process to execute and is needed to talk about fairness. The operational semantics of the programming language running on this machine is given by just 5 rules. ) mod PARALLEL is inc SEQUENTIAL . inc TESTS . sorts Pid Process Soup MachineState . subsort Process < Soup . op [_,_] : Pid Program -> Process . op empty : -> Soup . op _|_ : Soup Soup -> Soup [prec 61 assoc comm id: empty] . op {_,_,_} : Soup Memory Pid -> MachineState . vars P R : Program . var S : Soup . var U : UserStatement . vars I J : Pid . var M : Memory . var Q : Qid . vars N X : Int . var T : Test . rl {[I, U ; R] | S, M, J} => {[I, R] | S, M, I} . rl {[I, (Q := N) ; R] | S, [Q, X] M, J} => {[I, R] | S, [Q, N] M, I} . rl {[I, if T then P fi ; R] | S, M, J} => {[I, if eval(T, M) then P else skip fi ; R] | S, M, I} . rl {[I, while T do P od ; R] | S, M, J} => {[I, if eval(T, M) then (P ; while T do P od) else skip fi ; R] | S, M, I} . rl {[I, repeat P forever ; R] | S, M, J} => {[I, P ; repeat P forever ; R] | S, M, I} . endm ***( The classical Dekker's algorithm for mutual exclusion between two processes using 3 variables, 'c1, 'c2 and 'turn, in shared memory. crit is used to represent the critical section and rem is used to represent the remainder (non-critical) part of each program. ) mod DEKKER is inc PARALLEL . subsort Int < Pid . ops crit rem : -> UserStatement . ops p1 p2 : -> Program . op initialMem : -> Memory . op initial : -> MachineState . eq p1 = repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever . eq p2 = repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever . eq initialMem = ['c1, 1] ['c2, 1] ['turn, 1] . eq initial = { [1, p1] | [2, p2], initialMem, 0 } . endm ***( The model check. Note how the operation enterCrit is used to represent two propositions: enterCrit(1) means process 1 is about to enter it's critical section and enterCrit(2) means process 2 is about to enter it's critical section. Similarly exec(1) means process 1 just executed and exec(2) means process 2 just executed. ) mod CHECK is inc DEKKER . inc MODEL-CHECKER . subsort MachineState < State . ops enterCrit exec : Pid -> Prop . var M : Memory . vars R : Program . var S : Soup . vars I J : Pid . eq {[I, crit ; R] | S, M, J} |= enterCrit(I) = true . eq {S, M, J} |= exec(J) = true . endm ***( Safety: we check that always we are not in a state where p1 is about to enter it's critical section and p2 is about to enter it's critical section. ) red modelCheck(initial, [] ~ (enterCrit(1) /\ enterCrit(2))) . ***( "Strong" liveness: if p1 gets to execute infinitely often then it enters it's critical section infinitely often. This is not true with Dekker's algorithm. ) red modelCheck(initial, []<> exec(1) -> []<> enterCrit(1)) . *** Counterexample has a 9 state lead in to a 2 state cycle. ***( "Weaker" liveness: if p1 and p2 both get to execute infinitely often then p1 and p2 both enter their critical sections infinitely often. ) red modelCheck(initial, ([]<> exec(1) /\ []<> exec(2)) -> ([]<> enterCrit(1) /\ []<> enterCrit(2))) . Maude-Maude3.5.1/tests/Misc/dekker.expected0000664000175000017510000001671615036121435020120 0ustar nileshnilesh========================================== reduce in CHECK : modelCheck(initial, []~ (enterCrit(1) /\ enterCrit(2))) . rewrites: 1048 result Bool: true ========================================== reduce in CHECK : modelCheck(initial, []<> exec(1) -> []<> enterCrit(1)) . rewrites: 100 result ModelCheckResult: counterexample({{[1, repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], ['c1, 1] ['c2, 1] [ 'turn, 1], 0}, unlabeled} {{[1, 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem ; repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], ['c1, 1] ['c2, 1] ['turn, 1], 1}, unlabeled} {{[1, while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem ; repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], ['c1, 0] ['c2, 1] ['turn, 1], 1}, unlabeled} {{[1, while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem ; repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem ; repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], ['c1, 0] [ 'c2, 1] ['turn, 1], 2}, unlabeled} {{[1, while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem ; repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem ; repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], ['c1, 0] ['c2, 0] ['turn, 1], 2}, unlabeled} {{[1, if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem ; repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem ; repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], ['c1, 0] ['c2, 0] ['turn, 1], 1}, unlabeled} {{[1, while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem ; repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem ; repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], [ 'c1, 0] ['c2, 0] ['turn, 1], 1}, unlabeled} {{[1, while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem ; repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem ; repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], ['c1, 0] ['c2, 0] ['turn, 1], 2}, unlabeled} {{[1, while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem ; repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem ; repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], ['c1, 0] ['c2, 0] ['turn, 1], 2}, unlabeled}, {{[1, if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem ; repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem ; repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], ['c1, 0] ['c2, 0] ['turn, 1], 1}, unlabeled} {{[1, while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem ; repeat 'c1 := 0 ; while 'c2 = 0 do if 'turn = 2 then 'c1 := 1 ; while 'turn = 2 do skip od ; 'c1 := 0 fi od ; crit ; 'turn := 2 ; 'c1 := 1 ; rem forever] | [2, 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem ; repeat 'c2 := 0 ; while 'c1 = 0 do if 'turn = 1 then 'c2 := 1 ; while 'turn = 1 do skip od ; 'c2 := 0 fi od ; crit ; 'turn := 1 ; 'c2 := 1 ; rem forever], ['c1, 0] [ 'c2, 0] ['turn, 1], 1}, unlabeled}) ========================================== reduce in CHECK : modelCheck(initial, []<> exec(1) /\ []<> exec(2) -> []<> enterCrit(1) /\ []<> enterCrit(2)) . rewrites: 1319 result Bool: true Bye. Maude-Maude3.5.1/tests/Misc/dekker0000775000175000017510000000032415036121435016307 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/dekker.maude -no-banner -no-advise \ > dekker.out 2>&1 diff $srcdir/dekker.expected dekker.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/debug.maude0000664000175000017510000000102015036121435017211 0ustar nileshnileshset show timing off . set show advisories off . fmod FOO is sort Foo . endfm fmod BAR is inc FOO . sort Bar . ops a b c : -> Bar . eq a = b . eq b = c . endfm debug red a . fmod FOO is sort Foo2 . endfm debug red in BAR : a . fmod FOO is sort Foo2 . endfm resume . resume . fmod FOO is sort Foo . endfm fmod BAR is inc FOO . sort Bar . ops a b c : -> Bar . eq a = b . eq b = c . endfm debug red in META-LEVEL : metaReduce(['BAR], 'a.Bar) . step . fmod FOO is sort Foo . endfm resume . Maude-Maude3.5.1/tests/Misc/debug.expected0000664000175000017510000000114315036121435017725 0ustar nileshnilesh========================================== debug reduce in BAR : a . ========================================== debug reduce in BAR : a . rewrites: 2 result Bar: c rewrites: 2 result Bar: c ========================================== debug reduce in META-LEVEL : metaReduce(['BAR], 'a.Bar) . *********** equation eq [Q:Qid] = sth Q:Qid is including Q:Qid . sorts none . none none none none none none none endsth . Q:Qid --> 'BAR ['BAR] ---> sth 'BAR is including 'BAR . sorts none . none none none none none none none endsth rewrites: 4 result ResultPair: {'c.Bar, 'Bar} Bye. Maude-Maude3.5.1/tests/Misc/debug0000775000175000017510000000032015036121435016124 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/debug.maude -no-banner -no-advise \ > debug.out 2>&1 diff $srcdir/debug.expected debug.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/dataStructures.maude0000664000175000017510000000540715036121435021155 0ustar nileshnileshset show timing off . fmod SORTABLE-LIST-TEST is inc SORTABLE-LIST{Nat<} . var N : Nat . var L : List{Nat<} . op gen : Nat -> List{Nat<} . eq gen(N) = gen2(N, nil) . op gen2 : Nat List{Nat<} -> List{Nat<} . eq gen2(0, L) = L . eq gen2(s N, L) = gen2(N, ((s N * s N) rem 100) L) . endfm red size(gen(100)) . red sort(gen(100)) . red reverse(sort(gen(100))) . red occurs(5, gen(100)) . red occurs(24, gen(100)) . fmod SET-TEST is inc SET{Nat} . var N M : Nat . var A : Set{Nat} . op gen : Nat Nat -> Set{Nat} . eq gen(N, M) = gen2(N, M, empty) . op gen2 : Nat Nat Set{Nat} -> Set{Nat} . eq gen2(0, M, A) = A . eq gen2(s N, M, A) = gen2(N, M, insert(s N * M, A)) . endfm red intersection(gen(100, 13), gen(100, 4)) . red union(gen(100, 13), gen(100, 4)) . red gen(100, 13) \ gen(100, 52) . red intersection(gen(100, 13), gen(100, 4)) \ gen(100, 52) . red | gen(100, 13) | . red delete(3,(4,5,3)) . red 53 in union(gen(100, 13), gen(100, 4)) . red 52 in union(gen(100, 13), gen(100, 4)) . fmod LIST-AND-SET-TEST is inc LIST-AND-SET{Nat} . var N : Nat . var L : List{Nat} . op gen : Nat -> List{Nat} . eq gen(N) = gen2(N, nil) . op gen2 : Nat List{Nat} -> List{Nat} . eq gen2(0, L) = L . eq gen2(s N, L) = gen2(N, ((s N * s N) rem 100) L) . endfm red gen(100) . red makeSet(gen(100)) . red filter(gen(100), makeSet(gen(10))) . red filterOut(gen(100), makeSet(gen(10))) . fmod SORTABLE-LIST-AND-SET-TEST is inc SORTABLE-LIST-AND-SET{Nat<} . var N : Nat . var L : List{Nat<} . op gen : Nat -> List{Nat<} . eq gen(N) = gen2(N, nil) . op gen2 : Nat List{Nat<} -> List{Nat<} . eq gen2(0, L) = L . eq gen2(s N, L) = gen2(N, ((s N * s N) rem 100) L) . endfm red makeList(makeSet(gen(100))) . fmod LIST*-TEST is inc LIST*{Nat} . ops a b : -> List{Nat} . eq a = [[1 2 3] [] [3 4 5 6]] . eq b = [[[1] []] 2 [1 2 3]] . endfm red append(a, b) . red size(append(a, b)) . red reverse(append(a, b)) . red head(a) . red tail(a) . red last(a) . red front(a) . red occurs([], a) . red occurs([2 3], a) . fmod SET*-TEST is inc SET*{Nat} . var N : Nat . op zf : Nat -> Set{Nat} . eq zf(0) = {} . eq zf(s N) = union({zf(N)}, zf(N)) . endfm red zf(0) . red zf(1) . red zf(2) . red zf(3) . red zf(4) . red | zf(10) | . red | zf(100) | . red 2^ zf(4) . red | 2^ zf(9) | . fmod MAP-TEST is inc MAP{String, Nat} . op a : -> Map{String, Nat} . eq a = insert("three", 3, insert("two", 2, insert("one", 1, insert("zero", 0, empty)))) . endfm red a . red a["one"] . fmod ARRAY-TEST is inc ARRAY{Nat, Nat0} . var N : Nat . op gen : Nat -> Array{Nat, Nat0} . eq gen(0) = empty . eq gen(s N) = insert(s N, s N rem 10, gen(N)) . endfm red gen(100) . red gen(100)[55] . red gen(100)[60] . red gen(100)[1000000000000000000000] . Maude-Maude3.5.1/tests/Misc/dataStructures.expected0000664000175000017510000002247715036121435021671 0ustar nileshnilesh========================================== reduce in SORTABLE-LIST-TEST : size(gen(100)) . rewrites: 504 result NzNat: 100 ========================================== reduce in SORTABLE-LIST-TEST : sort(gen(100)) . rewrites: 2627 result NeList{Nat<}: 0 0 0 0 0 0 0 0 0 0 1 1 1 1 4 4 4 4 9 9 9 9 16 16 16 16 21 21 21 21 24 24 24 24 25 25 25 25 25 25 25 25 25 25 29 29 29 29 36 36 36 36 41 41 41 41 44 44 44 44 49 49 49 49 56 56 56 56 61 61 61 61 64 64 64 64 69 69 69 69 76 76 76 76 81 81 81 81 84 84 84 84 89 89 89 89 96 96 96 96 ========================================== reduce in SORTABLE-LIST-TEST : reverse(sort(gen(100))) . rewrites: 2729 result NeList{Nat<}: 96 96 96 96 89 89 89 89 84 84 84 84 81 81 81 81 76 76 76 76 69 69 69 69 64 64 64 64 61 61 61 61 56 56 56 56 49 49 49 49 44 44 44 44 41 41 41 41 36 36 36 36 29 29 29 29 25 25 25 25 25 25 25 25 25 25 24 24 24 24 21 21 21 21 16 16 16 16 9 9 9 9 4 4 4 4 1 1 1 1 0 0 0 0 0 0 0 0 0 0 ========================================== reduce in SORTABLE-LIST-TEST : occurs(5, gen(100)) . rewrites: 603 result Bool: false ========================================== reduce in SORTABLE-LIST-TEST : occurs(24, gen(100)) . rewrites: 356 result Bool: true ========================================== reduce in SET-TEST : intersection(gen(100, 13), gen(100, 4)) . rewrites: 906 result NeSet{Nat}: 52, 104, 156, 208, 260, 312, 364 ========================================== reduce in SET-TEST : union(gen(100, 13), gen(100, 4)) . rewrites: 606 result NeSet{Nat}: 4, 8, 12, 13, 16, 20, 24, 26, 28, 32, 36, 39, 40, 44, 48, 52, 56, 60, 64, 65, 68, 72, 76, 78, 80, 84, 88, 91, 92, 96, 100, 104, 108, 112, 116, 117, 120, 124, 128, 130, 132, 136, 140, 143, 144, 148, 152, 156, 160, 164, 168, 169, 172, 176, 180, 182, 184, 188, 192, 195, 196, 200, 204, 208, 212, 216, 220, 221, 224, 228, 232, 234, 236, 240, 244, 247, 248, 252, 256, 260, 264, 268, 272, 273, 276, 280, 284, 286, 288, 292, 296, 299, 300, 304, 308, 312, 316, 320, 324, 325, 328, 332, 336, 338, 340, 344, 348, 351, 352, 356, 360, 364, 368, 372, 376, 377, 380, 384, 388, 390, 392, 396, 400, 403, 416, 429, 442, 455, 468, 481, 494, 507, 520, 533, 546, 559, 572, 585, 598, 611, 624, 637, 650, 663, 676, 689, 702, 715, 728, 741, 754, 767, 780, 793, 806, 819, 832, 845, 858, 871, 884, 897, 910, 923, 936, 949, 962, 975, 988, 1001, 1014, 1027, 1040, 1053, 1066, 1079, 1092, 1105, 1118, 1131, 1144, 1157, 1170, 1183, 1196, 1209, 1222, 1235, 1248, 1261, 1274, 1287, 1300 ========================================== reduce in SET-TEST : gen(100, 13) \ gen(100, 52) . rewrites: 906 result NeSet{Nat}: 13, 26, 39, 65, 78, 91, 117, 130, 143, 169, 182, 195, 221, 234, 247, 273, 286, 299, 325, 338, 351, 377, 390, 403, 429, 442, 455, 481, 494, 507, 533, 546, 559, 585, 598, 611, 637, 650, 663, 689, 702, 715, 741, 754, 767, 793, 806, 819, 845, 858, 871, 897, 910, 923, 949, 962, 975, 1001, 1014, 1027, 1053, 1066, 1079, 1105, 1118, 1131, 1157, 1170, 1183, 1209, 1222, 1235, 1261, 1274, 1287 ========================================== reduce in SET-TEST : intersection(gen(100, 13), gen(100, 4)) \ gen(100, 52) . rewrites: 1231 result Set{Nat}: empty ========================================== reduce in SET-TEST : | gen(100, 13) | . rewrites: 504 result NzNat: 100 ========================================== reduce in SET-TEST : delete(3, (4, 3, 5)) . rewrites: 2 result NeSet{Nat}: 4, 5 ========================================== reduce in SET-TEST : 53 in union(gen(100, 13), gen(100, 4)) . rewrites: 607 result Bool: false ========================================== reduce in SET-TEST : 52 in union(gen(100, 13), gen(100, 4)) . rewrites: 607 result Bool: true ========================================== reduce in LIST-AND-SET-TEST : gen(100) . rewrites: 302 result NeList{Nat}: 1 4 9 16 25 36 49 64 81 0 21 44 69 96 25 56 89 24 61 0 41 84 29 76 25 76 29 84 41 0 61 24 89 56 25 96 69 44 21 0 81 64 49 36 25 16 9 4 1 0 1 4 9 16 25 36 49 64 81 0 21 44 69 96 25 56 89 24 61 0 41 84 29 76 25 76 29 84 41 0 61 24 89 56 25 96 69 44 21 0 81 64 49 36 25 16 9 4 1 0 ========================================== reduce in LIST-AND-SET-TEST : makeSet(gen(100)) . rewrites: 482 result NeSet{Nat}: 0, 1, 4, 9, 16, 21, 24, 25, 29, 36, 41, 44, 49, 56, 61, 64, 69, 76, 81, 84, 89, 96 ========================================== reduce in LIST-AND-SET-TEST : filter(gen(100), makeSet(gen(10))) . rewrites: 648 result NeList{Nat}: 1 4 9 16 25 36 49 64 81 0 25 0 25 0 25 0 81 64 49 36 25 16 9 4 1 0 1 4 9 16 25 36 49 64 81 0 25 0 25 0 25 0 81 64 49 36 25 16 9 4 1 0 ========================================== reduce in LIST-AND-SET-TEST : filterOut(gen(100), makeSet(gen(10))) . rewrites: 648 result NeList{Nat}: 21 44 69 96 56 89 24 61 41 84 29 76 76 29 84 41 61 24 89 56 96 69 44 21 21 44 69 96 56 89 24 61 41 84 29 76 76 29 84 41 61 24 89 56 96 69 44 21 ========================================== reduce in SORTABLE-LIST-AND-SET-TEST : makeList(makeSet(gen(100))) . rewrites: 781 result NeList{Nat<}: 0 1 4 9 16 21 24 25 29 36 41 44 49 56 61 64 69 76 81 84 89 96 ========================================== reduce in LIST*-TEST : append(a, b) . rewrites: 3 result NeList{Nat}: [[1 2 3] [] [3 4 5 6] [[1] []] 2 [1 2 3]] ========================================== reduce in LIST*-TEST : size(append(a, b)) . rewrites: 16 result NzNat: 6 ========================================== reduce in LIST*-TEST : reverse(append(a, b)) . rewrites: 9 result NeList{Nat}: [[1 2 3] 2 [[1] []] [3 4 5 6] [] [1 2 3]] ========================================== reduce in LIST*-TEST : head(a) . rewrites: 2 result NeList{Nat}: [1 2 3] ========================================== reduce in LIST*-TEST : tail(a) . rewrites: 2 result NeList{Nat}: [[] [3 4 5 6]] ========================================== reduce in LIST*-TEST : last(a) . rewrites: 2 result NeList{Nat}: [3 4 5 6] ========================================== reduce in LIST*-TEST : front(a) . rewrites: 2 result NeList{Nat}: [[1 2 3] []] ========================================== reduce in LIST*-TEST : occurs([], a) . rewrites: 7 result Bool: true ========================================== reduce in LIST*-TEST : occurs([2 3], a) . rewrites: 9 result Bool: false ========================================== reduce in SET*-TEST : zf(0) . rewrites: 1 result Set{Nat}: {} ========================================== reduce in SET*-TEST : zf(1) . rewrites: 3 result NeSet{Nat}: {{}} ========================================== reduce in SET*-TEST : zf(2) . rewrites: 5 result NeSet{Nat}: {{}, {{}}} ========================================== reduce in SET*-TEST : zf(3) . rewrites: 7 result NeSet{Nat}: {{}, {{}}, {{}, {{}}}} ========================================== reduce in SET*-TEST : zf(4) . rewrites: 9 result NeSet{Nat}: {{}, {{}}, {{}, {{}}}, {{}, {{}}, {{}, {{}}}}} ========================================== reduce in SET*-TEST : | zf(10) | . rewrites: 42 result NzNat: 10 ========================================== reduce in SET*-TEST : | zf(100) | . rewrites: 402 result NzNat: 100 ========================================== reduce in SET*-TEST : 2^ zf(4) . rewrites: 69 result NeSet{Nat}: {{}, {{}}, {{{}}}, {{{}, {{}}}}, {{{}, {{}}, {{}, {{}}}}}, { {}, {{}}}, {{}, {{}, {{}}}}, {{}, {{}, {{}}, {{}, {{}}}}}, {{{}}, {{}, {{ }}}}, {{{}}, {{}, {{}}, {{}, {{}}}}}, {{{}, {{}}}, {{}, {{}}, {{}, {{}}}}}, {{}, {{}}, {{}, {{}}}}, {{}, {{}}, {{}, {{}}, {{}, {{}}}}}, {{}, {{}, {{ }}}, {{}, {{}}, {{}, {{}}}}}, {{{}}, {{}, {{}}}, {{}, {{}}, {{}, {{}}}}}, { {}, {{}}, {{}, {{}}}, {{}, {{}}, {{}, {{}}}}}} ========================================== reduce in SET*-TEST : | 2^ zf(9) | . rewrites: 3093 result NzNat: 512 ========================================== reduce in MAP-TEST : a . rewrites: 5 result Map{String,Nat}: "one" |-> 1, "three" |-> 3, "two" |-> 2, "zero" |-> 0 ========================================== reduce in MAP-TEST : a["one"] . rewrites: 8 result NzNat: 1 ========================================== reduce in ARRAY-TEST : gen(100) . rewrites: 501 result Array{Nat,Nat0}: 1 |-> 1 ; 2 |-> 2 ; 3 |-> 3 ; 4 |-> 4 ; 5 |-> 5 ; 6 |-> 6 ; 7 |-> 7 ; 8 |-> 8 ; 9 |-> 9 ; 11 |-> 1 ; 12 |-> 2 ; 13 |-> 3 ; 14 |-> 4 ; 15 |-> 5 ; 16 |-> 6 ; 17 |-> 7 ; 18 |-> 8 ; 19 |-> 9 ; 21 |-> 1 ; 22 |-> 2 ; 23 |-> 3 ; 24 |-> 4 ; 25 |-> 5 ; 26 |-> 6 ; 27 |-> 7 ; 28 |-> 8 ; 29 |-> 9 ; 31 |-> 1 ; 32 |-> 2 ; 33 |-> 3 ; 34 |-> 4 ; 35 |-> 5 ; 36 |-> 6 ; 37 |-> 7 ; 38 |-> 8 ; 39 |-> 9 ; 41 |-> 1 ; 42 |-> 2 ; 43 |-> 3 ; 44 |-> 4 ; 45 |-> 5 ; 46 |-> 6 ; 47 |-> 7 ; 48 |-> 8 ; 49 |-> 9 ; 51 |-> 1 ; 52 |-> 2 ; 53 |-> 3 ; 54 |-> 4 ; 55 |-> 5 ; 56 |-> 6 ; 57 |-> 7 ; 58 |-> 8 ; 59 |-> 9 ; 61 |-> 1 ; 62 |-> 2 ; 63 |-> 3 ; 64 |-> 4 ; 65 |-> 5 ; 66 |-> 6 ; 67 |-> 7 ; 68 |-> 8 ; 69 |-> 9 ; 71 |-> 1 ; 72 |-> 2 ; 73 |-> 3 ; 74 |-> 4 ; 75 |-> 5 ; 76 |-> 6 ; 77 |-> 7 ; 78 |-> 8 ; 79 |-> 9 ; 81 |-> 1 ; 82 |-> 2 ; 83 |-> 3 ; 84 |-> 4 ; 85 |-> 5 ; 86 |-> 6 ; 87 |-> 7 ; 88 |-> 8 ; 89 |-> 9 ; 91 |-> 1 ; 92 |-> 2 ; 93 |-> 3 ; 94 |-> 4 ; 95 |-> 5 ; 96 |-> 6 ; 97 |-> 7 ; 98 |-> 8 ; 99 |-> 9 ========================================== reduce in ARRAY-TEST : gen(100)[55] . rewrites: 504 result NzNat: 5 ========================================== reduce in ARRAY-TEST : gen(100)[60] . rewrites: 502 result Zero: 0 ========================================== reduce in ARRAY-TEST : gen(100)[1000000000000000000000] . rewrites: 502 result Zero: 0 Bye. Maude-Maude3.5.1/tests/Misc/dataStructures0000775000175000017510000000036415036121435020063 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/dataStructures.maude -no-banner -no-advise \ > dataStructures.out 2>&1 diff $srcdir/dataStructures.expected dataStructures.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/continue.maude0000664000175000017510000000500115036121435017752 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test continue and debug options with various commands. *** *** *** rewriting search *** mod COLLATZ is pr RAT . sort Foo . op f : Nat -> Foo . var N : Nat . crl f(N) => f(N / 2) if N rem 2 = 0 . crl f(N) => f(3 * N + 1) if N rem 2 = 1 . endm debug search [10] f(27) =>+ f(N) . step . step . resume . debug cont 10 . step . resume . cont . *** *** variant generation *** fmod XOR is sort XOR . sort Elem . ops cst1 cst2 cst3 cst4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm get variants [1] in XOR : X:XOR + cst1 . debug cont 1 . step . resume . cont . *** *** variant unification *** variant unify [2] X:XOR + cst1 =? Y:XOR + cst2 . debug cont 3 . step . step . resume . cont . variant unify [1] X:XOR + cst1 =? Y:XOR + cst2 such that X:XOR + cst1 irreducible . cont 1 . cont 1 . cont 1 . *** *** regular narrowing *** mod FOO is sort Foo . op f : Foo Foo -> Foo [assoc] . var X Y Z W A B C D : Foo . rl f(X, Y, Y, Z) => f(X, Y, Z) [narrowing] . endm debug narrow [5, 1] f(A, A) =>+ C . step . resume . debug cont 5 . resume . cont 5 . *** *** narrowing with variant unification. *** mod BAZ is sort Foo . ops f g h : Foo -> Foo . ops i j k : Foo Foo -> Foo . vars X Y Z W A B C D : Foo . eq j(f(X), Y) = i(f(Y), X) [variant] . rl g(i(X, k(Y, Z))) => f(k(Z, X)) [narrowing] . rl f(k(X, X)) => h(X) [narrowing] . endm debug vu-narrow [2] in BAZ : g(j(A, B)) =>* C . resume . debug cont 1 . step . resume . cont 2 . cont . *** *** rewriting with strategies *** mod FOO3 is sort Foo . ops a b c d e : -> Foo . ops f g : Foo Foo -> Foo [comm]. ops h i : Foo -> Bool . vars X Y Z : Foo . crl f(X, Y) => g(X, Z) if h(X) => i(Z) [label 1] . eq h(a) = i(d) . eq h(b) = i(e) . endm debug srew [1] f(a, b) using 1{all *} . step . resume . debug cont 1 . step . cont . *** *** variant matching. *** fmod XOR is sort XOR . sort Elem . ops a b c d w x y z : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm debug variant match [1] in XOR : X + Y <=? c + d . step . resume . *** No point in trying "debug cont" because all rewriting/narrowing *** has be done at this stage. cont 2 . cont . Maude-Maude3.5.1/tests/Misc/continue.expected0000664000175000017510000003326615036121435020476 0ustar nileshnilesh========================================== debug search [10] in COLLATZ : f(27) =>+ f(N) . *********** trial #1 crl f(N) => f(N / 2) if N rem 2 = 0 . N --> 27 *********** solving condition fragment N rem 2 = 0 *********** equation (built-in equation for symbol _rem_) 27 rem 2 ---> 1 *********** failure for condition fragment N rem 2 = 0 *********** failure #1 Solution 1 (state 1) states: 2 rewrites: 5 N --> 82 Solution 2 (state 2) states: 3 rewrites: 8 N --> 41 Solution 3 (state 3) states: 4 rewrites: 14 N --> 124 Solution 4 (state 4) states: 5 rewrites: 17 N --> 62 Solution 5 (state 5) states: 6 rewrites: 21 N --> 31 Solution 6 (state 6) states: 7 rewrites: 27 N --> 94 Solution 7 (state 7) states: 8 rewrites: 30 N --> 47 Solution 8 (state 8) states: 9 rewrites: 36 N --> 142 Solution 9 (state 9) states: 10 rewrites: 39 N --> 71 Solution 10 (state 10) states: 11 rewrites: 45 N --> 214 *********** trial #2 crl f(N) => f(N / 2) if N rem 2 = 0 . N --> 214 *********** solving condition fragment N rem 2 = 0 Solution 11 (state 11) states: 12 rewrites: 3 N --> 107 Solution 12 (state 12) states: 13 rewrites: 9 N --> 322 Solution 13 (state 13) states: 14 rewrites: 12 N --> 161 Solution 14 (state 14) states: 15 rewrites: 18 N --> 484 Solution 15 (state 15) states: 16 rewrites: 21 N --> 242 Solution 16 (state 16) states: 17 rewrites: 25 N --> 121 Solution 17 (state 17) states: 18 rewrites: 31 N --> 364 Solution 18 (state 18) states: 19 rewrites: 34 N --> 182 Solution 19 (state 19) states: 20 rewrites: 38 N --> 91 Solution 20 (state 20) states: 21 rewrites: 44 N --> 274 Solution 21 (state 21) states: 22 rewrites: 3 N --> 137 Solution 22 (state 22) states: 23 rewrites: 9 N --> 412 Solution 23 (state 23) states: 24 rewrites: 12 N --> 206 Solution 24 (state 24) states: 25 rewrites: 16 N --> 103 Solution 25 (state 25) states: 26 rewrites: 22 N --> 310 Solution 26 (state 26) states: 27 rewrites: 25 N --> 155 Solution 27 (state 27) states: 28 rewrites: 31 N --> 466 Solution 28 (state 28) states: 29 rewrites: 34 N --> 233 Solution 29 (state 29) states: 30 rewrites: 40 N --> 700 Solution 30 (state 30) states: 31 rewrites: 43 N --> 350 Solution 31 (state 31) states: 32 rewrites: 47 N --> 175 Solution 32 (state 32) states: 33 rewrites: 53 N --> 526 Solution 33 (state 33) states: 34 rewrites: 56 N --> 263 Solution 34 (state 34) states: 35 rewrites: 62 N --> 790 Solution 35 (state 35) states: 36 rewrites: 65 N --> 395 Solution 36 (state 36) states: 37 rewrites: 71 N --> 1186 Solution 37 (state 37) states: 38 rewrites: 74 N --> 593 Solution 38 (state 38) states: 39 rewrites: 80 N --> 1780 Solution 39 (state 39) states: 40 rewrites: 83 N --> 890 Solution 40 (state 40) states: 41 rewrites: 87 N --> 445 Solution 41 (state 41) states: 42 rewrites: 93 N --> 1336 Solution 42 (state 42) states: 43 rewrites: 96 N --> 668 Solution 43 (state 43) states: 44 rewrites: 100 N --> 334 Solution 44 (state 44) states: 45 rewrites: 104 N --> 167 Solution 45 (state 45) states: 46 rewrites: 110 N --> 502 Solution 46 (state 46) states: 47 rewrites: 113 N --> 251 Solution 47 (state 47) states: 48 rewrites: 119 N --> 754 Solution 48 (state 48) states: 49 rewrites: 122 N --> 377 Solution 49 (state 49) states: 50 rewrites: 128 N --> 1132 Solution 50 (state 50) states: 51 rewrites: 131 N --> 566 Solution 51 (state 51) states: 52 rewrites: 135 N --> 283 Solution 52 (state 52) states: 53 rewrites: 141 N --> 850 Solution 53 (state 53) states: 54 rewrites: 144 N --> 425 Solution 54 (state 54) states: 55 rewrites: 150 N --> 1276 Solution 55 (state 55) states: 56 rewrites: 153 N --> 638 Solution 56 (state 56) states: 57 rewrites: 157 N --> 319 Solution 57 (state 57) states: 58 rewrites: 163 N --> 958 Solution 58 (state 58) states: 59 rewrites: 166 N --> 479 Solution 59 (state 59) states: 60 rewrites: 172 N --> 1438 Solution 60 (state 60) states: 61 rewrites: 175 N --> 719 Solution 61 (state 61) states: 62 rewrites: 181 N --> 2158 Solution 62 (state 62) states: 63 rewrites: 184 N --> 1079 Solution 63 (state 63) states: 64 rewrites: 190 N --> 3238 Solution 64 (state 64) states: 65 rewrites: 193 N --> 1619 Solution 65 (state 65) states: 66 rewrites: 199 N --> 4858 Solution 66 (state 66) states: 67 rewrites: 202 N --> 2429 Solution 67 (state 67) states: 68 rewrites: 208 N --> 7288 Solution 68 (state 68) states: 69 rewrites: 211 N --> 3644 Solution 69 (state 69) states: 70 rewrites: 215 N --> 1822 Solution 70 (state 70) states: 71 rewrites: 219 N --> 911 Solution 71 (state 71) states: 72 rewrites: 225 N --> 2734 Solution 72 (state 72) states: 73 rewrites: 228 N --> 1367 Solution 73 (state 73) states: 74 rewrites: 234 N --> 4102 Solution 74 (state 74) states: 75 rewrites: 237 N --> 2051 Solution 75 (state 75) states: 76 rewrites: 243 N --> 6154 Solution 76 (state 76) states: 77 rewrites: 246 N --> 3077 Solution 77 (state 77) states: 78 rewrites: 252 N --> 9232 Solution 78 (state 78) states: 79 rewrites: 255 N --> 4616 Solution 79 (state 79) states: 80 rewrites: 259 N --> 2308 Solution 80 (state 80) states: 81 rewrites: 263 N --> 1154 Solution 81 (state 81) states: 82 rewrites: 267 N --> 577 Solution 82 (state 82) states: 83 rewrites: 273 N --> 1732 Solution 83 (state 83) states: 84 rewrites: 276 N --> 866 Solution 84 (state 84) states: 85 rewrites: 280 N --> 433 Solution 85 (state 85) states: 86 rewrites: 286 N --> 1300 Solution 86 (state 86) states: 87 rewrites: 289 N --> 650 Solution 87 (state 87) states: 88 rewrites: 293 N --> 325 Solution 88 (state 88) states: 89 rewrites: 299 N --> 976 Solution 89 (state 89) states: 90 rewrites: 302 N --> 488 Solution 90 (state 90) states: 91 rewrites: 306 N --> 244 Solution 91 (state 91) states: 92 rewrites: 310 N --> 122 Solution 92 (state 92) states: 93 rewrites: 314 N --> 61 Solution 93 (state 93) states: 94 rewrites: 320 N --> 184 Solution 94 (state 94) states: 95 rewrites: 323 N --> 92 Solution 95 (state 95) states: 96 rewrites: 327 N --> 46 Solution 96 (state 96) states: 97 rewrites: 331 N --> 23 Solution 97 (state 97) states: 98 rewrites: 337 N --> 70 Solution 98 (state 98) states: 99 rewrites: 340 N --> 35 Solution 99 (state 99) states: 100 rewrites: 346 N --> 106 Solution 100 (state 100) states: 101 rewrites: 349 N --> 53 Solution 101 (state 101) states: 102 rewrites: 355 N --> 160 Solution 102 (state 102) states: 103 rewrites: 358 N --> 80 Solution 103 (state 103) states: 104 rewrites: 362 N --> 40 Solution 104 (state 104) states: 105 rewrites: 366 N --> 20 Solution 105 (state 105) states: 106 rewrites: 370 N --> 10 Solution 106 (state 106) states: 107 rewrites: 374 N --> 5 Solution 107 (state 107) states: 108 rewrites: 380 N --> 16 Solution 108 (state 108) states: 109 rewrites: 383 N --> 8 Solution 109 (state 109) states: 110 rewrites: 387 N --> 4 Solution 110 (state 110) states: 111 rewrites: 391 N --> 2 Solution 111 (state 111) states: 112 rewrites: 395 N --> 1 No more solutions. states: 112 rewrites: 401 ========================================== get variants [1] in XOR : cst1 + X . Variant 1 rewrites: 0 XOR: cst1 + #1:XOR X --> #1:XOR *********** variant narrowing step eq 0 + Y = Y [variant] . Equation variable bindings: Y --> cst1 Old variant variable bindings: #1:XOR --> 0 cst1 + #1:XOR ---> cst1 Variant 2 rewrites: 3 Elem: cst1 X --> 0 Variant 3 rewrites: 0 XOR: 0 X --> cst1 Variant 4 rewrites: 0 XOR: %1:XOR X --> cst1 + %1:XOR No more variants. rewrites: 0 ========================================== variant unify [2] in XOR : X + cst1 =? Y + cst2 . Unifier 1 rewrites: 6 X --> cst2 + %1:XOR Y --> cst1 + %1:XOR Unifier 2 rewrites: 6 X --> cst2 Y --> cst1 *********** variant narrowing step eq 0 + Y = Y [variant] . Equation variable bindings: Y --> cst2 Old variant variable bindings: %1:XOR --> 0 cst2 + %1:XOR ---> cst2 *********** variant narrowing step eq X + X = 0 [variant] . Equation variable bindings: X --> cst2 Old variant variable bindings: %1:XOR --> cst2 cst2 + %1:XOR ---> 0 Unifier 3 rewrites: 18 X --> cst1 + cst2 + #1:XOR Y --> #1:XOR Unifier 4 rewrites: 18 X --> #1:XOR Y --> cst1 + cst2 + #1:XOR Unifier 5 rewrites: 18 X --> 0 Y --> cst1 + cst2 Unifier 6 rewrites: 0 X --> cst1 Y --> cst2 Unifier 7 rewrites: 0 X --> cst1 + cst2 Y --> 0 Unifier 8 rewrites: 0 X --> cst1 + %1:XOR Y --> cst2 + %1:XOR No more unifiers. rewrites: 0 ========================================== variant unify [1] in XOR : X + cst1 =? Y + cst2 such that X + cst1 irreducible . Unifier 1 rewrites: 3 X --> cst2 + %1:XOR Y --> cst1 + %1:XOR Unifier 2 rewrites: 0 X --> cst2 Y --> cst1 Unifier 3 rewrites: 0 X --> #1:XOR Y --> cst1 + cst2 + #1:XOR No more unifiers. rewrites: 0 ========================================== debug narrow [5, 1] in FOO : f(A, A) =>+ C . *********** narrowing step rl f(X, Y, Y, Z) => f(X, Y, Z) [narrowing] . Rule variable bindings: X --> f(%3:Foo, %1:Foo, %1:Foo, %2:Foo, %3:Foo) Y --> %1:Foo Z --> %2:Foo Subject variable bindings: #1:Foo --> f(%3:Foo, %1:Foo, %1:Foo, %2:Foo) f(#1:Foo, #1:Foo) ---> f(f(%3:Foo, %1:Foo, %1:Foo, %2:Foo, %3:Foo), %1:Foo, %2:Foo) Solution 1 rewrites: 1 state: f(%3:Foo, %1:Foo, %1:Foo, %2:Foo, %3:Foo, %1:Foo, %2:Foo) C --> f(%3:Foo, %1:Foo, %1:Foo, %2:Foo, %3:Foo, %1:Foo, %2:Foo) Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. Solution 2 rewrites: 2 state: f(%2:Foo, %3:Foo, %3:Foo, %1:Foo, %2:Foo, %3:Foo, %1:Foo, %2:Foo, %3:Foo, %1:Foo) C --> f(%2:Foo, %3:Foo, %3:Foo, %1:Foo, %2:Foo, %3:Foo, %1:Foo, %2:Foo, %3:Foo, %1:Foo) Solution 3 rewrites: 3 state: f(%1:Foo, %2:Foo, %1:Foo, %3:Foo, %2:Foo, %1:Foo, %3:Foo, %2:Foo) C --> f(%1:Foo, %2:Foo, %1:Foo, %3:Foo, %2:Foo, %1:Foo, %3:Foo, %2:Foo) Solution 4 rewrites: 4 state: f(%2:Foo, %1:Foo, %2:Foo, %1:Foo, %2:Foo, %1:Foo) C --> f(%2:Foo, %1:Foo, %2:Foo, %1:Foo, %2:Foo, %1:Foo) Solution 5 rewrites: 5 state: f(%2:Foo, %2:Foo, %1:Foo, %2:Foo, %1:Foo, %2:Foo, %1:Foo) C --> f(%2:Foo, %2:Foo, %1:Foo, %2:Foo, %1:Foo, %2:Foo, %1:Foo) Solution 6 rewrites: 1 state: f(%1:Foo, %2:Foo, %3:Foo, %1:Foo, %2:Foo, %3:Foo, %1:Foo, %3:Foo) C --> f(%1:Foo, %2:Foo, %3:Foo, %1:Foo, %2:Foo, %3:Foo, %1:Foo, %3:Foo) Solution 7 rewrites: 2 state: f(%1:Foo, %2:Foo, %1:Foo, %2:Foo, %1:Foo, %2:Foo) C --> f(%1:Foo, %2:Foo, %1:Foo, %2:Foo, %1:Foo, %2:Foo) Solution 8 rewrites: 3 state: f(%1:Foo, %2:Foo, %3:Foo, %1:Foo, %2:Foo, %2:Foo, %3:Foo) C --> f(%1:Foo, %2:Foo, %3:Foo, %1:Foo, %2:Foo, %2:Foo, %3:Foo) Solution 9 rewrites: 4 state: f(%1:Foo, %2:Foo, %1:Foo, %2:Foo, %2:Foo) C --> f(%1:Foo, %2:Foo, %1:Foo, %2:Foo, %2:Foo) Solution 10 rewrites: 5 state: f(%1:Foo, %2:Foo, %1:Foo, %2:Foo, %1:Foo) C --> f(%1:Foo, %2:Foo, %1:Foo, %2:Foo, %1:Foo) Solution 11 rewrites: 1 state: f(%1:Foo, %1:Foo, %1:Foo) C --> f(%1:Foo, %1:Foo, %1:Foo) Solution 12 rewrites: 2 state: f(%1:Foo, %1:Foo, %2:Foo, %1:Foo, %2:Foo) C --> f(%1:Foo, %1:Foo, %2:Foo, %1:Foo, %2:Foo) No more solutions. rewrites: 2 Warning: Some solutions may have been missed due to incomplete unification algorithm(s). ========================================== debug vu-narrow [2] in BAZ : g(j(A, B)) =>* C . Solution 1 rewrites: 1 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(j(@1:Foo, @2:Foo)) #1:Foo --> @1:Foo #2:Foo --> @2:Foo Solution 2 rewrites: 1 state: g(j(#1:Foo, #2:Foo)) accumulated substitution: A --> #1:Foo B --> #2:Foo variant unifier: C --> g(i(f(%1:Foo), %2:Foo)) #1:Foo --> f(%2:Foo) #2:Foo --> %1:Foo *********** variant narrowing step eq j(f(X), Y) = i(f(Y), X) [variant] . Equation variable bindings: X --> @1:Foo Y --> @5:Foo Old variant variable bindings: %1:Foo --> @2:Foo %2:Foo --> @3:Foo %3:Foo --> @4:Foo %4:Foo --> f(@1:Foo) %5:Foo --> @5:Foo j(%4:Foo, %5:Foo) ---> i(f(@5:Foo), @1:Foo) Solution 3 rewrites: 2 state: f(k(%2:Foo, f(%3:Foo))) accumulated substitution: A --> f(k(%1:Foo, %2:Foo)) B --> %3:Foo variant unifier: C --> f(k(@1:Foo, f(@2:Foo))) %2:Foo --> @1:Foo %3:Foo --> @2:Foo Solution 4 rewrites: 4 state: h(f(@1:Foo)) accumulated substitution: A --> f(k(@2:Foo, f(@1:Foo))) B --> @1:Foo variant unifier: C --> h(f(%1:Foo)) @1:Foo --> %1:Foo Solution 5 rewrites: 5 state: f(k(@2:Foo, h(@1:Foo))) accumulated substitution: A --> f(k(@3:Foo, @2:Foo)) B --> k(@1:Foo, @1:Foo) variant unifier: C --> f(k(%1:Foo, h(%2:Foo))) @2:Foo --> %1:Foo @1:Foo --> %2:Foo Solution 6 rewrites: 1 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, f(k(%1:Foo, %1:Foo)))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo Solution 7 rewrites: 2 state: h(h(%1:Foo)) accumulated substitution: A --> f(k(%2:Foo, h(%1:Foo))) B --> k(%1:Foo, %1:Foo) variant unifier: C --> h(h(@1:Foo)) %1:Foo --> @1:Foo No more solutions. rewrites: 2 ========================================== debug srewrite [1] in FOO3 : f(a, b) using 1{all *} . *********** equation eq h(a) = i(d) . empty substitution h(a) ---> i(d) Solution 1 rewrites: 3 result Foo: g(a, d) *********** rule crl [1] : f(X, Y) => g(Z, X) if h(X) => i(Z) . X --> b Y --> a Z --> e f(a, b) ---> g(e, b) Solution 2 rewrites: 1 result Foo: g(b, e) No more solutions. rewrites: 0 ========================================== debug variant match [1] in XOR : X + Y <=? c + d . *********** variant narrowing step eq 0 + Y = Y [variant] . Equation variable bindings: Y --> %1:XOR Old variant variable bindings: #1:XOR --> 0 #2:XOR --> %1:XOR #1:XOR + #2:XOR ---> %1:XOR rewrites: 10 Matcher 1 X --> c Y --> d Matcher 2 X --> d Y --> c Matcher 3 X --> 0 Y --> c + d Matcher 4 X --> c + d Y --> 0 Matcher 5 X --> c + #1:XOR Y --> d + #1:XOR Matcher 6 X --> d + #1:XOR Y --> c + #1:XOR Matcher 7 X --> c + d + #1:XOR Y --> #1:XOR Matcher 8 X --> #1:XOR Y --> c + d + #1:XOR No more matchers. Bye. Maude-Maude3.5.1/tests/Misc/continue0000775000175000017510000000033415036121435016667 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/continue.maude -no-banner -no-advise \ > continue.out 2>&1 diff $srcdir/continue.expected continue.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/commands.maude0000664000175000017510000000130315036121435017730 0ustar nileshnileshset show timing off . set show advisories off . mod FOO is inc INT . op f : Int Int -> Int [assoc comm id: 1] . sort Foo . subsort Int < Foo . vars X Y Z : Int . eq f(f(X, Y), X) = f(Y, Y) . cq f(f(X, Y), Y) = f(Y, X) if X =/= Y . rl f(f(X, Y), X) => f(Y, Y) . crl f(f(X, Y), Y) => f(Z, X) if Z =/= Y . mb f(X, X) : NzInt . cmb f(X, Y) : NzInt if X =/= Y . endm show mod . show all FOO . show sorts . show kinds . show eqs . show mbs . show rls . show vars . show summary . select INT . show mod . show mod FOO . show eqs FOO . parse in FOO : f(0, 2) . set print mixfix off . show all FOO . set print mixfix on . set print with parens on . show all FOO . set print with parens off . Maude-Maude3.5.1/tests/Misc/commands.expected0000664000175000017510000015002715036121435020446 0ustar nileshnileshWarning: , line 12 (mod FOO): variable Z is used before it is bound in rule: crl f(X, Y, Y) => f(Z, X) if Z =/= Y = true . mod FOO is including INT . sort Foo . subsort Int < Foo . op f : Int Int -> Int [assoc comm id: 1] . vars X Y Z : Int . eq f (f (X, Y), X) = f (Y, Y) . cq f (f (X, Y), Y) = f (Y, X) if X =/= Y . rl f (f (X, Y), X) => f (Y, Y) . crl f (f (X, Y), Y) => f (Z, X) if Z =/= Y . mb f (X, X) : NzInt . cmb f (X, Y) : NzInt if X =/= Y . endm Warning: membership axioms are not guaranteed to work correctly for iterated symbol s_ as it has declarations that are not at the kind level. Warning: membership axioms are not guaranteed to work correctly for associative symbol _+_ as it has declarations that are not at the kind level. Warning: membership axioms are not guaranteed to work correctly for associative symbol _*_ as it has declarations that are not at the kind level. Warning: membership axioms are not guaranteed to work correctly for associative symbol gcd as it has declarations that are not at the kind level. Warning: membership axioms are not guaranteed to work correctly for associative symbol lcm as it has declarations that are not at the kind level. Warning: membership axioms are not guaranteed to work correctly for associative symbol min as it has declarations that are not at the kind level. Warning: membership axioms are not guaranteed to work correctly for associative symbol max as it has declarations that are not at the kind level. Warning: membership axioms are not guaranteed to work correctly for associative symbol _xor_ as it has declarations that are not at the kind level. Warning: membership axioms are not guaranteed to work correctly for associative symbol _&_ as it has declarations that are not at the kind level. Warning: membership axioms are not guaranteed to work correctly for associative symbol _|_ as it has declarations that are not at the kind level. Warning: membership axioms are not guaranteed to work correctly for associative symbol f as it has declarations that are not at the kind level. mod FOO is sorts Bool Zero NzNat Nat NzInt Int Foo . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . subsort Int < Foo . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Foo] [Foo] [Foo] -> [Foo] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op f : Int Int -> Int [assoc comm id: 1] . var Z : Int . var X : Int . var Y : Int . mb f(X, X) : NzInt . cmb f(X, Y) : NzInt if X =/= Y = true . eq f(X, X, Y) = f(Y, Y) . ceq f(X, Y, Y) = f(X, Y) if X =/= Y = true . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . rl f(X, X, Y) => f(Y, Y) . crl f(X, Y, Y) => f(Z, X) if Z =/= Y = true [nonexec] . endm sort Bool . sort Zero . subsorts Zero < Nat Int Foo . sort NzNat . subsorts NzNat < Nat NzInt Int Foo . sort Nat . subsorts NzNat Zero < Nat < Int Foo . sort NzInt . subsorts NzNat < NzInt < Int Foo . sort Int . subsorts NzNat Zero Nat NzInt < Int < Foo . sort Foo . subsorts NzNat Zero Nat NzInt Int < Foo . [Bool]: 1 Bool [Foo]: 1 Foo 2 Int 3 NzInt 4 Nat 5 Zero 6 NzNat eq f(X, X, Y) = f(Y, Y) . ceq f(X, Y, Y) = f(X, Y) if X =/= Y = true . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . mb f(X, X) : NzInt . cmb f(X, Y) : NzInt if X =/= Y = true . rl f(X, X, Y) => f(Y, Y) . crl f(X, Y, Y) => f(Z, X) if Z =/= Y = true [nonexec] . var Z : Int . var X : Int . var Y : Int . Grammar: nonterminals: 43 terminals: 128 productions: 199 Term rewriting system: kinds: 2 sorts: 7 user symbols: 35 total symbols: 38 polymorphic operators: 3 membership axioms: 2 equations: 11 rules: 2 strategies: 0 strategy definitions: 0 fmod INT is protecting NAT . sorts NzInt Int . subsorts NzNat < NzInt Nat < Int . op -_ : NzNat -> NzInt [ctor special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op -_ : NzInt -> NzInt [ditto] . op -_ : Int -> Int [ditto] . op _+_ : Int Int -> Int [assoc comm prec 33 special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _*_ : Int Int -> Int [ditto] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _^_ : NzInt Nat -> NzInt [ditto] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op abs : Int -> Nat [ditto] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op gcd : Int Int -> Nat [ditto] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op lcm : Int Int -> Nat [ditto] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op min : Int Int -> Int [ditto] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op max : Int Int -> Int [ditto] . op max : NzNat Int -> NzNat [ditto] . op max : Nat Int -> Nat [ditto] . op ~_ : Int -> Int [special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _xor_ : Int Int -> Int [assoc comm prec 55 special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _&_ : Int Int -> Int [ditto] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _|_ : Int Int -> Int [ditto] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int))] . op _<_ : Int Int -> Bool [prec 37 special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> Int) term-hook trueTerm (true) term-hook falseTerm (false))] . endfm mod FOO is including INT . sort Foo . subsort Int < Foo . op f : Int Int -> Int [assoc comm id: 1] . vars X Y Z : Int . eq f (f (X, Y), X) = f (Y, Y) . cq f (f (X, Y), Y) = f (Y, X) if X =/= Y . rl f (f (X, Y), X) => f (Y, Y) . crl f (f (X, Y), Y) => f (Z, X) if Z =/= Y . mb f (X, X) : NzInt . cmb f (X, Y) : NzInt if X =/= Y . endm eq f(X, X, Y) = f(Y, Y) . ceq f(X, Y, Y) = f(X, Y) if X =/= Y = true . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . Int: f(0, 2) mod FOO is sorts Bool Zero NzNat Nat NzInt Int Foo . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . subsort Int < Foo . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Foo] [Foo] [Foo] -> [Foo] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op f : Int Int -> Int [assoc comm id: 1] . var Z : Int . var X : Int . var Y : Int . mb f(X, X) : NzInt . cmb f(X, Y) : NzInt if _=/=_(X, Y) = true . eq f(X, X, Y) = f(Y, Y) . ceq f(X, Y, Y) = f(X, Y) if _=/=_(X, Y) = true . eq _and_(true, A:Bool) = A:Bool . eq _and_(false, A:Bool) = false . eq _and_(A:Bool, A:Bool) = A:Bool . eq _xor_(false, A:Bool) = A:Bool . eq _xor_(A:Bool, A:Bool) = false . eq _and_(A:Bool, _xor_(B:Bool, C:Bool)) = _xor_(_and_(A:Bool, B:Bool), _and_( A:Bool, C:Bool)) . eq not_(A:Bool) = _xor_(true, A:Bool) . eq _or_(A:Bool, B:Bool) = _xor_(_and_(A:Bool, B:Bool), _xor_(A:Bool, B:Bool)) . eq _implies_(A:Bool, B:Bool) = not_(_xor_(A:Bool, _and_(A:Bool, B:Bool))) . rl f(X, X, Y) => f(Y, Y) . crl f(X, Y, Y) => f(Z, X) if _=/=_(Z, Y) = true [nonexec] . endm mod FOO is sorts Bool Zero NzNat Nat NzInt Int Foo . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . subsort Int < Foo . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Foo] [Foo] [Foo] -> [Foo] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op f : Int Int -> Int [assoc comm id: 1] . var Z : Int . var X : Int . var Y : Int . mb f(X, X) : NzInt . cmb f(X, Y) : NzInt if (X =/= Y) = true . eq f(X, X, Y) = f(Y, Y) . ceq f(X, Y, Y) = f(X, Y) if (X =/= Y) = true . eq (true and A:Bool) = A:Bool . eq (false and A:Bool) = false . eq (A:Bool and A:Bool) = A:Bool . eq (false xor A:Bool) = A:Bool . eq (A:Bool xor A:Bool) = false . eq (A:Bool and (B:Bool xor C:Bool)) = ((A:Bool and B:Bool) xor (A:Bool and C:Bool)) . eq (not A:Bool) = (true xor A:Bool) . eq (A:Bool or B:Bool) = ((A:Bool and B:Bool) xor (A:Bool xor B:Bool)) . eq (A:Bool implies B:Bool) = (not (A:Bool xor (A:Bool and B:Bool))) . rl f(X, X, Y) => f(Y, Y) . crl f(X, Y, Y) => f(Z, X) if (Z =/= Y) = true [nonexec] . endm Bye. Maude-Maude3.5.1/tests/Misc/commands0000775000175000017510000000033415036121435016644 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/commands.maude -no-banner -no-advise \ > commands.out 2>&1 diff $srcdir/commands.expected commands.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/bubble.maude0000664000175000017510000002065515036121435017375 0ustar nileshnilesh*** check bubble corner cases fmod HANG is including QID-LIST . sorts Tokens Foo Bar . op start__ : Tokens Bar -> Foo . op __ : Tokens Tokens -> Bar . op tokens : QidList -> Tokens [special( id-hook Bubble (0 -1 < >) id-hook Exclude (start) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** MSCP10 hangs parse start . **** adjacent possibly empty bubbles **** fmod EMPTY-ADJACENT is including QID-LIST . sorts Tokens Foo . op start__ : Tokens Tokens -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (0 -1 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** both empty (MSCP10 finds no parse) parse start . *** ambiguous (MSCP10 finds no parse) parse start a . *** ambiguous (MSCP10 finds no parse) parse start < a > . fmod TRIPLE-EMPTY is including QID-LIST . sorts Foo Tokens Tokens2 . op [___] : Tokens Tokens2 Tokens -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (0 -1 < >) id-hook Exclude (a) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . op tokens2 : QidList -> Tokens2 [special( id-hook Bubble (0 -1 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** all empty (MSCP10 finds no parse) parse [ ] . fmod EMPTY-ADJACENT2 is including QID-LIST . sorts Tokens Foo . op __ : Tokens Tokens -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (0 -1 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** ambiguous (MSCP10 finds no parse) parse a . fmod EMPTY-ADJACENT3 is including QID-LIST . sorts Tokens Tokens2 Foo . op __ : Tokens Tokens2 -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (0 -1 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . op tokens2 : QidList -> Tokens2 [special( id-hook Bubble (0 -1 < >) id-hook Exclude (a) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** only first bubble can take a (MSCP10 finds no parse) parse a . fmod EMPTY-ADJACENT4 is including QID-LIST . sorts Tokens Tokens2 Foo Bar . op start__ : Tokens Bar -> Foo [prec 15] . op __ : Tokens Tokens2 -> Bar [prec 10] . op tokens : QidList -> Tokens [special( id-hook Bubble (0 -1 < >) id-hook Exclude (start) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . op tokens2 : QidList -> Tokens2 [special( id-hook Bubble (0 -1 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** ambiguous parse start . **** error position *** fmod ERROR-POSITION is including QID-LIST . sorts Tokens Foo . op start_ : Tokens -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (1 10 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** bad close parse start a b > c < . *** missing close (MSCP10 reports error in wrong position) parse start a b < c d . *** close not encountered in time; g needs to be > (MSCP10 reports error in wrong position) parse start < a < b > c d e f g > . **** competing bubble definitions **** fmod PAREN-DIFF is including QID-LIST . sorts Tokens Foo . op start_ : Tokens -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (1 -1 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . op _;_ : QidList QidList -> QidList [assoc] . op tokens : QidList -> Tokens [special( id-hook Bubble (1 -1 <| |>) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (_;_ : QidList QidList ~> QidList) )] . endfm *** 2nd bubble def parse start a < . *** 1st bubble def parse start a <| . *** ambiguous (MSCP10 doesn't see this) parse start a b . fmod BOUND-DIFF is including QID-LIST . sorts Tokens Foo . op start_ : Tokens -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (3 -1 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . op _;_ : QidList QidList -> QidList [assoc] . op tokens : QidList -> Tokens [special( id-hook Bubble (1 5 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (_;_ : QidList QidList ~> QidList) )] . endfm *** 2nd bubble def parse start a b . *** 1st bubble def parse start a b c < e > f . *** ambiguous (MSCP10 doesn't see this) parse start a b c . **** adjacent nonempty bubbles **** fmod NON-EMPTY-ADJACENT is including QID-LIST . sorts Tokens Foo . op start__ : Tokens Tokens -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (1 -1 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** one token each parse start a b . *** ambiguous (MSCP10 finds no parse) parse start a b c d e f g . *** parens force split parse start < b > < d e f g > . *** unmatched close - unexpected end of tokens (MSCP10 reports wrong error position) parse start < b > < d e f g . *** unexpected close parse start < b > > d e f g . fmod LOWER-BOUND-ADJACENT is including QID-LIST . sorts Tokens Foo . op start__ : Tokens Tokens -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (3 -1 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** insufficient tokens parse start a b c d e . *** three tokens each parse start a b c d e f . *** ambiguous (MSCP10 finds no parse) parse start a b c d e f g . *** parens force split parse start < a b c d > < e f g > . fmod UPPER-BOUND-NON-EMPTY-ADJACENT is including QID-LIST . sorts Tokens Foo . op start__ : Tokens Tokens -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (1 3 < >) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** ambiguous (MSCP10 finds no parse) parse start a b c d e . *** parens force split (MSCP10 finds no parse) parse start < a > b c . *** three tokens each (MSCP10 finds no parse) parse start a b c d e f . *** too many tokens (MSCP10 reports wrong error position) parse start a b c d e f g . **** unbound tree of empty bubbles possible **** fmod INFINITE-EMPTY-BUBBLES is including QID-LIST . sorts Tokens Foo . op __ : Tokens Foo -> Foo . op end : -> Foo . op tokens : QidList -> Tokens [special( id-hook Bubble (0 -1 < >) id-hook Exclude (start) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** ambiguous (MSCP10 only finds one parse) parse end . *** force at least one empty bubble fmod EMPTY-BUBBLE is including QID-LIST . sorts Tokens Foo Bar . op start_ : Foo -> Bar [prec 0 gather (E)] . op __ : Tokens Foo -> Foo [prec 0 gather (& &)]. op e n d : -> Foo [prec 10]. op tokens : QidList -> Tokens [special( id-hook Bubble (0 -1 < >) id-hook Exclude (start) op-hook qidSymbol ( : ~> Qid) op-hook nilQidListSymbol (nil : ~> QidList) op-hook qidListSymbol (__ : QidList QidList ~> QidList) )] . endfm *** ambiguous (MSCP10 infinite recursion in ScpParser::setAmbNode()) parse start e n d . Maude-Maude3.5.1/tests/Misc/bubble.expected0000664000175000017510000000761515036121435020104 0ustar nileshnileshFoo: start tokens(nil) tokens(nil) tokens(nil) Foo: start tokens(nil) tokens(nil) Warning: , line 43: ambiguous term, two parses are: Foo : start tokens(nil) tokens('a) -versus- Foo : start tokens('a) tokens(nil) Arbitrarily taking the first as correct. Foo: start tokens(nil) tokens('a) Warning: , line 46: ambiguous term, two parses are: Foo : start tokens(nil) tokens('< 'a '>) -versus- Foo : start tokens('< 'a '>) tokens(nil) Arbitrarily taking the first as correct. Foo: start tokens(nil) tokens('< 'a '>) Foo: [tokens(nil) tokens2(nil) tokens(nil)] Warning: , line 92: ambiguous term, two parses are: Foo : tokens(nil) tokens('a) -versus- Foo : tokens('a) tokens(nil) Arbitrarily taking the first as correct. Foo: tokens(nil) tokens('a) Foo: tokens('a) tokens2(nil) Warning: , line 147: ambiguous term, two parses are: Bar : tokens(nil) tokens2('start) -versus- Foo : start tokens(nil) tokens(nil) tokens2(nil) Arbitrarily taking the first as correct. Bar: tokens(nil) tokens2('start) Warning: , line 167: didn't expect token >: start a b > <---*HERE* Warning: , line 167: no parse for term. Warning: , line 170 : unexpected end of tokens. Warning: , line 170: no parse for term. Warning: , line 173: didn't expect token g: start < a < b > c d e f g <---*HERE* Warning: , line 173: no parse for term. Foo: start tokens('a ; '<) Foo: start tokens('a '<|) Warning: , line 209: ambiguous term, two parses are: Foo : start tokens('a ; 'b) -versus- Foo : start tokens('a 'b) Arbitrarily taking the first as correct. Foo: start tokens('a ; 'b) Foo: start tokens('a ; 'b) Foo: start tokens('a 'b 'c '< 'e '> 'f) Warning: , line 243: ambiguous term, two parses are: Foo : start tokens('a ; 'b ; 'c) -versus- Foo : start tokens('a 'b 'c) Arbitrarily taking the first as correct. Foo: start tokens('a ; 'b ; 'c) Foo: start tokens('a) tokens('b) Warning: , line 266: ambiguous term, two parses are: Foo : start tokens('a) tokens('b 'c 'd 'e 'f 'g) -versus- Foo : start tokens('a 'b) tokens('c 'd 'e 'f 'g) Arbitrarily taking the first as correct. Foo: start tokens('a) tokens('b 'c 'd 'e 'f 'g) Foo: start tokens('< 'b '>) tokens('< 'd 'e 'f 'g '>) Warning: , line 272 : unexpected end of tokens. Warning: , line 272: no parse for term. Warning: , line 275: didn't expect token >: start < b > > <---*HERE* Warning: , line 275: no parse for term. Warning: , line 293 : unexpected end of tokens. Warning: , line 293: no parse for term. Foo: start tokens('a 'b 'c) tokens('d 'e 'f) Warning: , line 299: ambiguous term, two parses are: Foo : start tokens('a 'b 'c) tokens('d 'e 'f 'g) -versus- Foo : start tokens('a 'b 'c 'd) tokens('e 'f 'g) Arbitrarily taking the first as correct. Foo: start tokens('a 'b 'c) tokens('d 'e 'f 'g) Foo: start tokens('< 'a 'b 'c 'd '>) tokens('< 'e 'f 'g '>) Warning: , line 320: ambiguous term, two parses are: Foo : start tokens('a 'b) tokens('c 'd 'e) -versus- Foo : start tokens('a 'b 'c) tokens('d 'e) Arbitrarily taking the first as correct. Foo: start tokens('a 'b) tokens('c 'd 'e) Foo: start tokens('< 'a '>) tokens('b 'c) Foo: start tokens('a 'b 'c) tokens('d 'e 'f) Warning: , line 329: didn't expect token g: start a b c d e f g <---*HERE* Warning: , line 329: no parse for term. Warning: , line 352: ambiguous term, two parses are: Foo : end -versus- Foo : tokens(nil) end Arbitrarily taking the first as correct. Foo: end Warning: , line 375: ambiguous term, two parses are: Bar : start tokens(nil) e n d -versus- Bar : start tokens(nil) tokens(nil) e n d Arbitrarily taking the first as correct. Bar: start tokens(nil) e n d Bye. Maude-Maude3.5.1/tests/Misc/bubble0000775000175000017510000000032415036121435016275 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/bubble.maude -no-banner -no-advise \ > bubble.out 2>&1 diff $srcdir/bubble.expected bubble.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/badView.maude0000664000175000017510000000463415036121435017522 0ustar nileshnilesh*** *** Examples to exercise error detection and recovering in views. *** set show timing off . fth MONOID is sort Elt . op 0 : -> Elt . op _._ : Elt Elt -> Elt [assoc] . endfth view GOOD from MONOID to NAT is sort Elt to Nat . vars X Y : Elt . op X . Y to term X + Y . endv *** rhs variable of op->term mapping not in lhs view BAD1 from MONOID to NAT is sort Elt to Nat . vars X Y Z : Elt . op X . Y to term X + Y + Z . endv *** non-variable argument in lhs of op->term mapping view BAD2 from MONOID to NAT is sort Elt to Nat . var X : Elt . op X . 0 to term X + X . endv *** nonlinear lhs of op->term mapping view BAD3 from MONOID to NAT is sort Elt to Nat . var X : Elt . op X . X to term X + X . endv fth MONOID2 is sort Elt . op 0 : -> Elt . op f : Elt Elt -> Elt [assoc] . endfth *** wrong number of lhs args; parses due to flattening view BAD4 from MONOID2 to NAT is sort Elt to Nat . vars X Y Z : Elt . op f(X, Y, Z) to term X + Y + Z . endv *** *** Interaction between parameterized views and theory views. *** *** conflict *** created by view instantiation *** propagation view->module via instantiation by module-view argument *** propagation module->module via module importation *** trigged by module instantiation fmod WRAPPER{U :: TRIV} is sort Wrapper{U} . endfm view MapToList{A :: TRIV, B :: TRIV} from TRIV to MAP{List{A}, List{B}} is sort Elt to Map{List{A}, List{B}} . endv fmod MAP-TO-LIST-WRAP{C :: TRIV, D :: TRIV} is inc WRAPPER{MapToList{C, Set{D}}} . endfm *** MapToList{C, Set{D}} creates a conflict between C and D *** propagates into WRAPPER{MapToList{C, Set{D}}} by instantiation *** propagates into MAP-TO-LIST-WRAP by importation fmod TEST{E :: TRIV, F :: TRIV} is inc MAP-TO-LIST-WRAP{TRIV, TRIV}{E, F} . endfm *** should trigger conflict between C and D *** conflict *** created by module instantiation, *** propagation module->view via toModule *** triggered by view instantiation fmod WRAPPER{U :: TRIV} is sort Wrapper{U} . endfm view V{A :: TRIV, B :: TRIV} from TRIV to MAP{A, Set{B}} is sort Elt to Map{A, Set{B}} . endv *** MAP{A, Set{B}} creates a conflict between A and B *** popagates into V via toModule fmod TEST{P :: TRIV, Q :: TRIV} is inc WRAPPER{V{TRIV,TRIV}{P, Q}} . endfm *** should trigger conflict between A and B *** Parameter not appearing in toModule. view Wrapper{V :: TRIV} from TRIV to NAT is sort Elt to Nat . endv Maude-Maude3.5.1/tests/Misc/badView.expected0000664000175000017510000000263315036121435020225 0ustar nileshnileshWarning: , line 23 (view BAD1): right-hand side of operator-to-term mapping contains a variable Z which does not correspond to a left-hand side variable. Warning: , line 30 (view BAD2): left-hand side X . 0 of an operator-to-term mapping has non-variable argument 0. Warning: , line 37 (view BAD3): variable X used more than once in the left-hand side X . X of an operator-to-term mapping. Warning: , line 50 (view BAD4): left-hand side f(X, Y, Z) of operator-to-term mapping has 3 arguments whereas 2 were expected. Warning: In nonfinal module instantiation MAP-TO-LIST-WRAP{TRIV, TRIV} parameters C and D cannot both be instantiated by theory-views because of a conflict in the underlying module MAP-TO-LIST-WRAP. Warning: , line 77 (fmod TEST): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: In nonfinal view instantiation V{TRIV, TRIV} parameters A and B cannot both be instantiated by theory-views because of a conflict in the underlying view V. Warning: , line 98 (fmod TEST): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. Warning: , line 105 (view Wrapper): parameter V of view Wrapper is not bound in target module NAT. Bye. Maude-Maude3.5.1/tests/Misc/badView0000775000175000017510000000033015036121435016420 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/badView.maude -no-banner -no-advise \ > badView.out 2>&1 diff $srcdir/badView.expected badView.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/attributes.maude0000664000175000017510000000164415036121435020325 0ustar nileshnileshset show timing off . mod ATTRIBUTES is sorts Foo Bar . subsort Foo < Bar . ops a b c : -> Foo . op f : Foo Foo -> Foo [metadata "binary op"] . op f : Bar Bar -> Bar [ditto] . ops g h : Foo -> Bar [metadata "unary op"] . var X : Foo . var Y : Bar . eq a = b [metadata "definition"] . eq f(X, X) = g(X) [print "X = " X] . eq f(g(X), X) = c [label collapse metadata "collapse" print "X = " X] . eq g(X) = f(X, X) [label rev nonexec metadata "rev"] . mb g(g(X)) : Foo [metadata "down sort" label downSort print "sort became Foo"] . cmb Y : Foo if f(Y, a) = f(a, Y) [nonexec] . rl f(X, X) => f(g(X), g(X)) [label expand nonexec] . rl h(h(X)) => f(c, X) [metadata "step" label tick print "step X = " X:Foo] . endm show all . red f(c, c) . set print attr on . red f(c, c) . red f(g(c), c) . set print attr newline off . red f(g(c), c) . set print attr newline on . red g(g(c)) . rew h(h(b)) . Maude-Maude3.5.1/tests/Misc/attributes.expected0000664000175000017510000000546415036121435021037 0ustar nileshnileshmod ATTRIBUTES is sorts Bool Foo Bar . subsort Foo < Bar . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op a : -> Foo . op b : -> Foo . op c : -> Foo . op f : Foo Foo -> Foo [metadata "binary op"] . op f : Bar Bar -> Bar . op g : Foo -> Bar [metadata "unary op"] . op h : Foo -> Bar [metadata "unary op"] . var X : Foo . var Y : Bar . mb [downSort] : g(g(X)) : Foo [metadata "down sort" print "sort became Foo"] . cmb Y : Foo if f(Y, a) = f(a, Y) [nonexec] . eq a = b [metadata "definition"] . eq f(X, X) = g(X) [print "X = " X] . eq [collapse] : f(g(X), X) = c [metadata "collapse" print "X = " X] . eq [rev] : g(X) = f(X, X) [nonexec metadata "rev"] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . rl [expand] : f(X, X) => f(g(X), g(X)) [nonexec] . rl [tick] : h(h(X)) => f(c, X) [metadata "step" print "step X = " X] . endm ========================================== reduce in ATTRIBUTES : f(c, c) . rewrites: 1 result Bar: g(c) ========================================== reduce in ATTRIBUTES : f(c, c) . X = c rewrites: 1 result Bar: g(c) ========================================== reduce in ATTRIBUTES : f(g(c), c) . X = c rewrites: 1 result Foo: c ========================================== reduce in ATTRIBUTES : f(g(c), c) . X = crewrites: 1 result Foo: c ========================================== reduce in ATTRIBUTES : g(g(c)) . sort became Foo rewrites: 1 result Foo: g(g(c)) ========================================== rewrite in ATTRIBUTES : h(h(b)) . step X = b rewrites: 1 result Foo: f(c, b) Bye. Maude-Maude3.5.1/tests/Misc/attributes0000775000175000017510000000034415036121435017232 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/attributes.maude -no-banner -no-advise \ > attributes.out 2>&1 diff $srcdir/attributes.expected attributes.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/assocUnification.maude0000775000175000017510000003765715036121435021460 0ustar nileshnileshset show timing off . fmod A-UNIF is sorts List Elt . subsort Elt < List . op __ : List List -> List [assoc] . op f : List List -> List [assoc] . op g : List List -> List . op h : List List -> List [assoc comm] . op i : List -> List . op j : List List -> List [assoc comm id: 1] . op 1 : -> List . ops a b c d e : -> Elt . vars A B C D G H I J K L M N P Q R S T U V W X Y Z : List . vars E F : Elt . endfm *** linear elementary associative unification of n variables against m variables *** has a minimal complete set of unifiers of size D(n, m) ***( Delannoy's numbers D(n, m) 1 1 1 1 1 1 1 1 1 1 1 3 5 7 9 11 13 15 17 19 1 5 13 25 41 61 85 113 145 181 1 7 25 63 129 231 377 575 833 1159 1 9 41 129 321 681 1289 2241 3649 5641 1 11 61 231 681 1683 3653 7183 13073 22363 1 13 85 377 1289 3653 8989 19825 40081 75517 1 15 113 575 2241 7183 19825 48639 108545 224143 1 17 145 833 3649 13073 40081 108545 265729 598417 1 19 181 1159 5641 22363 75517 224143 598417 1462563 ) unify A B =? X . unify A B =? X Y . unify A B C =? X Y . unify A B C =? X Y Z . unify A B C D =? X Y Z . unify A B C D G =? X Y Z . *** Simultaneous elementary associative unification is just a product as each *** equation is independent because of linearity unify A B C =? X Y Z /\ G H I =? M N . *** Non-linear problems are explicitly disallowed. unify A B =? B C . *** Non-variable subterms are allowed with the proviso: *** [1] Each such subterm must be headed by a collapse free symbol; and *** [2] No variable occuring directly under an associative symbol can be mentioned. unify a A a =? B a C . unify a A b =? B c C . unify a A a =? B a C a D . unify a A b =? B c C d D . unify h(A, B, B) C h(G, H) =? I h(J, i(K)) L . unify h(A, B) C h(G, H) =? I h(J, J) L h(M, M) N . unify A h(X, Y) B =? C h(U, V) D h(U, U) G . *** Because non-free theories introduce non-linear fresh variables for purification and expressing *** unifiers, associative symbols can only appear at the top or immediately under the free skeleton *** of a term. unify g(h(A, B, B) C h(G, H), X Y a Z) =? g(I h(J, i(K)) L, U b V W) . *** The AC theory introduces fresh variables to express the AC unifiers on abstracted terms *** and these are necessarily non-linear [since each variable must show up on each side of the *** equation] which breaks linear associative unification. unify h(h(A, B, B) C h(G, H), X Y a Z) =? h(I h(J, i(K)) L, U b V W) . *** *** New algorithm lifts many of the above restrictions, though variables occuring under an associative *** symbol (perhaps indirectly via collapse) should still be linear, unless they are element variables *** or are otherwise constrained. No more than two subterms headed by the same associative symbol should *** the same variable unless at least for one of the terms has all the arguments are collapse-free *** aliens or element variables. *** unify h(A, A) =? h(f(B, C), f(I, J)) . *** this is OK unify h(A, A, A) =? h(f(B, C), f(I, J), f(X, Y)) . *** this forces 3 h-terms to unify against A and fails unify h(f(a, b), f(a, b), f(a, b)) =? h(f(B, C), f(I, J), f(X, Y)) . *** this is OK unify A E B F C E D =? W F X E Y F Z . *** OK because the nonlinear variable are all element variables unify A =? h(B, C) /\ X A Y =? U h(C, D) V E A W . *** OK because A is bound to a collapse-free alien before the associative theory sees it unify X A Y =? U h(C, D) V E A W /\ A =? h(B, C) . unify A =? h(B, C) /\ X A Y =? U h(C, D) V E A W . *** Swapping the order no longer fails unify j(A, f(B, E, C), f(D, E, j(G, H), I)) =? j(U, f(V, W), f(X, j(Y, Z), S)) . *** very complicated cases with collapse work as long as only element variables are nonlinear ********************************************* *** New non-linear examples added 5/15/16 *** ********************************************* ***( Associative unfication examples to test PIG-PUG with cycle detection where all variables appear at most twice. We are mostly interested in the rare cases where cycles are detected but they are found to be dead and don't generate infinite families of unifiers. This situation only seems to happen when element variables or free constants are present. ) fmod FOO is sorts Elt Foo . subsort Elt < Foo . op __ : Foo Foo -> Foo [assoc] . *** free constants ops a b c d e f g h i j : -> Foo . *** element variables vars E F G H I J K L M N : Elt . *** unconstrained variables vars P Q R S T U V W X Y Z : Foo . endfm *** 7 symbol, element variables, PIG-PUG has dead cycle(s), no unifiers unify P P =? Q Q R R H . unify P P Q =? Q R R H . unify P P =? Q Q G G H . unify P P Q =? Q G G H . unify P P =? Q Q R H R . unify P P Q =? Q R H R . unify P P =? Q Q G H G . unify P P Q =? Q G H G . unify P P =? Q Q G S S . unify P P Q =? Q G S S . unify P P =? Q Q G H H . unify P P Q =? Q G H H . unify P P =? Q Q G H I . unify P P Q =? Q G H I . unify P P =? Q G Q S S . unify P P Q =? G Q S S . unify P P =? F R R S S . unify P P F =? R R S S . unify P Q P =? Q R R H . unify P Q P =? Q G G H . unify P Q P =? Q R H R . unify P Q P =? Q G H G . unify P Q P =? Q G S S . unify P Q P =? Q G H H . unify P Q P =? Q G H I . unify P Q P =? G Q S S . unify P F P =? R R S S . unify P Q Q =? R P R H . unify P Q Q =? G P G H . unify P Q Q =? R P H R . unify P Q Q =? G P H G . unify P Q Q =? G P S S . unify P Q Q =? G P H H . unify P Q Q =? G P H I . unify P Q Q =? R R P H . unify P Q Q =? G G P H . unify P Q Q =? R R H P . unify P Q Q =? G G H P . unify E Q Q =? R R S S . unify P Q Q =? R H P R . unify P Q Q =? G H P G . unify P Q Q =? G S P S . unify P Q Q =? G H P H . unify P Q Q =? G H P I . unify P Q Q =? R H R P . unify P Q Q =? G H G P . unify P Q Q =? G S S P . unify P Q Q =? G H H P . unify P Q Q =? G H I P . *** 9 symbol, element variables, PIG-PUG has dead cycle(s), 1 unifier unify P Q R R =? H H Q I I . unify P Q R R =? H H Q I J . unify P Q R R =? H I Q H I . unify P Q R R =? H I Q H J . unify P Q R R =? H I Q I H . unify P Q R R =? H I Q I J . unify P Q R R =? H I Q J H . unify P Q R R =? H I Q J I . unify P Q R R =? H I Q J J . unify P Q R R =? H I Q J K . *** 4 symbol, free constants, PIG-PUG has dead cycle(s), no unifiers unify a Q =? Q c . unify P b =? c P . *** 6 symbol, free constants, PIG-PUG has dead cycle(s), no unifiers unify a a Q =? Q c c . unify a a Q =? Q c S . unify a a Q =? Q R d . unify P P =? Q Q c d . unify P P Q =? Q c d . unify a a Q =? Q c d . unify a a Q =? R Q d . unify P P Q =? c Q d . unify P P =? b R R d . unify P P =? Q c d Q . unify P P b =? R d R . unify P P =? b c S S . unify a Q a =? Q c c . unify a Q a =? Q c S . unify a Q a =? Q R d . unify P Q P =? Q c d . unify a Q a =? Q c d . unify P b P =? R R d . unify a Q a =? R d Q . unify P Q P =? c d Q . unify P b P =? c S S . unify P b b =? c P c . unify P b b =? c P S . unify P b b =? R P d . unify P Q Q =? c P d . unify P b b =? c P d . unify P b b =? c c P . unify P b b =? c S P . unify P b b =? R d P . unify P Q Q =? c d P . unify P b b =? c d P . unify a Q Q =? R d R . unify P b R =? P R d . unify a b R =? a R d . unify P Q c =? P d Q . unify a Q c =? a d Q . unify P Q c =? Q P d . unify a Q c =? Q a d . unify P b c =? b P d . unify a Q c =? Q c a . unify a Q c =? Q c S . unify a Q R =? Q R d . unify P b R =? b R d . unify P Q c =? Q c d . unify a Q c =? Q c d . unify a Q c =? Q S a . unify a Q R =? Q d a . unify P Q c =? Q d P . unify a Q c =? Q d a . unify P b c =? b d P . unify a Q R =? Q d R . unify a Q c =? Q d c . unify a Q c =? Q S S . unify a Q R =? Q d d . unify P Q c =? Q d d . unify a Q c =? Q d d . unify a Q R =? Q d T . unify a Q c =? Q d T . unify P Q c =? Q S e . unify a Q c =? Q S e . unify a Q R =? Q d e . unify P Q c =? Q d e . unify a Q c =? Q d e . unify P b c =? c P b . unify P b c =? c P S . unify P b R =? R P d . unify a b R =? R a d . unify P Q c =? c P d . unify P b c =? c P d . unify a Q R =? R Q d . unify a b R =? R b d . unify P b R =? R d P . unify a b R =? R d a . unify P b c =? c d P . unify a Q R =? R d Q . unify a b R =? R d b . unify P Q c =? c d Q . unify a b R =? R S S . unify a Q R =? R d d . unify P b R =? R d d . unify a b R =? R d d . unify a b R =? R d T . unify a b R =? R S e . unify a Q R =? R d e . unify P b R =? R d e . unify a b R =? R d e . unify a Q c =? S a Q . unify P b c =? S P b . unify P b R =? d P b . unify P Q c =? d P Q . unify P b c =? d P b . unify P b R =? d P R . unify P b c =? d P c . unify P b c =? S P S . unify P b R =? d P d . unify P Q c =? d P d . unify P b c =? d P d . unify P b R =? d P T . unify P b c =? d P T . unify P Q c =? S P e . unify P b c =? S P e . unify P b R =? d P e . unify P Q c =? d P e . unify P b c =? d P e . unify P Q c =? d Q P . unify P b c =? d b P . unify a b R =? S R a . unify P b R =? d R P . unify P b c =? d c P . unify a b R =? S R S . unify P b R =? d R d . unify P b R =? S R e . unify a b R =? S R e . unify P b R =? d R e . unify P b c =? S S P . unify P b R =? d d P . unify P Q c =? d d P . unify P b c =? d d P . unify a Q c =? S S Q . unify P Q c =? d d Q . unify P b c =? d T P . unify P b c =? S e P . unify P b R =? d e P . unify P Q c =? d e P . unify P b c =? d e P . unify P Q c =? S e Q . unify a Q c =? S e Q . unify P Q c =? d e Q . *** 7 symbol, free constants, PIG-PUG has dead cycle(s), no unifiers unify P P =? Q Q R R d . unify P P Q =? Q R R d . unify P P =? Q Q c c d . unify P P Q =? Q c c d . unify P P =? Q Q R d R . unify P P Q =? Q R d R . unify P P =? Q Q c d c . unify P P Q =? Q c d c . unify P P =? Q Q c S S . unify P P Q =? Q c S S . unify P P =? Q Q c d d . unify P P Q =? Q c d d . unify P P =? Q Q c d e . unify P P Q =? Q c d e . unify P P =? Q c Q S S . unify P P Q =? c Q S S . unify P P =? b R R S S . unify P P b =? R R S S . unify P P b =? R R S e . unify P P b =? R S R e . unify P P b =? R S S e . unify P Q P =? Q R R d . unify P Q P =? Q c c d . unify P Q P =? Q R d R . unify P Q P =? Q c d c . unify P Q P =? Q c S S . unify P Q P =? Q c d d . unify P Q P =? Q c d e . unify P Q P =? c Q S S . unify P b P =? R R S S . unify P Q Q =? R P R d . unify P Q Q =? c P c d . unify P Q Q =? R P d R . unify P Q Q =? c P d c . unify P Q Q =? c P S S . unify P Q Q =? c P d d . unify P Q Q =? c P d e . unify P Q Q =? R R P d . unify P Q Q =? c c P d . unify P Q Q =? R R d P . unify P Q Q =? c c d P . unify a Q Q =? R R S S . unify P Q Q =? R d P R . unify P Q Q =? c d P c . unify P Q Q =? c S P S . unify P Q Q =? c d P d . unify P Q Q =? c d P e . unify P Q Q =? R d R P . unify P Q Q =? c d c P . unify P Q Q =? c S S P . unify P Q Q =? c d d P . unify P Q Q =? c d e P . unify P b R =? b R d d . unify P Q c =? Q c d d . unify P Q c =? Q c S e . unify P b R =? b R d e . unify P Q c =? Q c d e . unify a Q R =? Q d a d . unify a Q R =? Q d a T . unify a Q R =? Q d a e . unify P b R =? b d R d . unify P Q c =? Q d c d . unify P b R =? b S R e . unify P Q c =? Q S c e . unify P b R =? b d R e . unify P Q c =? Q d c e . unify a Q R =? Q d d a . unify a Q R =? Q d d T . unify P Q c =? Q S S e . unify a Q R =? Q d d e . unify P Q c =? Q d d e . unify a Q R =? Q d T a . unify a Q R =? Q d e a . unify a Q R =? Q d T d . unify P Q c =? Q d T d . unify a Q R =? Q d e d . unify P Q c =? Q d e d . unify a Q R =? Q d T T . unify P Q c =? Q S e e . unify a Q R =? Q d e e . unify P Q c =? Q d e e . unify a Q R =? Q d T U . unify a Q R =? Q d e U . unify P Q c =? Q S T f . unify a Q R =? Q d T f . unify P Q c =? Q d T f . unify P Q c =? Q S e f . unify a Q R =? Q d e f . unify P Q c =? Q d e f . unify P Q c =? c P d d . unify P Q c =? c P S e . unify P Q c =? c P d e . unify P Q c =? c Q d d . unify P Q c =? c Q S e . unify P Q c =? c Q d e . unify P Q c =? c d P d . unify P Q c =? c S P e . unify P Q c =? c d P e . unify P Q c =? c d d Q . unify a Q R =? R d d e . unify P b R =? R d d e . unify P Q c =? c S e Q . unify P Q c =? c d e Q . unify a Q R =? R d e d . unify P b R =? R d e d . unify a Q R =? R d e e . unify P b R =? R d e e . unify a Q R =? R d e f . unify P b R =? R d e f . unify P b R =? d P b d . unify P b R =? d P b T . unify P b R =? d P b e . unify P Q c =? d P c d . unify P Q c =? S P c e . unify P Q c =? d P c e . unify P b R =? d P d b . unify P b R =? d P d T . unify P Q c =? S P S e . unify P b R =? d P d e . unify P Q c =? d P d e . unify P b R =? d P T b . unify P b R =? d P e b . unify P b R =? d P T d . unify P Q c =? d P T d . unify P b R =? d P e d . unify P Q c =? d P e d . unify P b R =? d P T T . unify P Q c =? S P e e . unify P b R =? d P e e . unify P Q c =? d P e e . unify P b R =? d P T U . unify P b R =? d P e U . unify P Q c =? S P T f . unify P b R =? d P T f . unify P Q c =? d P T f . unify P Q c =? S P e f . unify P b R =? d P e f . unify P Q c =? d P e f . unify P b R =? d b R d . unify P Q c =? d Q c d . unify P b R =? S b R e . unify P Q c =? S Q c e . unify P b R =? d b R e . unify P Q c =? d Q c e . unify P Q c =? S Q S e . unify P Q c =? d Q d e . unify P Q c =? d Q T d . unify P Q c =? d Q e d . unify P Q c =? S Q e e . unify P Q c =? d Q e e . unify P Q c =? S Q T f . unify P Q c =? d Q T f . unify P Q c =? S Q e f . unify P Q c =? d Q e f . unify P Q c =? d c P d . unify P Q c =? S c P e . unify P Q c =? d c P e . unify P Q c =? d c d Q . unify P b R =? d R d e . unify P Q c =? S c e Q . unify P Q c =? d c e Q . unify P b R =? d R e d . unify P b R =? S R e e . unify P b R =? d R e e . unify P b R =? S R e f . unify P b R =? d R e f . unify P b R =? d d P b . unify P b R =? d d P T . unify P Q c =? S S P e . unify P b R =? d d P e . unify P Q c =? d d P e . unify P b R =? S S R e . unify P b R =? d d R e . unify P b R =? d d e P . unify P Q c =? d d e P . unify P Q c =? S S e Q . unify P Q c =? d d e Q . unify P b R =? d e P b . unify P Q c =? d T P d . unify P b R =? d e P d . unify P Q c =? d e P d . unify P Q c =? S e P e . unify P b R =? d e P e . unify P Q c =? d e P e . unify P b R =? d e P U . unify P Q c =? S T P f . unify P Q c =? d T P f . unify P Q c =? S e P f . unify P b R =? d e P f . unify P Q c =? d e P f . unify P b R =? d T R d . unify P b R =? d e R d . unify P b R =? S e R e . unify P b R =? d e R e . unify P b R =? S T R f . unify P b R =? d T R f . unify P b R =? S e R f . unify P b R =? d e R f . unify P b R =? d e d P . unify P Q c =? d e d P . unify P Q c =? d T d Q . unify P Q c =? d e d Q . unify P b R =? d e e P . unify P Q c =? d e e P . unify P Q c =? S e e Q . unify P Q c =? d e e Q . unify P b R =? d e f P . unify P Q c =? d e f P . unify P Q c =? S T f Q . unify P Q c =? d T f Q . unify P Q c =? S e f Q . unify P Q c =? d e f Q . *** 9 symbol, free constants, PIG-PUG has dead cycle(s), 1 unifier unify P Q R R =? d d Q e e . unify P Q R R =? d e Q f f . unify P b R S =? e b R e f . unify P Q c S =? e Q c e f . unify P b R S =? e b R f e . unify P Q c S =? e Q c f e . unify P b R S =? e b R f f . unify P Q c S =? e Q c f f . unify P b R S =? e b R f g . unify P Q c S =? e Q c f g . unify P Q c S =? e e Q c f . unify P Q c S =? e f Q c e . unify P Q c S =? e f Q c f . unify P Q c S =? e f Q c g . *** no cycle examples *** no unifiers unify X X =? Y a Y . unify X X =? E Y a b Y E . *** 1 unifier unify X X =? Y Y . unify X X =? Y a Y a . unify X X =? E Y F E Y F . unify X X =? E Y a b Y F . unify X X =? E Y F b Y E . unify X X =? E Y b b Y E . *** incomplete unify X Y =? Y X . unify X Y X =? Z Z . unify X X =? Y a a Y . *** other interesting cases *** infinite set of mgus X |-> W^n, Y |-> W^m where n, m are relatively prime unify X Y =? Y X . *** single mgu X |-> W W W W, Y |-> W W W unify X X X =? Y Y Y Y . *** simultaneous combination of both unify X Y =? Y X /\ X X X =? Y Y Y Y . unify X X X =? Y Y Y Y /\ X Y =? Y X . *** bounded depth unify X X =? Y Y Y . unify X Y X =? Y X Y . unify X X X =? Y Y Y Y . unify X Y X =? Y Y Y Y . Maude-Maude3.5.1/tests/Misc/assocUnification.expected0000664000175000017510000462313615036121435022160 0ustar nileshnilesh========================================== unify in A-UNIF : A B =? X . Unifier 1 A --> #1:List B --> #2:List X --> #1:List #2:List ========================================== unify in A-UNIF : A B =? X Y . Unifier 1 A --> #2:List #3:List B --> #1:List X --> #2:List Y --> #3:List #1:List Unifier 2 A --> #1:List B --> #3:List #2:List X --> #1:List #3:List Y --> #2:List Unifier 3 A --> #1:List B --> #2:List X --> #1:List Y --> #2:List ========================================== unify in A-UNIF : A B C =? X Y . Unifier 1 A --> #3:List #4:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List #1:List #2:List Unifier 2 A --> #1:List B --> #3:List #4:List C --> #2:List X --> #1:List #3:List Y --> #4:List #2:List Unifier 3 A --> #1:List B --> #2:List C --> #4:List #3:List X --> #1:List #2:List #4:List Y --> #3:List Unifier 4 A --> #1:List B --> #2:List C --> #3:List X --> #1:List #2:List Y --> #3:List Unifier 5 A --> #1:List B --> #2:List C --> #3:List X --> #1:List Y --> #2:List #3:List ========================================== unify in A-UNIF : A B C =? X Y Z . Unifier 1 A --> #3:List #4:List #5:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #5:List #1:List #2:List Unifier 2 A --> #2:List #3:List B --> #4:List #5:List C --> #1:List X --> #2:List Y --> #3:List #4:List Z --> #5:List #1:List Unifier 3 A --> #2:List #4:List B --> #1:List C --> #5:List #3:List X --> #2:List Y --> #4:List #1:List #5:List Z --> #3:List Unifier 4 A --> #3:List #4:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List #1:List Z --> #2:List Unifier 5 A --> #3:List #4:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #1:List #2:List Unifier 6 A --> #1:List B --> #4:List #3:List #5:List C --> #2:List X --> #1:List #4:List Y --> #3:List Z --> #5:List #2:List Unifier 7 A --> #1:List B --> #3:List #4:List C --> #5:List #2:List X --> #1:List #3:List Y --> #4:List #5:List Z --> #2:List Unifier 8 A --> #1:List B --> #4:List #3:List C --> #2:List X --> #1:List #4:List Y --> #3:List Z --> #2:List Unifier 9 A --> #1:List B --> #2:List C --> #5:List #3:List #4:List X --> #1:List #2:List #5:List Y --> #3:List Z --> #4:List Unifier 10 A --> #1:List B --> #2:List C --> #3:List #4:List X --> #1:List #2:List Y --> #3:List Z --> #4:List Unifier 11 A --> #1:List B --> #3:List #4:List C --> #2:List X --> #1:List Y --> #3:List Z --> #4:List #2:List Unifier 12 A --> #1:List B --> #2:List C --> #4:List #3:List X --> #1:List Y --> #2:List #4:List Z --> #3:List Unifier 13 A --> #1:List B --> #2:List C --> #3:List X --> #1:List Y --> #2:List Z --> #3:List ========================================== unify in A-UNIF : A B C D =? X Y Z . Unifier 1 A --> #4:List #5:List #6:List B --> #1:List C --> #2:List D --> #3:List X --> #4:List Y --> #5:List Z --> #6:List #1:List #2:List #3:List Unifier 2 A --> #3:List #4:List B --> #5:List #6:List C --> #1:List D --> #2:List X --> #3:List Y --> #4:List #5:List Z --> #6:List #1:List #2:List Unifier 3 A --> #3:List #4:List B --> #1:List C --> #5:List #6:List D --> #2:List X --> #3:List Y --> #4:List #1:List #5:List Z --> #6:List #2:List Unifier 4 A --> #3:List #5:List B --> #1:List C --> #2:List D --> #6:List #4:List X --> #3:List Y --> #5:List #1:List #2:List #6:List Z --> #4:List Unifier 5 A --> #4:List #5:List B --> #1:List C --> #2:List D --> #3:List X --> #4:List Y --> #5:List #1:List #2:List Z --> #3:List Unifier 6 A --> #4:List #5:List B --> #1:List C --> #2:List D --> #3:List X --> #4:List Y --> #5:List #1:List Z --> #2:List #3:List Unifier 7 A --> #4:List #5:List B --> #1:List C --> #2:List D --> #3:List X --> #4:List Y --> #5:List Z --> #1:List #2:List #3:List Unifier 8 A --> #1:List B --> #5:List #4:List #6:List C --> #2:List D --> #3:List X --> #1:List #5:List Y --> #4:List Z --> #6:List #2:List #3:List Unifier 9 A --> #1:List B --> #3:List #4:List C --> #5:List #6:List D --> #2:List X --> #1:List #3:List Y --> #4:List #5:List Z --> #6:List #2:List Unifier 10 A --> #1:List B --> #4:List #5:List C --> #2:List D --> #6:List #3:List X --> #1:List #4:List Y --> #5:List #2:List #6:List Z --> #3:List Unifier 11 A --> #1:List B --> #4:List #5:List C --> #2:List D --> #3:List X --> #1:List #4:List Y --> #5:List #2:List Z --> #3:List Unifier 12 A --> #1:List B --> #5:List #4:List C --> #2:List D --> #3:List X --> #1:List #5:List Y --> #4:List Z --> #2:List #3:List Unifier 13 A --> #1:List B --> #2:List C --> #5:List #4:List #6:List D --> #3:List X --> #1:List #2:List #5:List Y --> #4:List Z --> #6:List #3:List Unifier 14 A --> #1:List B --> #2:List C --> #4:List #5:List D --> #6:List #3:List X --> #1:List #2:List #4:List Y --> #5:List #6:List Z --> #3:List Unifier 15 A --> #1:List B --> #2:List C --> #5:List #4:List D --> #3:List X --> #1:List #2:List #5:List Y --> #4:List Z --> #3:List Unifier 16 A --> #1:List B --> #2:List C --> #3:List D --> #6:List #4:List #5:List X --> #1:List #2:List #3:List #6:List Y --> #4:List Z --> #5:List Unifier 17 A --> #1:List B --> #2:List C --> #3:List D --> #4:List #5:List X --> #1:List #2:List #3:List Y --> #4:List Z --> #5:List Unifier 18 A --> #1:List B --> #2:List C --> #4:List #5:List D --> #3:List X --> #1:List #2:List Y --> #4:List Z --> #5:List #3:List Unifier 19 A --> #1:List B --> #2:List C --> #3:List D --> #5:List #4:List X --> #1:List #2:List Y --> #3:List #5:List Z --> #4:List Unifier 20 A --> #1:List B --> #2:List C --> #3:List D --> #4:List X --> #1:List #2:List Y --> #3:List Z --> #4:List Unifier 21 A --> #1:List B --> #4:List #5:List C --> #2:List D --> #3:List X --> #1:List Y --> #4:List Z --> #5:List #2:List #3:List Unifier 22 A --> #1:List B --> #2:List C --> #4:List #5:List D --> #3:List X --> #1:List Y --> #2:List #4:List Z --> #5:List #3:List Unifier 23 A --> #1:List B --> #2:List C --> #3:List D --> #5:List #4:List X --> #1:List Y --> #2:List #3:List #5:List Z --> #4:List Unifier 24 A --> #1:List B --> #2:List C --> #3:List D --> #4:List X --> #1:List Y --> #2:List #3:List Z --> #4:List Unifier 25 A --> #1:List B --> #2:List C --> #3:List D --> #4:List X --> #1:List Y --> #2:List Z --> #3:List #4:List ========================================== unify in A-UNIF : A B C D G =? X Y Z . Unifier 1 A --> #5:List #6:List #7:List B --> #1:List C --> #2:List D --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #7:List #1:List #2:List #3:List #4:List Unifier 2 A --> #4:List #5:List B --> #6:List #7:List C --> #1:List D --> #2:List G --> #3:List X --> #4:List Y --> #5:List #6:List Z --> #7:List #1:List #2:List #3:List Unifier 3 A --> #4:List #5:List B --> #1:List C --> #6:List #7:List D --> #2:List G --> #3:List X --> #4:List Y --> #5:List #1:List #6:List Z --> #7:List #2:List #3:List Unifier 4 A --> #4:List #5:List B --> #1:List C --> #2:List D --> #6:List #7:List G --> #3:List X --> #4:List Y --> #5:List #1:List #2:List #6:List Z --> #7:List #3:List Unifier 5 A --> #4:List #6:List B --> #1:List C --> #2:List D --> #3:List G --> #7:List #5:List X --> #4:List Y --> #6:List #1:List #2:List #3:List #7:List Z --> #5:List Unifier 6 A --> #5:List #6:List B --> #1:List C --> #2:List D --> #3:List G --> #4:List X --> #5:List Y --> #6:List #1:List #2:List #3:List Z --> #4:List Unifier 7 A --> #5:List #6:List B --> #1:List C --> #2:List D --> #3:List G --> #4:List X --> #5:List Y --> #6:List #1:List #2:List Z --> #3:List #4:List Unifier 8 A --> #5:List #6:List B --> #1:List C --> #2:List D --> #3:List G --> #4:List X --> #5:List Y --> #6:List #1:List Z --> #2:List #3:List #4:List Unifier 9 A --> #5:List #6:List B --> #1:List C --> #2:List D --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #1:List #2:List #3:List #4:List Unifier 10 A --> #1:List B --> #6:List #5:List #7:List C --> #2:List D --> #3:List G --> #4:List X --> #1:List #6:List Y --> #5:List Z --> #7:List #2:List #3:List #4:List Unifier 11 A --> #1:List B --> #4:List #5:List C --> #6:List #7:List D --> #2:List G --> #3:List X --> #1:List #4:List Y --> #5:List #6:List Z --> #7:List #2:List #3:List Unifier 12 A --> #1:List B --> #4:List #5:List C --> #2:List D --> #6:List #7:List G --> #3:List X --> #1:List #4:List Y --> #5:List #2:List #6:List Z --> #7:List #3:List Unifier 13 A --> #1:List B --> #5:List #6:List C --> #2:List D --> #3:List G --> #7:List #4:List X --> #1:List #5:List Y --> #6:List #2:List #3:List #7:List Z --> #4:List Unifier 14 A --> #1:List B --> #5:List #6:List C --> #2:List D --> #3:List G --> #4:List X --> #1:List #5:List Y --> #6:List #2:List #3:List Z --> #4:List Unifier 15 A --> #1:List B --> #5:List #6:List C --> #2:List D --> #3:List G --> #4:List X --> #1:List #5:List Y --> #6:List #2:List Z --> #3:List #4:List Unifier 16 A --> #1:List B --> #6:List #5:List C --> #2:List D --> #3:List G --> #4:List X --> #1:List #6:List Y --> #5:List Z --> #2:List #3:List #4:List Unifier 17 A --> #1:List B --> #2:List C --> #6:List #5:List #7:List D --> #3:List G --> #4:List X --> #1:List #2:List #6:List Y --> #5:List Z --> #7:List #3:List #4:List Unifier 18 A --> #1:List B --> #2:List C --> #4:List #5:List D --> #6:List #7:List G --> #3:List X --> #1:List #2:List #4:List Y --> #5:List #6:List Z --> #7:List #3:List Unifier 19 A --> #1:List B --> #2:List C --> #5:List #6:List D --> #3:List G --> #7:List #4:List X --> #1:List #2:List #5:List Y --> #6:List #3:List #7:List Z --> #4:List Unifier 20 A --> #1:List B --> #2:List C --> #5:List #6:List D --> #3:List G --> #4:List X --> #1:List #2:List #5:List Y --> #6:List #3:List Z --> #4:List Unifier 21 A --> #1:List B --> #2:List C --> #6:List #5:List D --> #3:List G --> #4:List X --> #1:List #2:List #6:List Y --> #5:List Z --> #3:List #4:List Unifier 22 A --> #1:List B --> #2:List C --> #3:List D --> #6:List #5:List #7:List G --> #4:List X --> #1:List #2:List #3:List #6:List Y --> #5:List Z --> #7:List #4:List Unifier 23 A --> #1:List B --> #2:List C --> #3:List D --> #5:List #6:List G --> #7:List #4:List X --> #1:List #2:List #3:List #5:List Y --> #6:List #7:List Z --> #4:List Unifier 24 A --> #1:List B --> #2:List C --> #3:List D --> #6:List #5:List G --> #4:List X --> #1:List #2:List #3:List #6:List Y --> #5:List Z --> #4:List Unifier 25 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #7:List #5:List #6:List X --> #1:List #2:List #3:List #4:List #7:List Y --> #5:List Z --> #6:List Unifier 26 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #5:List #6:List X --> #1:List #2:List #3:List #4:List Y --> #5:List Z --> #6:List Unifier 27 A --> #1:List B --> #2:List C --> #3:List D --> #5:List #6:List G --> #4:List X --> #1:List #2:List #3:List Y --> #5:List Z --> #6:List #4:List Unifier 28 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #6:List #5:List X --> #1:List #2:List #3:List Y --> #4:List #6:List Z --> #5:List Unifier 29 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #5:List X --> #1:List #2:List #3:List Y --> #4:List Z --> #5:List Unifier 30 A --> #1:List B --> #2:List C --> #5:List #6:List D --> #3:List G --> #4:List X --> #1:List #2:List Y --> #5:List Z --> #6:List #3:List #4:List Unifier 31 A --> #1:List B --> #2:List C --> #3:List D --> #5:List #6:List G --> #4:List X --> #1:List #2:List Y --> #3:List #5:List Z --> #6:List #4:List Unifier 32 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #6:List #5:List X --> #1:List #2:List Y --> #3:List #4:List #6:List Z --> #5:List Unifier 33 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #5:List X --> #1:List #2:List Y --> #3:List #4:List Z --> #5:List Unifier 34 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #5:List X --> #1:List #2:List Y --> #3:List Z --> #4:List #5:List Unifier 35 A --> #1:List B --> #5:List #6:List C --> #2:List D --> #3:List G --> #4:List X --> #1:List Y --> #5:List Z --> #6:List #2:List #3:List #4:List Unifier 36 A --> #1:List B --> #2:List C --> #5:List #6:List D --> #3:List G --> #4:List X --> #1:List Y --> #2:List #5:List Z --> #6:List #3:List #4:List Unifier 37 A --> #1:List B --> #2:List C --> #3:List D --> #5:List #6:List G --> #4:List X --> #1:List Y --> #2:List #3:List #5:List Z --> #6:List #4:List Unifier 38 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #6:List #5:List X --> #1:List Y --> #2:List #3:List #4:List #6:List Z --> #5:List Unifier 39 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #5:List X --> #1:List Y --> #2:List #3:List #4:List Z --> #5:List Unifier 40 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #5:List X --> #1:List Y --> #2:List #3:List Z --> #4:List #5:List Unifier 41 A --> #1:List B --> #2:List C --> #3:List D --> #4:List G --> #5:List X --> #1:List Y --> #2:List Z --> #3:List #4:List #5:List ========================================== unify in A-UNIF : A B C =? X Y Z /\ G H I =? M N . Unifier 1 A --> #3:List #4:List #9:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #9:List #1:List #2:List G --> #7:List #8:List H --> #5:List I --> #6:List M --> #7:List N --> #8:List #5:List #6:List Unifier 2 A --> #2:List #7:List B --> #8:List #9:List C --> #1:List X --> #2:List Y --> #7:List #8:List Z --> #9:List #1:List G --> #5:List #6:List H --> #3:List I --> #4:List M --> #5:List N --> #6:List #3:List #4:List Unifier 3 A --> #2:List #8:List B --> #1:List C --> #9:List #3:List X --> #2:List Y --> #8:List #1:List #9:List Z --> #3:List G --> #6:List #7:List H --> #4:List I --> #5:List M --> #6:List N --> #7:List #4:List #5:List Unifier 4 A --> #3:List #8:List B --> #1:List C --> #2:List X --> #3:List Y --> #8:List #1:List Z --> #2:List G --> #6:List #7:List H --> #4:List I --> #5:List M --> #6:List N --> #7:List #4:List #5:List Unifier 5 A --> #3:List #4:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #1:List #2:List G --> #7:List #8:List H --> #5:List I --> #6:List M --> #7:List N --> #8:List #5:List #6:List Unifier 6 A --> #1:List B --> #8:List #3:List #9:List C --> #2:List X --> #1:List #8:List Y --> #3:List Z --> #9:List #2:List G --> #6:List #7:List H --> #4:List I --> #5:List M --> #6:List N --> #7:List #4:List #5:List Unifier 7 A --> #1:List B --> #7:List #8:List C --> #9:List #2:List X --> #1:List #7:List Y --> #8:List #9:List Z --> #2:List G --> #5:List #6:List H --> #3:List I --> #4:List M --> #5:List N --> #6:List #3:List #4:List Unifier 8 A --> #1:List B --> #8:List #3:List C --> #2:List X --> #1:List #8:List Y --> #3:List Z --> #2:List G --> #6:List #7:List H --> #4:List I --> #5:List M --> #6:List N --> #7:List #4:List #5:List Unifier 9 A --> #1:List B --> #2:List C --> #9:List #3:List #4:List X --> #1:List #2:List #9:List Y --> #3:List Z --> #4:List G --> #7:List #8:List H --> #5:List I --> #6:List M --> #7:List N --> #8:List #5:List #6:List Unifier 10 A --> #1:List B --> #2:List C --> #3:List #4:List X --> #1:List #2:List Y --> #3:List Z --> #4:List G --> #7:List #8:List H --> #5:List I --> #6:List M --> #7:List N --> #8:List #5:List #6:List Unifier 11 A --> #1:List B --> #3:List #8:List C --> #2:List X --> #1:List Y --> #3:List Z --> #8:List #2:List G --> #6:List #7:List H --> #4:List I --> #5:List M --> #6:List N --> #7:List #4:List #5:List Unifier 12 A --> #1:List B --> #2:List C --> #8:List #3:List X --> #1:List Y --> #2:List #8:List Z --> #3:List G --> #6:List #7:List H --> #4:List I --> #5:List M --> #6:List N --> #7:List #4:List #5:List Unifier 13 A --> #1:List B --> #2:List C --> #3:List X --> #1:List Y --> #2:List Z --> #3:List G --> #6:List #7:List H --> #4:List I --> #5:List M --> #6:List N --> #7:List #4:List #5:List Unifier 14 A --> #3:List #4:List #9:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #9:List #1:List #2:List G --> #5:List H --> #7:List #8:List I --> #6:List M --> #5:List #7:List N --> #8:List #6:List Unifier 15 A --> #2:List #7:List B --> #8:List #9:List C --> #1:List X --> #2:List Y --> #7:List #8:List Z --> #9:List #1:List G --> #3:List H --> #5:List #6:List I --> #4:List M --> #3:List #5:List N --> #6:List #4:List Unifier 16 A --> #2:List #8:List B --> #1:List C --> #9:List #3:List X --> #2:List Y --> #8:List #1:List #9:List Z --> #3:List G --> #4:List H --> #6:List #7:List I --> #5:List M --> #4:List #6:List N --> #7:List #5:List Unifier 17 A --> #3:List #8:List B --> #1:List C --> #2:List X --> #3:List Y --> #8:List #1:List Z --> #2:List G --> #4:List H --> #6:List #7:List I --> #5:List M --> #4:List #6:List N --> #7:List #5:List Unifier 18 A --> #3:List #4:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #1:List #2:List G --> #5:List H --> #7:List #8:List I --> #6:List M --> #5:List #7:List N --> #8:List #6:List Unifier 19 A --> #1:List B --> #8:List #3:List #9:List C --> #2:List X --> #1:List #8:List Y --> #3:List Z --> #9:List #2:List G --> #4:List H --> #6:List #7:List I --> #5:List M --> #4:List #6:List N --> #7:List #5:List Unifier 20 A --> #1:List B --> #7:List #8:List C --> #9:List #2:List X --> #1:List #7:List Y --> #8:List #9:List Z --> #2:List G --> #3:List H --> #5:List #6:List I --> #4:List M --> #3:List #5:List N --> #6:List #4:List Unifier 21 A --> #1:List B --> #8:List #3:List C --> #2:List X --> #1:List #8:List Y --> #3:List Z --> #2:List G --> #4:List H --> #6:List #7:List I --> #5:List M --> #4:List #6:List N --> #7:List #5:List Unifier 22 A --> #1:List B --> #2:List C --> #9:List #3:List #4:List X --> #1:List #2:List #9:List Y --> #3:List Z --> #4:List G --> #5:List H --> #7:List #8:List I --> #6:List M --> #5:List #7:List N --> #8:List #6:List Unifier 23 A --> #1:List B --> #2:List C --> #3:List #4:List X --> #1:List #2:List Y --> #3:List Z --> #4:List G --> #5:List H --> #7:List #8:List I --> #6:List M --> #5:List #7:List N --> #8:List #6:List Unifier 24 A --> #1:List B --> #3:List #8:List C --> #2:List X --> #1:List Y --> #3:List Z --> #8:List #2:List G --> #4:List H --> #6:List #7:List I --> #5:List M --> #4:List #6:List N --> #7:List #5:List Unifier 25 A --> #1:List B --> #2:List C --> #8:List #3:List X --> #1:List Y --> #2:List #8:List Z --> #3:List G --> #4:List H --> #6:List #7:List I --> #5:List M --> #4:List #6:List N --> #7:List #5:List Unifier 26 A --> #1:List B --> #2:List C --> #3:List X --> #1:List Y --> #2:List Z --> #3:List G --> #4:List H --> #6:List #7:List I --> #5:List M --> #4:List #6:List N --> #7:List #5:List Unifier 27 A --> #3:List #4:List #9:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #9:List #1:List #2:List G --> #5:List H --> #6:List I --> #8:List #7:List M --> #5:List #6:List #8:List N --> #7:List Unifier 28 A --> #2:List #7:List B --> #8:List #9:List C --> #1:List X --> #2:List Y --> #7:List #8:List Z --> #9:List #1:List G --> #3:List H --> #4:List I --> #6:List #5:List M --> #3:List #4:List #6:List N --> #5:List Unifier 29 A --> #2:List #8:List B --> #1:List C --> #9:List #3:List X --> #2:List Y --> #8:List #1:List #9:List Z --> #3:List G --> #4:List H --> #5:List I --> #7:List #6:List M --> #4:List #5:List #7:List N --> #6:List Unifier 30 A --> #3:List #8:List B --> #1:List C --> #2:List X --> #3:List Y --> #8:List #1:List Z --> #2:List G --> #4:List H --> #5:List I --> #7:List #6:List M --> #4:List #5:List #7:List N --> #6:List Unifier 31 A --> #3:List #4:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #1:List #2:List G --> #5:List H --> #6:List I --> #8:List #7:List M --> #5:List #6:List #8:List N --> #7:List Unifier 32 A --> #1:List B --> #8:List #3:List #9:List C --> #2:List X --> #1:List #8:List Y --> #3:List Z --> #9:List #2:List G --> #4:List H --> #5:List I --> #7:List #6:List M --> #4:List #5:List #7:List N --> #6:List Unifier 33 A --> #1:List B --> #7:List #8:List C --> #9:List #2:List X --> #1:List #7:List Y --> #8:List #9:List Z --> #2:List G --> #3:List H --> #4:List I --> #6:List #5:List M --> #3:List #4:List #6:List N --> #5:List Unifier 34 A --> #1:List B --> #8:List #3:List C --> #2:List X --> #1:List #8:List Y --> #3:List Z --> #2:List G --> #4:List H --> #5:List I --> #7:List #6:List M --> #4:List #5:List #7:List N --> #6:List Unifier 35 A --> #1:List B --> #2:List C --> #9:List #3:List #4:List X --> #1:List #2:List #9:List Y --> #3:List Z --> #4:List G --> #5:List H --> #6:List I --> #8:List #7:List M --> #5:List #6:List #8:List N --> #7:List Unifier 36 A --> #1:List B --> #2:List C --> #3:List #4:List X --> #1:List #2:List Y --> #3:List Z --> #4:List G --> #5:List H --> #6:List I --> #8:List #7:List M --> #5:List #6:List #8:List N --> #7:List Unifier 37 A --> #1:List B --> #3:List #8:List C --> #2:List X --> #1:List Y --> #3:List Z --> #8:List #2:List G --> #4:List H --> #5:List I --> #7:List #6:List M --> #4:List #5:List #7:List N --> #6:List Unifier 38 A --> #1:List B --> #2:List C --> #8:List #3:List X --> #1:List Y --> #2:List #8:List Z --> #3:List G --> #4:List H --> #5:List I --> #7:List #6:List M --> #4:List #5:List #7:List N --> #6:List Unifier 39 A --> #1:List B --> #2:List C --> #3:List X --> #1:List Y --> #2:List Z --> #3:List G --> #4:List H --> #5:List I --> #7:List #6:List M --> #4:List #5:List #7:List N --> #6:List Unifier 40 A --> #3:List #4:List #8:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #8:List #1:List #2:List G --> #5:List H --> #6:List I --> #7:List M --> #5:List #6:List N --> #7:List Unifier 41 A --> #2:List #6:List B --> #7:List #8:List C --> #1:List X --> #2:List Y --> #6:List #7:List Z --> #8:List #1:List G --> #3:List H --> #4:List I --> #5:List M --> #3:List #4:List N --> #5:List Unifier 42 A --> #2:List #7:List B --> #1:List C --> #8:List #3:List X --> #2:List Y --> #7:List #1:List #8:List Z --> #3:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List #5:List N --> #6:List Unifier 43 A --> #3:List #7:List B --> #1:List C --> #2:List X --> #3:List Y --> #7:List #1:List Z --> #2:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List #5:List N --> #6:List Unifier 44 A --> #3:List #4:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #1:List #2:List G --> #5:List H --> #6:List I --> #7:List M --> #5:List #6:List N --> #7:List Unifier 45 A --> #1:List B --> #7:List #3:List #8:List C --> #2:List X --> #1:List #7:List Y --> #3:List Z --> #8:List #2:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List #5:List N --> #6:List Unifier 46 A --> #1:List B --> #6:List #7:List C --> #8:List #2:List X --> #1:List #6:List Y --> #7:List #8:List Z --> #2:List G --> #3:List H --> #4:List I --> #5:List M --> #3:List #4:List N --> #5:List Unifier 47 A --> #1:List B --> #7:List #3:List C --> #2:List X --> #1:List #7:List Y --> #3:List Z --> #2:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List #5:List N --> #6:List Unifier 48 A --> #1:List B --> #2:List C --> #8:List #3:List #4:List X --> #1:List #2:List #8:List Y --> #3:List Z --> #4:List G --> #5:List H --> #6:List I --> #7:List M --> #5:List #6:List N --> #7:List Unifier 49 A --> #1:List B --> #2:List C --> #3:List #4:List X --> #1:List #2:List Y --> #3:List Z --> #4:List G --> #5:List H --> #6:List I --> #7:List M --> #5:List #6:List N --> #7:List Unifier 50 A --> #1:List B --> #3:List #7:List C --> #2:List X --> #1:List Y --> #3:List Z --> #7:List #2:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List #5:List N --> #6:List Unifier 51 A --> #1:List B --> #2:List C --> #7:List #3:List X --> #1:List Y --> #2:List #7:List Z --> #3:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List #5:List N --> #6:List Unifier 52 A --> #1:List B --> #2:List C --> #3:List X --> #1:List Y --> #2:List Z --> #3:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List #5:List N --> #6:List Unifier 53 A --> #3:List #4:List #8:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #8:List #1:List #2:List G --> #5:List H --> #6:List I --> #7:List M --> #5:List N --> #6:List #7:List Unifier 54 A --> #2:List #6:List B --> #7:List #8:List C --> #1:List X --> #2:List Y --> #6:List #7:List Z --> #8:List #1:List G --> #3:List H --> #4:List I --> #5:List M --> #3:List N --> #4:List #5:List Unifier 55 A --> #2:List #7:List B --> #1:List C --> #8:List #3:List X --> #2:List Y --> #7:List #1:List #8:List Z --> #3:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List N --> #5:List #6:List Unifier 56 A --> #3:List #7:List B --> #1:List C --> #2:List X --> #3:List Y --> #7:List #1:List Z --> #2:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List N --> #5:List #6:List Unifier 57 A --> #3:List #4:List B --> #1:List C --> #2:List X --> #3:List Y --> #4:List Z --> #1:List #2:List G --> #5:List H --> #6:List I --> #7:List M --> #5:List N --> #6:List #7:List Unifier 58 A --> #1:List B --> #7:List #3:List #8:List C --> #2:List X --> #1:List #7:List Y --> #3:List Z --> #8:List #2:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List N --> #5:List #6:List Unifier 59 A --> #1:List B --> #6:List #7:List C --> #8:List #2:List X --> #1:List #6:List Y --> #7:List #8:List Z --> #2:List G --> #3:List H --> #4:List I --> #5:List M --> #3:List N --> #4:List #5:List Unifier 60 A --> #1:List B --> #7:List #3:List C --> #2:List X --> #1:List #7:List Y --> #3:List Z --> #2:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List N --> #5:List #6:List Unifier 61 A --> #1:List B --> #2:List C --> #8:List #3:List #4:List X --> #1:List #2:List #8:List Y --> #3:List Z --> #4:List G --> #5:List H --> #6:List I --> #7:List M --> #5:List N --> #6:List #7:List Unifier 62 A --> #1:List B --> #2:List C --> #3:List #4:List X --> #1:List #2:List Y --> #3:List Z --> #4:List G --> #5:List H --> #6:List I --> #7:List M --> #5:List N --> #6:List #7:List Unifier 63 A --> #1:List B --> #3:List #7:List C --> #2:List X --> #1:List Y --> #3:List Z --> #7:List #2:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List N --> #5:List #6:List Unifier 64 A --> #1:List B --> #2:List C --> #7:List #3:List X --> #1:List Y --> #2:List #7:List Z --> #3:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List N --> #5:List #6:List Unifier 65 A --> #1:List B --> #2:List C --> #3:List X --> #1:List Y --> #2:List Z --> #3:List G --> #4:List H --> #5:List I --> #6:List M --> #4:List N --> #5:List #6:List ========================================== unify in A-UNIF : A B =? B C . Unifier 1 A --> #1:List #2:List B --> #1:List C --> #2:List #1:List Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. Unifier 2 A --> #1:List B --> #1:List C --> #1:List Warning: Some unifiers may have been missed due to incomplete unification algorithm(s). ========================================== unify in A-UNIF : a A a =? B a C . Unifier 1 A --> #1:List a #2:List B --> a #1:List C --> #2:List a Unifier 2 A --> #1:List a B --> a #1:List C --> a Unifier 3 A --> a #1:List B --> a C --> #1:List a Unifier 4 A --> a B --> a C --> a ========================================== unify in A-UNIF : a A b =? B c C . Unifier 1 A --> #1:List c #2:List B --> a #1:List C --> #2:List b Unifier 2 A --> #1:List c B --> a #1:List C --> b Unifier 3 A --> c #1:List B --> a C --> #1:List b Unifier 4 A --> c B --> a C --> b ========================================== unify in A-UNIF : a A a =? B a C a D . Unifier 1 A --> #2:List a #1:List a #3:List B --> a #2:List C --> #1:List D --> #3:List a Unifier 2 A --> #2:List a #1:List a B --> a #2:List C --> #1:List D --> a Unifier 3 A --> a #1:List a #2:List B --> a C --> #1:List D --> #2:List a Unifier 4 A --> a #1:List a B --> a C --> #1:List D --> a ========================================== unify in A-UNIF : a A b =? B c C d D . Unifier 1 A --> #2:List c #1:List d #3:List B --> a #2:List C --> #1:List D --> #3:List b Unifier 2 A --> #2:List c #1:List d B --> a #2:List C --> #1:List D --> b Unifier 3 A --> c #1:List d #2:List B --> a C --> #1:List D --> #2:List b Unifier 4 A --> c #1:List d B --> a C --> #1:List D --> b ========================================== unify in A-UNIF : h(A, B, B) C h(G, H) =? I h(J, i(K)) L . Unifier 1 A --> #1:List B --> #2:List C --> #7:List h(#5:List, i(#6:List)) #8:List H --> #3:List G --> #4:List I --> h(#1:List, #2:List, #2:List) #7:List J --> #5:List K --> #6:List L --> #8:List h(#3:List, #4:List) Unifier 2 A --> #1:List B --> #2:List C --> #7:List h(#5:List, i(#6:List)) H --> #3:List G --> #4:List I --> h(#1:List, #2:List, #2:List) #7:List J --> #5:List K --> #6:List L --> h(#3:List, #4:List) Unifier 3 A --> #1:List B --> #2:List C --> h(#5:List, i(#6:List)) #7:List H --> #3:List G --> #4:List I --> h(#1:List, #2:List, #2:List) J --> #5:List K --> #6:List L --> #7:List h(#3:List, #4:List) Unifier 4 A --> #1:List B --> #2:List C --> h(#5:List, i(#6:List)) H --> #3:List G --> #4:List I --> h(#1:List, #2:List, #2:List) J --> #5:List K --> #6:List L --> h(#3:List, #4:List) ========================================== unify in A-UNIF : h(A, B) C h(G, H) =? I h(J, J) L h(M, M) N . Unifier 1 A --> #1:List B --> #2:List C --> #8:List h(#5:List, #5:List) #6:List h(#7:List, #7:List) #9:List H --> #3:List G --> #4:List I --> h(#1:List, #2:List) #8:List J --> #5:List L --> #6:List M --> #7:List N --> #9:List h(#3:List, #4:List) Unifier 2 A --> #1:List B --> #2:List C --> #8:List h(#5:List, #5:List) #6:List h(#7:List, #7:List) H --> #3:List G --> #4:List I --> h(#1:List, #2:List) #8:List J --> #5:List L --> #6:List M --> #7:List N --> h(#3:List, #4:List) Unifier 3 A --> #1:List B --> #2:List C --> h(#5:List, #5:List) #6:List h(#7:List, #7:List) #8:List H --> #3:List G --> #4:List I --> h(#1:List, #2:List) J --> #5:List L --> #6:List M --> #7:List N --> #8:List h(#3:List, #4:List) Unifier 4 A --> #1:List B --> #2:List C --> h(#5:List, #5:List) #6:List h(#7:List, #7:List) H --> #3:List G --> #4:List I --> h(#1:List, #2:List) J --> #5:List L --> #6:List M --> #7:List N --> h(#3:List, #4:List) ========================================== unify in A-UNIF : A h(X, Y) B =? C h(U, V) D h(U, U) G . Unifier 1 A --> #4:List h(#5:List, #6:List) #7:List h(#6:List, #6:List) #8:List X --> #1:List Y --> #2:List B --> #3:List C --> #4:List V --> #5:List U --> #6:List D --> #7:List G --> #8:List h(#1:List, #2:List) #3:List Unifier 2 A --> #4:List h(#5:List, #6:List) #7:List h(#6:List, #6:List) X --> #1:List Y --> #2:List B --> #3:List C --> #4:List V --> #5:List U --> #6:List D --> #7:List G --> h(#1:List, #2:List) #3:List Unifier 3 A --> #3:List h(#4:List, #5:List) #7:List X --> #1:List Y --> #2:List B --> #8:List h(#5:List, #5:List) #6:List C --> #3:List V --> #4:List U --> #5:List D --> #7:List h(#1:List, #2:List) #8:List G --> #6:List Unifier 4 A --> #3:List h(#4:List, #5:List) #7:List X --> #1:List Y --> #2:List B --> h(#5:List, #5:List) #6:List C --> #3:List V --> #4:List U --> #5:List D --> #7:List h(#1:List, #2:List) G --> #6:List Unifier 5 A --> #2:List h(#3:List, #5:List, #6:List, #7:List) #4:List X --> h(#5:List, #5:List, #6:List) Y --> h(#6:List, #7:List, #7:List) B --> #1:List C --> #2:List V --> #3:List U --> h(#5:List, #6:List, #7:List) D --> #4:List G --> #1:List Unifier 6 A --> #3:List h(#1:List, #4:List, #6:List) #5:List X --> h(#1:List, #6:List, #6:List) Y --> #1:List B --> #2:List C --> #3:List V --> #4:List U --> h(#1:List, #6:List) D --> #5:List G --> #2:List Unifier 7 A --> #2:List h(#3:List, #5:List, #6:List) #4:List X --> h(#5:List, #5:List) Y --> h(#6:List, #6:List) B --> #1:List C --> #2:List V --> #3:List U --> h(#5:List, #6:List) D --> #4:List G --> #1:List Unifier 8 A --> #3:List h(#1:List, #4:List, #6:List) #5:List X --> #1:List Y --> h(#1:List, #6:List, #6:List) B --> #2:List C --> #3:List V --> #4:List U --> h(#1:List, #6:List) D --> #5:List G --> #2:List Unifier 9 A --> #2:List h(#3:List, #4:List) #5:List X --> #4:List Y --> #4:List B --> #1:List C --> #2:List V --> #3:List U --> #4:List D --> #5:List G --> #1:List Unifier 10 A --> #3:List h(#4:List, #5:List) X --> #1:List Y --> #2:List B --> #7:List h(#5:List, #5:List) #6:List C --> #3:List V --> #4:List U --> #5:List D --> h(#1:List, #2:List) #7:List G --> #6:List Unifier 11 A --> #3:List h(#4:List, #5:List) X --> #1:List Y --> #2:List B --> h(#5:List, #5:List) #6:List C --> #3:List V --> #4:List U --> #5:List D --> h(#1:List, #2:List) G --> #6:List Unifier 12 A --> #1:List X --> #2:List Y --> #3:List B --> #8:List h(#4:List, #5:List) #6:List h(#5:List, #5:List) #7:List C --> #1:List h(#2:List, #3:List) #8:List V --> #4:List U --> #5:List D --> #6:List G --> #7:List Unifier 13 A --> #1:List X --> #2:List Y --> #3:List B --> h(#4:List, #5:List) #6:List h(#5:List, #5:List) #7:List C --> #1:List h(#2:List, #3:List) V --> #4:List U --> #5:List D --> #6:List G --> #7:List Unifier 14 A --> #1:List X --> h(#4:List, #6:List) Y --> h(#5:List, #7:List) B --> #2:List h(#4:List, #4:List, #5:List, #5:List) #3:List C --> #1:List V --> h(#6:List, #7:List) U --> h(#4:List, #5:List) D --> #2:List G --> #3:List Unifier 15 A --> #1:List X --> h(#3:List, #6:List) Y --> #2:List B --> #4:List h(#2:List, #2:List, #6:List, #6:List) #5:List C --> #1:List V --> #3:List U --> h(#2:List, #6:List) D --> #4:List G --> #5:List Unifier 16 A --> #1:List X --> #2:List Y --> h(#3:List, #6:List) B --> #4:List h(#2:List, #2:List, #6:List, #6:List) #5:List C --> #1:List V --> #3:List U --> h(#2:List, #6:List) D --> #4:List G --> #5:List Unifier 17 A --> #1:List X --> h(#3:List, #6:List) Y --> #2:List B --> #4:List h(#3:List, #3:List) #5:List C --> #1:List V --> h(#2:List, #6:List) U --> #3:List D --> #4:List G --> #5:List Unifier 18 A --> #1:List X --> #3:List Y --> #2:List B --> #4:List h(#3:List, #3:List) #5:List C --> #1:List V --> #2:List U --> #3:List D --> #4:List G --> #5:List Unifier 19 A --> #1:List X --> #2:List Y --> h(#3:List, #6:List) B --> #4:List h(#3:List, #3:List) #5:List C --> #1:List V --> h(#2:List, #6:List) U --> #3:List D --> #4:List G --> #5:List Unifier 20 A --> #1:List X --> #2:List Y --> #3:List B --> #4:List h(#3:List, #3:List) #5:List C --> #1:List V --> #2:List U --> #3:List D --> #4:List G --> #5:List ========================================== unify in A-UNIF : g(h(A, B, B) C h(G, H), X Y a Z) =? g(I h(J, i(K)) L, U b V W) . Unifier 1 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) #13:List H --> #3:List G --> #4:List X --> #9:List b #10:List #11:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> #13:List h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #11:List #5:List a #6:List Unifier 2 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List #11:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #11:List #5:List a #6:List Unifier 3 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #9:List b #10:List #11:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #11:List #5:List a #6:List Unifier 4 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List #11:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #11:List #5:List a #6:List Unifier 5 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) #13:List H --> #3:List G --> #4:List X --> #8:List b #9:List Y --> #10:List #11:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> #13:List h(#3:List, #4:List) U --> #8:List V --> #9:List #10:List W --> #11:List a #5:List Unifier 6 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b #9:List Y --> #10:List #11:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #9:List #10:List W --> #11:List a #5:List Unifier 7 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #8:List b #9:List Y --> #10:List #11:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #8:List V --> #9:List #10:List W --> #11:List a #5:List Unifier 8 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b #9:List Y --> #10:List #11:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #9:List #10:List W --> #11:List a #5:List Unifier 9 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) #13:List H --> #3:List G --> #4:List X --> #8:List b #10:List Y --> #5:List Z --> #11:List #9:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> #13:List h(#3:List, #4:List) U --> #8:List V --> #10:List #5:List a #11:List W --> #9:List Unifier 10 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b #10:List Y --> #5:List Z --> #11:List #9:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #10:List #5:List a #11:List W --> #9:List Unifier 11 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #8:List b #10:List Y --> #5:List Z --> #11:List #9:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #8:List V --> #10:List #5:List a #11:List W --> #9:List Unifier 12 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b #10:List Y --> #5:List Z --> #11:List #9:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #10:List #5:List a #11:List W --> #9:List Unifier 13 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List a W --> #6:List Unifier 14 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List a W --> #6:List Unifier 15 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List a W --> #6:List Unifier 16 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List a W --> #6:List Unifier 17 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List W --> a #6:List Unifier 18 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List W --> a #6:List Unifier 19 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List W --> a #6:List Unifier 20 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List W --> a #6:List Unifier 21 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #5:List a #6:List Unifier 22 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #5:List a #6:List Unifier 23 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #5:List a #6:List Unifier 24 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #5:List a #6:List Unifier 25 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #8:List b Y --> #9:List #10:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #8:List V --> #9:List W --> #10:List a #5:List Unifier 26 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b Y --> #9:List #10:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #9:List W --> #10:List a #5:List Unifier 27 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #11:List H --> #3:List G --> #4:List X --> #8:List b Y --> #9:List #10:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #11:List h(#3:List, #4:List) U --> #8:List V --> #9:List W --> #10:List a #5:List Unifier 28 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b Y --> #9:List #10:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #9:List W --> #10:List a #5:List Unifier 29 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #8:List b Y --> #5:List Z --> #10:List #9:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #8:List V --> #5:List a #10:List W --> #9:List Unifier 30 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b Y --> #5:List Z --> #10:List #9:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #5:List a #10:List W --> #9:List Unifier 31 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #11:List H --> #3:List G --> #4:List X --> #8:List b Y --> #5:List Z --> #10:List #9:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #11:List h(#3:List, #4:List) U --> #8:List V --> #5:List a #10:List W --> #9:List Unifier 32 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b Y --> #5:List Z --> #10:List #9:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #5:List a #10:List W --> #9:List Unifier 33 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #9:List V --> #5:List a W --> #6:List Unifier 34 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #5:List a W --> #6:List Unifier 35 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #9:List V --> #5:List a W --> #6:List Unifier 36 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #5:List a W --> #6:List Unifier 37 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #9:List V --> #5:List W --> a #6:List Unifier 38 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #5:List W --> a #6:List Unifier 39 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #9:List V --> #5:List W --> a #6:List Unifier 40 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #5:List W --> a #6:List Unifier 41 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) #13:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List #11:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> #13:List h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> #11:List a #6:List Unifier 42 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List #11:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> #11:List a #6:List Unifier 43 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List #11:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> #11:List a #6:List Unifier 44 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List #11:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> #11:List a #6:List Unifier 45 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) #13:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #11:List #8:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> #13:List h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a #11:List W --> #8:List Unifier 46 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #11:List #8:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a #11:List W --> #8:List Unifier 47 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #11:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a #11:List W --> #8:List Unifier 48 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #11:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a #11:List W --> #8:List Unifier 49 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a W --> #6:List Unifier 50 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a W --> #6:List Unifier 51 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a W --> #6:List Unifier 52 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a W --> #6:List Unifier 53 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> a #6:List Unifier 54 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> a #6:List Unifier 55 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> a #6:List Unifier 56 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> a #6:List Unifier 57 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #5:List #9:List V --> a #10:List W --> #8:List Unifier 58 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> a #10:List W --> #8:List Unifier 59 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #11:List h(#3:List, #4:List) U --> #5:List #9:List V --> a #10:List W --> #8:List Unifier 60 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> a #10:List W --> #8:List Unifier 61 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List #9:List V --> a W --> #6:List Unifier 62 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> a W --> #6:List Unifier 63 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #5:List #9:List V --> a W --> #6:List Unifier 64 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> a W --> #6:List Unifier 65 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) #13:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List b #9:List #10:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> #13:List h(#3:List, #4:List) U --> #5:List #6:List a #11:List V --> #9:List W --> #10:List Unifier 66 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List b #9:List #10:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #6:List a #11:List V --> #9:List W --> #10:List Unifier 67 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List b #9:List #10:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List #6:List a #11:List V --> #9:List W --> #10:List Unifier 68 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List b #9:List #10:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #6:List a #11:List V --> #9:List W --> #10:List Unifier 69 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> b #9:List #10:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List #6:List a V --> #9:List W --> #10:List Unifier 70 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> b #9:List #10:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #6:List a V --> #9:List W --> #10:List Unifier 71 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> b #9:List #10:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List #6:List a V --> #9:List W --> #10:List Unifier 72 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> b #9:List #10:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #6:List a V --> #9:List W --> #10:List Unifier 73 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List V --> #9:List W --> #10:List a #6:List Unifier 74 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List W --> #10:List a #6:List Unifier 75 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List V --> #9:List W --> #10:List a #6:List Unifier 76 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List W --> #10:List a #6:List Unifier 77 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #5:List V --> #9:List a #10:List W --> #8:List Unifier 78 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List a #10:List W --> #8:List Unifier 79 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #11:List h(#3:List, #4:List) U --> #5:List V --> #9:List a #10:List W --> #8:List Unifier 80 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List a #10:List W --> #8:List Unifier 81 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List V --> #9:List a W --> #6:List Unifier 82 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List a W --> #6:List Unifier 83 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #5:List V --> #9:List a W --> #6:List Unifier 84 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List a W --> #6:List Unifier 85 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List V --> #9:List W --> a #6:List Unifier 86 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List W --> a #6:List Unifier 87 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #5:List V --> #9:List W --> a #6:List Unifier 88 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List W --> a #6:List Unifier 89 A --> #1:List B --> #2:List C --> #10:List h(#6:List, i(#7:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #9:List #8:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #6:List K --> #7:List L --> #11:List h(#3:List, #4:List) U --> #5:List V --> a #9:List W --> #8:List Unifier 90 A --> #1:List B --> #2:List C --> #10:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #9:List #8:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List V --> a #9:List W --> #8:List Unifier 91 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #10:List H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #9:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #10:List h(#3:List, #4:List) U --> #5:List V --> a #9:List W --> #8:List Unifier 92 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #9:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List V --> a #9:List W --> #8:List Unifier 93 A --> #1:List B --> #2:List C --> #9:List h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #6:List I --> h(#1:List, #2:List, #2:List) #9:List J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #5:List V --> a W --> #6:List Unifier 94 A --> #1:List B --> #2:List C --> #9:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #6:List I --> h(#1:List, #2:List, #2:List) #9:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> a W --> #6:List Unifier 95 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #9:List H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #9:List h(#3:List, #4:List) U --> #5:List V --> a W --> #6:List Unifier 96 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> a W --> #6:List ========================================== unify in A-UNIF : h(h(A, B, B) C h(G, H), X Y a Z) =? h(I h(J, i(K)) L, U b V W) . Unifier 1 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) #13:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List b #9:List #10:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> #13:List h(#3:List, #4:List) U --> #5:List #6:List a #11:List V --> #9:List W --> #10:List Unifier 2 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List b #9:List #10:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #6:List a #11:List V --> #9:List W --> #10:List Unifier 3 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List b #9:List #10:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List #6:List a #11:List V --> #9:List W --> #10:List Unifier 4 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List b #9:List #10:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #6:List a #11:List V --> #9:List W --> #10:List Unifier 5 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> b #9:List #10:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List #6:List a V --> #9:List W --> #10:List Unifier 6 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> b #9:List #10:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #6:List a V --> #9:List W --> #10:List Unifier 7 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> b #9:List #10:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List #6:List a V --> #9:List W --> #10:List Unifier 8 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> b #9:List #10:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #6:List a V --> #9:List W --> #10:List Unifier 9 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) #13:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #11:List #8:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> #13:List h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a #11:List W --> #8:List Unifier 10 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #11:List #8:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a #11:List W --> #8:List Unifier 11 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #11:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a #11:List W --> #8:List Unifier 12 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #11:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a #11:List W --> #8:List Unifier 13 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a W --> #6:List Unifier 14 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a W --> #6:List Unifier 15 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a W --> #6:List Unifier 16 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> #10:List a W --> #6:List Unifier 17 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) #13:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List #11:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> #13:List h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> #11:List a #6:List Unifier 18 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List #11:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> #11:List a #6:List Unifier 19 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List #11:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> #11:List a #6:List Unifier 20 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List #11:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> #11:List a #6:List Unifier 21 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> a #6:List Unifier 22 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> a #6:List Unifier 23 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> a #6:List Unifier 24 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #10:List b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #10:List V --> #9:List W --> a #6:List Unifier 25 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #5:List #9:List V --> a #10:List W --> #8:List Unifier 26 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> a #10:List W --> #8:List Unifier 27 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #11:List h(#3:List, #4:List) U --> #5:List #9:List V --> a #10:List W --> #8:List Unifier 28 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> a #10:List W --> #8:List Unifier 29 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List #9:List V --> a W --> #6:List Unifier 30 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> a W --> #6:List Unifier 31 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #5:List #9:List V --> a W --> #6:List Unifier 32 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> #9:List b Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List #9:List V --> a W --> #6:List Unifier 33 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) #13:List H --> #3:List G --> #4:List X --> #8:List b #10:List Y --> #5:List Z --> #11:List #9:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> #13:List h(#3:List, #4:List) U --> #8:List V --> #10:List #5:List a #11:List W --> #9:List Unifier 34 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b #10:List Y --> #5:List Z --> #11:List #9:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #10:List #5:List a #11:List W --> #9:List Unifier 35 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #8:List b #10:List Y --> #5:List Z --> #11:List #9:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #8:List V --> #10:List #5:List a #11:List W --> #9:List Unifier 36 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b #10:List Y --> #5:List Z --> #11:List #9:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #10:List #5:List a #11:List W --> #9:List Unifier 37 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List a W --> #6:List Unifier 38 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List a W --> #6:List Unifier 39 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List a W --> #6:List Unifier 40 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List a W --> #6:List Unifier 41 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) #13:List H --> #3:List G --> #4:List X --> #8:List b #9:List Y --> #10:List #11:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> #13:List h(#3:List, #4:List) U --> #8:List V --> #9:List #10:List W --> #11:List a #5:List Unifier 42 A --> #1:List B --> #2:List C --> #12:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b #9:List Y --> #10:List #11:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #9:List #10:List W --> #11:List a #5:List Unifier 43 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #8:List b #9:List Y --> #10:List #11:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #8:List V --> #9:List #10:List W --> #11:List a #5:List Unifier 44 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b #9:List Y --> #10:List #11:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #9:List #10:List W --> #11:List a #5:List Unifier 45 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List W --> a #6:List Unifier 46 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List W --> a #6:List Unifier 47 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List W --> a #6:List Unifier 48 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List #5:List W --> a #6:List Unifier 49 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) #13:List H --> #3:List G --> #4:List X --> #9:List b #10:List #11:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> #13:List h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #11:List #5:List a #6:List Unifier 50 A --> #1:List B --> #2:List C --> #12:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List #11:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #12:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #11:List #5:List a #6:List Unifier 51 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #9:List b #10:List #11:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #11:List #5:List a #6:List Unifier 52 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List #11:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #11:List #5:List a #6:List Unifier 53 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #5:List a #6:List Unifier 54 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #5:List a #6:List Unifier 55 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #5:List a #6:List Unifier 56 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b #10:List Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #10:List W --> #5:List a #6:List Unifier 57 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #8:List b Y --> #5:List Z --> #10:List #9:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #8:List V --> #5:List a #10:List W --> #9:List Unifier 58 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b Y --> #5:List Z --> #10:List #9:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #5:List a #10:List W --> #9:List Unifier 59 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #11:List H --> #3:List G --> #4:List X --> #8:List b Y --> #5:List Z --> #10:List #9:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #11:List h(#3:List, #4:List) U --> #8:List V --> #5:List a #10:List W --> #9:List Unifier 60 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b Y --> #5:List Z --> #10:List #9:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #5:List a #10:List W --> #9:List Unifier 61 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #9:List V --> #5:List a W --> #6:List Unifier 62 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #5:List a W --> #6:List Unifier 63 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #9:List V --> #5:List a W --> #6:List Unifier 64 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #5:List a W --> #6:List Unifier 65 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #8:List b Y --> #9:List #10:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #8:List V --> #9:List W --> #10:List a #5:List Unifier 66 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b Y --> #9:List #10:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #9:List W --> #10:List a #5:List Unifier 67 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #11:List H --> #3:List G --> #4:List X --> #8:List b Y --> #9:List #10:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #11:List h(#3:List, #4:List) U --> #8:List V --> #9:List W --> #10:List a #5:List Unifier 68 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #8:List b Y --> #9:List #10:List Z --> #5:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #8:List V --> #9:List W --> #10:List a #5:List Unifier 69 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #9:List V --> #5:List W --> a #6:List Unifier 70 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #5:List W --> a #6:List Unifier 71 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #9:List V --> #5:List W --> a #6:List Unifier 72 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #9:List b Y --> #5:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #9:List V --> #5:List W --> a #6:List Unifier 73 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> #12:List h(#3:List, #4:List) U --> #5:List V --> #9:List a #10:List W --> #8:List Unifier 74 A --> #1:List B --> #2:List C --> #11:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List a #10:List W --> #8:List Unifier 75 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #11:List h(#3:List, #4:List) U --> #5:List V --> #9:List a #10:List W --> #8:List Unifier 76 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #10:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List a #10:List W --> #8:List Unifier 77 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List V --> #9:List a W --> #6:List Unifier 78 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List a W --> #6:List Unifier 79 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #5:List V --> #9:List a W --> #6:List Unifier 80 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List a W --> #6:List Unifier 81 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) #12:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> #12:List h(#3:List, #4:List) U --> #5:List V --> #9:List W --> #10:List a #6:List Unifier 82 A --> #1:List B --> #2:List C --> #11:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #11:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List W --> #10:List a #6:List Unifier 83 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List V --> #9:List W --> #10:List a #6:List Unifier 84 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List #10:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List W --> #10:List a #6:List Unifier 85 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> #11:List h(#3:List, #4:List) U --> #5:List V --> #9:List W --> a #6:List Unifier 86 A --> #1:List B --> #2:List C --> #10:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List W --> a #6:List Unifier 87 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #5:List V --> #9:List W --> a #6:List Unifier 88 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b #9:List Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> #9:List W --> a #6:List Unifier 89 A --> #1:List B --> #2:List C --> #10:List h(#6:List, i(#7:List)) #11:List H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #9:List #8:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #6:List K --> #7:List L --> #11:List h(#3:List, #4:List) U --> #5:List V --> a #9:List W --> #8:List Unifier 90 A --> #1:List B --> #2:List C --> #10:List h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #9:List #8:List I --> h(#1:List, #2:List, #2:List) #10:List J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List V --> a #9:List W --> #8:List Unifier 91 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) #10:List H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #9:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> #10:List h(#3:List, #4:List) U --> #5:List V --> a #9:List W --> #8:List Unifier 92 A --> #1:List B --> #2:List C --> h(#6:List, i(#7:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #9:List #8:List I --> h(#1:List, #2:List, #2:List) J --> #6:List K --> #7:List L --> h(#3:List, #4:List) U --> #5:List V --> a #9:List W --> #8:List Unifier 93 A --> #1:List B --> #2:List C --> #9:List h(#7:List, i(#8:List)) #10:List H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #6:List I --> h(#1:List, #2:List, #2:List) #9:List J --> #7:List K --> #8:List L --> #10:List h(#3:List, #4:List) U --> #5:List V --> a W --> #6:List Unifier 94 A --> #1:List B --> #2:List C --> #9:List h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #6:List I --> h(#1:List, #2:List, #2:List) #9:List J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> a W --> #6:List Unifier 95 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) #9:List H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> #9:List h(#3:List, #4:List) U --> #5:List V --> a W --> #6:List Unifier 96 A --> #1:List B --> #2:List C --> h(#7:List, i(#8:List)) H --> #3:List G --> #4:List X --> #5:List Y --> b Z --> #6:List I --> h(#1:List, #2:List, #2:List) J --> #7:List K --> #8:List L --> h(#3:List, #4:List) U --> #5:List V --> a W --> #6:List Unifier 97 A --> #1:List B --> #2:List C --> #12:List b #10:List #13:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List h(#7:List, i(#8:List)) #9:List I --> #5:List #6:List a #11:List J --> #7:List K --> #8:List L --> #9:List U --> h(#1:List, #2:List, #2:List) #12:List V --> #10:List W --> #13:List h(#3:List, #4:List) Unifier 98 A --> #1:List B --> #2:List C --> #11:List b #10:List #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> h(#7:List, i(#8:List)) #9:List I --> #5:List #6:List a J --> #7:List K --> #8:List L --> #9:List U --> h(#1:List, #2:List, #2:List) #11:List V --> #10:List W --> #12:List h(#3:List, #4:List) Unifier 99 A --> #1:List B --> #2:List C --> #12:List b #9:List #13:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List h(#7:List, i(#8:List)) #11:List Z --> #6:List I --> #5:List #10:List J --> #7:List K --> #8:List L --> #11:List a #6:List U --> h(#1:List, #2:List, #2:List) #12:List V --> #9:List W --> #13:List h(#3:List, #4:List) Unifier 100 A --> #1:List B --> #2:List C --> #11:List b #9:List #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List h(#7:List, i(#8:List)) Z --> #6:List I --> #5:List #10:List J --> #7:List K --> #8:List L --> a #6:List U --> h(#1:List, #2:List, #2:List) #11:List V --> #9:List W --> #12:List h(#3:List, #4:List) Unifier 101 A --> #1:List B --> #2:List C --> #12:List b #10:List #13:List H --> #3:List G --> #4:List X --> #7:List h(#8:List, i(#9:List)) #11:List Y --> #5:List Z --> #6:List I --> #7:List J --> #8:List K --> #9:List L --> #11:List #5:List a #6:List U --> h(#1:List, #2:List, #2:List) #12:List V --> #10:List W --> #13:List h(#3:List, #4:List) Unifier 102 A --> #1:List B --> #2:List C --> #11:List b #10:List #12:List H --> #3:List G --> #4:List X --> #7:List h(#8:List, i(#9:List)) Y --> #5:List Z --> #6:List I --> #7:List J --> #8:List K --> #9:List L --> #5:List a #6:List U --> h(#1:List, #2:List, #2:List) #11:List V --> #10:List W --> #12:List h(#3:List, #4:List) Unifier 103 A --> #1:List B --> #2:List C --> #11:List b #9:List #12:List H --> #3:List G --> #4:List X --> #5:List Y --> h(#7:List, i(#8:List)) #10:List Z --> #6:List I --> #5:List J --> #7:List K --> #8:List L --> #10:List a #6:List U --> h(#1:List, #2:List, #2:List) #11:List V --> #9:List W --> #12:List h(#3:List, #4:List) Unifier 104 A --> #1:List B --> #2:List C --> #10:List b #9:List #11:List H --> #3:List G --> #4:List X --> #5:List Y --> h(#7:List, i(#8:List)) Z --> #6:List I --> #5:List J --> #7:List K --> #8:List L --> a #6:List U --> h(#1:List, #2:List, #2:List) #10:List V --> #9:List W --> #11:List h(#3:List, #4:List) Unifier 105 A --> #1:List B --> #2:List C --> #12:List b #10:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List h(#7:List, i(#8:List)) #9:List I --> #5:List #6:List a #11:List J --> #7:List K --> #8:List L --> #9:List U --> h(#1:List, #2:List, #2:List) #12:List V --> #10:List W --> h(#3:List, #4:List) Unifier 106 A --> #1:List B --> #2:List C --> #11:List b #10:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> h(#7:List, i(#8:List)) #9:List I --> #5:List #6:List a J --> #7:List K --> #8:List L --> #9:List U --> h(#1:List, #2:List, #2:List) #11:List V --> #10:List W --> h(#3:List, #4:List) Unifier 107 A --> #1:List B --> #2:List C --> #12:List b #9:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List h(#7:List, i(#8:List)) #11:List Z --> #6:List I --> #5:List #10:List J --> #7:List K --> #8:List L --> #11:List a #6:List U --> h(#1:List, #2:List, #2:List) #12:List V --> #9:List W --> h(#3:List, #4:List) Unifier 108 A --> #1:List B --> #2:List C --> #11:List b #9:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List h(#7:List, i(#8:List)) Z --> #6:List I --> #5:List #10:List J --> #7:List K --> #8:List L --> a #6:List U --> h(#1:List, #2:List, #2:List) #11:List V --> #9:List W --> h(#3:List, #4:List) Unifier 109 A --> #1:List B --> #2:List C --> #12:List b #10:List H --> #3:List G --> #4:List X --> #7:List h(#8:List, i(#9:List)) #11:List Y --> #5:List Z --> #6:List I --> #7:List J --> #8:List K --> #9:List L --> #11:List #5:List a #6:List U --> h(#1:List, #2:List, #2:List) #12:List V --> #10:List W --> h(#3:List, #4:List) Unifier 110 A --> #1:List B --> #2:List C --> #11:List b #10:List H --> #3:List G --> #4:List X --> #7:List h(#8:List, i(#9:List)) Y --> #5:List Z --> #6:List I --> #7:List J --> #8:List K --> #9:List L --> #5:List a #6:List U --> h(#1:List, #2:List, #2:List) #11:List V --> #10:List W --> h(#3:List, #4:List) Unifier 111 A --> #1:List B --> #2:List C --> #11:List b #9:List H --> #3:List G --> #4:List X --> #5:List Y --> h(#7:List, i(#8:List)) #10:List Z --> #6:List I --> #5:List J --> #7:List K --> #8:List L --> #10:List a #6:List U --> h(#1:List, #2:List, #2:List) #11:List V --> #9:List W --> h(#3:List, #4:List) Unifier 112 A --> #1:List B --> #2:List C --> #10:List b #9:List H --> #3:List G --> #4:List X --> #5:List Y --> h(#7:List, i(#8:List)) Z --> #6:List I --> #5:List J --> #7:List K --> #8:List L --> a #6:List U --> h(#1:List, #2:List, #2:List) #10:List V --> #9:List W --> h(#3:List, #4:List) Unifier 113 A --> #1:List B --> #2:List C --> b #10:List #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List h(#7:List, i(#8:List)) #9:List I --> #5:List #6:List a #11:List J --> #7:List K --> #8:List L --> #9:List U --> h(#1:List, #2:List, #2:List) V --> #10:List W --> #12:List h(#3:List, #4:List) Unifier 114 A --> #1:List B --> #2:List C --> b #10:List #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> h(#7:List, i(#8:List)) #9:List I --> #5:List #6:List a J --> #7:List K --> #8:List L --> #9:List U --> h(#1:List, #2:List, #2:List) V --> #10:List W --> #11:List h(#3:List, #4:List) Unifier 115 A --> #1:List B --> #2:List C --> b #9:List #12:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List h(#7:List, i(#8:List)) #11:List Z --> #6:List I --> #5:List #10:List J --> #7:List K --> #8:List L --> #11:List a #6:List U --> h(#1:List, #2:List, #2:List) V --> #9:List W --> #12:List h(#3:List, #4:List) Unifier 116 A --> #1:List B --> #2:List C --> b #9:List #11:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List h(#7:List, i(#8:List)) Z --> #6:List I --> #5:List #10:List J --> #7:List K --> #8:List L --> a #6:List U --> h(#1:List, #2:List, #2:List) V --> #9:List W --> #11:List h(#3:List, #4:List) Unifier 117 A --> #1:List B --> #2:List C --> b #10:List #12:List H --> #3:List G --> #4:List X --> #7:List h(#8:List, i(#9:List)) #11:List Y --> #5:List Z --> #6:List I --> #7:List J --> #8:List K --> #9:List L --> #11:List #5:List a #6:List U --> h(#1:List, #2:List, #2:List) V --> #10:List W --> #12:List h(#3:List, #4:List) Unifier 118 A --> #1:List B --> #2:List C --> b #10:List #11:List H --> #3:List G --> #4:List X --> #7:List h(#8:List, i(#9:List)) Y --> #5:List Z --> #6:List I --> #7:List J --> #8:List K --> #9:List L --> #5:List a #6:List U --> h(#1:List, #2:List, #2:List) V --> #10:List W --> #11:List h(#3:List, #4:List) Unifier 119 A --> #1:List B --> #2:List C --> b #9:List #11:List H --> #3:List G --> #4:List X --> #5:List Y --> h(#7:List, i(#8:List)) #10:List Z --> #6:List I --> #5:List J --> #7:List K --> #8:List L --> #10:List a #6:List U --> h(#1:List, #2:List, #2:List) V --> #9:List W --> #11:List h(#3:List, #4:List) Unifier 120 A --> #1:List B --> #2:List C --> b #9:List #10:List H --> #3:List G --> #4:List X --> #5:List Y --> h(#7:List, i(#8:List)) Z --> #6:List I --> #5:List J --> #7:List K --> #8:List L --> a #6:List U --> h(#1:List, #2:List, #2:List) V --> #9:List W --> #10:List h(#3:List, #4:List) Unifier 121 A --> #1:List B --> #2:List C --> b #10:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> #11:List h(#7:List, i(#8:List)) #9:List I --> #5:List #6:List a #11:List J --> #7:List K --> #8:List L --> #9:List U --> h(#1:List, #2:List, #2:List) V --> #10:List W --> h(#3:List, #4:List) Unifier 122 A --> #1:List B --> #2:List C --> b #10:List H --> #3:List G --> #4:List X --> #5:List Y --> #6:List Z --> h(#7:List, i(#8:List)) #9:List I --> #5:List #6:List a J --> #7:List K --> #8:List L --> #9:List U --> h(#1:List, #2:List, #2:List) V --> #10:List W --> h(#3:List, #4:List) Unifier 123 A --> #1:List B --> #2:List C --> b #9:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List h(#7:List, i(#8:List)) #11:List Z --> #6:List I --> #5:List #10:List J --> #7:List K --> #8:List L --> #11:List a #6:List U --> h(#1:List, #2:List, #2:List) V --> #9:List W --> h(#3:List, #4:List) Unifier 124 A --> #1:List B --> #2:List C --> b #9:List H --> #3:List G --> #4:List X --> #5:List Y --> #10:List h(#7:List, i(#8:List)) Z --> #6:List I --> #5:List #10:List J --> #7:List K --> #8:List L --> a #6:List U --> h(#1:List, #2:List, #2:List) V --> #9:List W --> h(#3:List, #4:List) Unifier 125 A --> #1:List B --> #2:List C --> b #10:List H --> #3:List G --> #4:List X --> #7:List h(#8:List, i(#9:List)) #11:List Y --> #5:List Z --> #6:List I --> #7:List J --> #8:List K --> #9:List L --> #11:List #5:List a #6:List U --> h(#1:List, #2:List, #2:List) V --> #10:List W --> h(#3:List, #4:List) Unifier 126 A --> #1:List B --> #2:List C --> b #10:List H --> #3:List G --> #4:List X --> #7:List h(#8:List, i(#9:List)) Y --> #5:List Z --> #6:List I --> #7:List J --> #8:List K --> #9:List L --> #5:List a #6:List U --> h(#1:List, #2:List, #2:List) V --> #10:List W --> h(#3:List, #4:List) Unifier 127 A --> #1:List B --> #2:List C --> b #9:List H --> #3:List G --> #4:List X --> #5:List Y --> h(#7:List, i(#8:List)) #10:List Z --> #6:List I --> #5:List J --> #7:List K --> #8:List L --> #10:List a #6:List U --> h(#1:List, #2:List, #2:List) V --> #9:List W --> h(#3:List, #4:List) Unifier 128 A --> #1:List B --> #2:List C --> b #9:List H --> #3:List G --> #4:List X --> #5:List Y --> h(#7:List, i(#8:List)) Z --> #6:List I --> #5:List J --> #7:List K --> #8:List L --> a #6:List U --> h(#1:List, #2:List, #2:List) V --> #9:List W --> h(#3:List, #4:List) ========================================== unify in A-UNIF : h(A, A) =? h(f(B, C), f(I, J)) . Unifier 1 A --> f(#2:List, #3:List, #1:List) B --> f(#2:List, #3:List) C --> #1:List I --> #2:List J --> f(#3:List, #1:List) Unifier 2 A --> f(#1:List, #3:List, #2:List) B --> #1:List C --> f(#3:List, #2:List) I --> f(#1:List, #3:List) J --> #2:List Unifier 3 A --> f(#1:List, #2:List) B --> #1:List C --> #2:List I --> #1:List J --> #2:List ========================================== unify in A-UNIF : h(A, A, A) =? h(f(B, C), f(I, J), f(X, Y)) . Unifier 1 A --> f(#2:List, #3:List, #4:List, #1:List) B --> f(#2:List, #3:List, #4:List) C --> #1:List I --> f(#2:List, #3:List) J --> f(#4:List, #1:List) X --> #2:List Y --> f(#3:List, #4:List, #1:List) Unifier 2 A --> f(#2:List, #3:List, #4:List, #1:List) B --> f(#2:List, #3:List) C --> f(#4:List, #1:List) I --> f(#2:List, #3:List, #4:List) J --> #1:List X --> #2:List Y --> f(#3:List, #4:List, #1:List) Unifier 3 A --> f(#2:List, #3:List, #1:List) B --> f(#2:List, #3:List) C --> #1:List I --> f(#2:List, #3:List) J --> #1:List X --> #2:List Y --> f(#3:List, #1:List) Unifier 4 A --> f(#1:List, #3:List, #4:List, #2:List) B --> #1:List C --> f(#3:List, #4:List, #2:List) I --> f(#1:List, #3:List, #4:List) J --> #2:List X --> f(#1:List, #3:List) Y --> f(#4:List, #2:List) Unifier 5 A --> f(#2:List, #3:List, #1:List) B --> #2:List C --> f(#3:List, #1:List) I --> f(#2:List, #3:List) J --> #1:List X --> #2:List Y --> f(#3:List, #1:List) Unifier 6 A --> f(#2:List, #3:List, #4:List, #1:List) B --> f(#2:List, #3:List, #4:List) C --> #1:List I --> #2:List J --> f(#3:List, #4:List, #1:List) X --> f(#2:List, #3:List) Y --> f(#4:List, #1:List) Unifier 7 A --> f(#1:List, #3:List, #4:List, #2:List) B --> f(#1:List, #3:List) C --> f(#4:List, #2:List) I --> #1:List J --> f(#3:List, #4:List, #2:List) X --> f(#1:List, #3:List, #4:List) Y --> #2:List Unifier 8 A --> f(#1:List, #3:List, #2:List) B --> f(#1:List, #3:List) C --> #2:List I --> #1:List J --> f(#3:List, #2:List) X --> f(#1:List, #3:List) Y --> #2:List Unifier 9 A --> f(#1:List, #3:List, #4:List, #2:List) B --> #1:List C --> f(#3:List, #4:List, #2:List) I --> f(#1:List, #3:List) J --> f(#4:List, #2:List) X --> f(#1:List, #3:List, #4:List) Y --> #2:List Unifier 10 A --> f(#1:List, #3:List, #2:List) B --> #1:List C --> f(#3:List, #2:List) I --> #1:List J --> f(#3:List, #2:List) X --> f(#1:List, #3:List) Y --> #2:List Unifier 11 A --> f(#2:List, #3:List, #1:List) B --> f(#2:List, #3:List) C --> #1:List I --> #2:List J --> f(#3:List, #1:List) X --> #2:List Y --> f(#3:List, #1:List) Unifier 12 A --> f(#1:List, #3:List, #2:List) B --> #1:List C --> f(#3:List, #2:List) I --> f(#1:List, #3:List) J --> #2:List X --> f(#1:List, #3:List) Y --> #2:List Unifier 13 A --> f(#1:List, #2:List) B --> #1:List C --> #2:List I --> #1:List J --> #2:List X --> #1:List Y --> #2:List ========================================== unify in A-UNIF : h(f(a, b), f(a, b), f(a, b)) =? h(f(B, C), f(I, J), f(X, Y)) . Unifier 1 B --> a C --> b I --> a J --> b X --> a Y --> b ========================================== unify in A-UNIF : A E B F C E D =? W F X E Y F Z . Unifier 1 A --> #6:List #3:Elt #7:List #1:Elt #8:List #3:Elt #9:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #5:List W --> #6:List X --> #7:List Y --> #8:List Z --> #9:List #1:Elt #2:List #3:Elt #4:List #1:Elt #5:List Unifier 2 A --> #6:List #3:Elt #7:List #1:Elt #8:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #5:List W --> #6:List X --> #7:List Y --> #8:List Z --> #1:Elt #2:List #3:Elt #4:List #1:Elt #5:List Unifier 3 A --> #5:List #2:Elt #6:List #1:Elt #7:List E --> #1:Elt B --> #8:List #2:Elt #9:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #7:List #1:Elt #8:List Z --> #9:List #2:Elt #3:List #1:Elt #4:List Unifier 4 A --> #5:List #2:Elt #6:List #1:Elt #7:List E --> #1:Elt B --> #8:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #7:List #1:Elt #8:List Z --> #2:Elt #3:List #1:Elt #4:List Unifier 5 A --> #5:List #3:Elt #6:List #1:Elt #7:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #8:List #3:Elt #9:List D --> #4:List W --> #5:List X --> #6:List Y --> #7:List #1:Elt #2:List #3:Elt #8:List Z --> #9:List #1:Elt #4:List Unifier 6 A --> #5:List #3:Elt #6:List #1:Elt #7:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #8:List #3:Elt D --> #4:List W --> #5:List X --> #6:List Y --> #7:List #1:Elt #2:List #3:Elt #8:List Z --> #1:Elt #4:List Unifier 7 A --> #5:List #3:Elt #6:List #1:Elt #8:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #9:List #3:Elt #7:List W --> #5:List X --> #6:List Y --> #8:List #1:Elt #2:List #3:Elt #4:List #1:Elt #9:List Z --> #7:List Unifier 8 A --> #5:List #3:Elt #6:List #1:Elt #8:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #3:Elt #7:List W --> #5:List X --> #6:List Y --> #8:List #1:Elt #2:List #3:Elt #4:List #1:Elt Z --> #7:List Unifier 9 A --> #5:List #1:Elt #6:List #1:Elt #7:List E --> #1:Elt B --> #2:List F --> #1:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #7:List #1:Elt #2:List #1:Elt #3:List Z --> #4:List Unifier 10 A --> #5:List #3:Elt #6:List #1:Elt #7:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #3:Elt #8:List D --> #4:List W --> #5:List X --> #6:List Y --> #7:List #1:Elt #2:List #3:Elt Z --> #8:List #1:Elt #4:List Unifier 11 A --> #5:List #3:Elt #6:List #1:Elt #7:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #3:Elt D --> #4:List W --> #5:List X --> #6:List Y --> #7:List #1:Elt #2:List #3:Elt Z --> #1:Elt #4:List Unifier 12 A --> #6:List #3:Elt #7:List #1:Elt #8:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #5:List W --> #6:List X --> #7:List Y --> #8:List #1:Elt #2:List Z --> #4:List #1:Elt #5:List Unifier 13 A --> #5:List #2:Elt #6:List #1:Elt #7:List E --> #1:Elt B --> #2:Elt #8:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #7:List #1:Elt Z --> #8:List #2:Elt #3:List #1:Elt #4:List Unifier 14 A --> #5:List #2:Elt #6:List #1:Elt #7:List E --> #1:Elt B --> #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #7:List #1:Elt Z --> #2:Elt #3:List #1:Elt #4:List Unifier 15 A --> #5:List #1:Elt #6:List #1:Elt #7:List E --> #1:Elt B --> #2:List F --> #1:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #7:List Z --> #2:List #1:Elt #3:List #1:Elt #4:List Unifier 16 A --> #5:List #2:Elt #6:List #1:Elt E --> #1:Elt B --> #7:List #2:Elt #8:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #1:Elt #7:List Z --> #8:List #2:Elt #3:List #1:Elt #4:List Unifier 17 A --> #5:List #2:Elt #6:List #1:Elt E --> #1:Elt B --> #7:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #1:Elt #7:List Z --> #2:Elt #3:List #1:Elt #4:List Unifier 18 A --> #5:List #3:Elt #6:List #1:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #7:List #3:Elt #8:List D --> #4:List W --> #5:List X --> #6:List Y --> #1:Elt #2:List #3:Elt #7:List Z --> #8:List #1:Elt #4:List Unifier 19 A --> #5:List #3:Elt #6:List #1:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #7:List #3:Elt D --> #4:List W --> #5:List X --> #6:List Y --> #1:Elt #2:List #3:Elt #7:List Z --> #1:Elt #4:List Unifier 20 A --> #5:List #3:Elt #6:List #1:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #8:List #3:Elt #7:List W --> #5:List X --> #6:List Y --> #1:Elt #2:List #3:Elt #4:List #1:Elt #8:List Z --> #7:List Unifier 21 A --> #5:List #3:Elt #6:List #1:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #3:Elt #7:List W --> #5:List X --> #6:List Y --> #1:Elt #2:List #3:Elt #4:List #1:Elt Z --> #7:List Unifier 22 A --> #5:List #1:Elt #6:List #1:Elt E --> #1:Elt B --> #2:List F --> #1:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #1:Elt #2:List #1:Elt #3:List Z --> #4:List Unifier 23 A --> #5:List #3:Elt #6:List #1:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #3:Elt #7:List D --> #4:List W --> #5:List X --> #6:List Y --> #1:Elt #2:List #3:Elt Z --> #7:List #1:Elt #4:List Unifier 24 A --> #5:List #3:Elt #6:List #1:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #3:Elt D --> #4:List W --> #5:List X --> #6:List Y --> #1:Elt #2:List #3:Elt Z --> #1:Elt #4:List Unifier 25 A --> #6:List #3:Elt #7:List #1:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #5:List W --> #6:List X --> #7:List Y --> #1:Elt #2:List Z --> #4:List #1:Elt #5:List Unifier 26 A --> #5:List #2:Elt #6:List #1:Elt E --> #1:Elt B --> #2:Elt #7:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #1:Elt Z --> #7:List #2:Elt #3:List #1:Elt #4:List Unifier 27 A --> #5:List #2:Elt #6:List #1:Elt E --> #1:Elt B --> #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #1:Elt Z --> #2:Elt #3:List #1:Elt #4:List Unifier 28 A --> #5:List #2:Elt #7:List E --> #1:Elt B --> #8:List #1:Elt #6:List #2:Elt #9:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #7:List #1:Elt #8:List Y --> #6:List Z --> #9:List #2:Elt #3:List #1:Elt #4:List Unifier 29 A --> #5:List #2:Elt #7:List E --> #1:Elt B --> #8:List #1:Elt #6:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #7:List #1:Elt #8:List Y --> #6:List Z --> #2:Elt #3:List #1:Elt #4:List Unifier 30 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #6:List #1:Elt #7:List F --> #2:Elt C --> #8:List #2:Elt #9:List D --> #3:List W --> #4:List X --> #5:List #1:Elt #6:List Y --> #7:List #2:Elt #8:List Z --> #9:List #1:Elt #3:List Unifier 31 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #6:List #1:Elt #7:List F --> #2:Elt C --> #8:List #2:Elt D --> #3:List W --> #4:List X --> #5:List #1:Elt #6:List Y --> #7:List #2:Elt #8:List Z --> #1:Elt #3:List Unifier 32 A --> #4:List #2:Elt #6:List E --> #1:Elt B --> #7:List #1:Elt #8:List F --> #2:Elt C --> #3:List D --> #9:List #2:Elt #5:List W --> #4:List X --> #6:List #1:Elt #7:List Y --> #8:List #2:Elt #3:List #1:Elt #9:List Z --> #5:List Unifier 33 A --> #4:List #2:Elt #6:List E --> #1:Elt B --> #7:List #1:Elt #8:List F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #4:List X --> #6:List #1:Elt #7:List Y --> #8:List #2:Elt #3:List #1:Elt Z --> #5:List Unifier 34 A --> #4:List #1:Elt #5:List E --> #1:Elt B --> #6:List #1:Elt #7:List F --> #1:Elt C --> #2:List D --> #3:List W --> #4:List X --> #5:List #1:Elt #6:List Y --> #7:List #1:Elt #2:List Z --> #3:List Unifier 35 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #6:List #1:Elt #7:List F --> #2:Elt C --> #2:Elt #8:List D --> #3:List W --> #4:List X --> #5:List #1:Elt #6:List Y --> #7:List #2:Elt Z --> #8:List #1:Elt #3:List Unifier 36 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #6:List #1:Elt #7:List F --> #2:Elt C --> #2:Elt D --> #3:List W --> #4:List X --> #5:List #1:Elt #6:List Y --> #7:List #2:Elt Z --> #1:Elt #3:List Unifier 37 A --> #5:List #2:Elt #7:List E --> #1:Elt B --> #8:List #1:Elt #6:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #7:List #1:Elt #8:List Y --> #6:List Z --> #3:List #1:Elt #4:List Unifier 38 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #6:List #1:Elt F --> #2:Elt C --> #7:List #2:Elt #8:List D --> #3:List W --> #4:List X --> #5:List #1:Elt #6:List Y --> #2:Elt #7:List Z --> #8:List #1:Elt #3:List Unifier 39 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #6:List #1:Elt F --> #2:Elt C --> #7:List #2:Elt D --> #3:List W --> #4:List X --> #5:List #1:Elt #6:List Y --> #2:Elt #7:List Z --> #1:Elt #3:List Unifier 40 A --> #4:List #2:Elt #6:List E --> #1:Elt B --> #7:List #1:Elt F --> #2:Elt C --> #3:List D --> #8:List #2:Elt #5:List W --> #4:List X --> #6:List #1:Elt #7:List Y --> #2:Elt #3:List #1:Elt #8:List Z --> #5:List Unifier 41 A --> #4:List #2:Elt #6:List E --> #1:Elt B --> #7:List #1:Elt F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #4:List X --> #6:List #1:Elt #7:List Y --> #2:Elt #3:List #1:Elt Z --> #5:List Unifier 42 A --> #4:List #1:Elt #5:List E --> #1:Elt B --> #6:List #1:Elt F --> #1:Elt C --> #2:List D --> #3:List W --> #4:List X --> #5:List #1:Elt #6:List Y --> #1:Elt #2:List Z --> #3:List Unifier 43 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #6:List #1:Elt F --> #2:Elt C --> #2:Elt #7:List D --> #3:List W --> #4:List X --> #5:List #1:Elt #6:List Y --> #2:Elt Z --> #7:List #1:Elt #3:List Unifier 44 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #6:List #1:Elt F --> #2:Elt C --> #2:Elt D --> #3:List W --> #4:List X --> #5:List #1:Elt #6:List Y --> #2:Elt Z --> #1:Elt #3:List Unifier 45 A --> #5:List #3:Elt #7:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #8:List #1:Elt #6:List #3:Elt #9:List D --> #4:List W --> #5:List X --> #7:List #1:Elt #2:List #3:Elt #8:List Y --> #6:List Z --> #9:List #1:Elt #4:List Unifier 46 A --> #5:List #3:Elt #7:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #8:List #1:Elt #6:List #3:Elt D --> #4:List W --> #5:List X --> #7:List #1:Elt #2:List #3:Elt #8:List Y --> #6:List Z --> #1:Elt #4:List Unifier 47 A --> #4:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #7:List #1:Elt #8:List D --> #9:List #3:Elt #5:List W --> #4:List X --> #6:List #1:Elt #2:List #3:Elt #7:List Y --> #8:List #1:Elt #9:List Z --> #5:List Unifier 48 A --> #4:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #7:List #1:Elt #8:List D --> #3:Elt #5:List W --> #4:List X --> #6:List #1:Elt #2:List #3:Elt #7:List Y --> #8:List #1:Elt Z --> #5:List Unifier 49 A --> #4:List #1:Elt #6:List E --> #1:Elt B --> #2:List F --> #1:Elt C --> #7:List #1:Elt #5:List D --> #3:List W --> #4:List X --> #6:List #1:Elt #2:List #1:Elt #7:List Y --> #5:List Z --> #3:List Unifier 50 A --> #4:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #7:List #1:Elt D --> #8:List #3:Elt #5:List W --> #4:List X --> #6:List #1:Elt #2:List #3:Elt #7:List Y --> #1:Elt #8:List Z --> #5:List Unifier 51 A --> #4:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #7:List #1:Elt D --> #3:Elt #5:List W --> #4:List X --> #6:List #1:Elt #2:List #3:Elt #7:List Y --> #1:Elt Z --> #5:List Unifier 52 A --> #5:List #3:Elt #8:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #9:List #1:Elt #6:List #3:Elt #7:List W --> #5:List X --> #8:List #1:Elt #2:List #3:Elt #4:List #1:Elt #9:List Y --> #6:List Z --> #7:List Unifier 53 A --> #5:List #3:Elt #8:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #1:Elt #6:List #3:Elt #7:List W --> #5:List X --> #8:List #1:Elt #2:List #3:Elt #4:List #1:Elt Y --> #6:List Z --> #7:List Unifier 54 A --> #5:List #3:Elt #8:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #6:List #3:Elt #7:List W --> #5:List X --> #8:List #1:Elt #2:List #3:Elt #4:List Y --> #6:List Z --> #7:List Unifier 55 A --> #5:List #3:Elt #7:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt #6:List #3:Elt #8:List D --> #4:List W --> #5:List X --> #7:List #1:Elt #2:List #3:Elt Y --> #6:List Z --> #8:List #1:Elt #4:List Unifier 56 A --> #5:List #3:Elt #7:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt #6:List #3:Elt D --> #4:List W --> #5:List X --> #7:List #1:Elt #2:List #3:Elt Y --> #6:List Z --> #1:Elt #4:List Unifier 57 A --> #4:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt #7:List D --> #8:List #3:Elt #5:List W --> #4:List X --> #6:List #1:Elt #2:List #3:Elt Y --> #7:List #1:Elt #8:List Z --> #5:List Unifier 58 A --> #4:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt #7:List D --> #3:Elt #5:List W --> #4:List X --> #6:List #1:Elt #2:List #3:Elt Y --> #7:List #1:Elt Z --> #5:List Unifier 59 A --> #4:List #1:Elt #6:List E --> #1:Elt B --> #2:List F --> #1:Elt C --> #1:Elt #5:List D --> #3:List W --> #4:List X --> #6:List #1:Elt #2:List #1:Elt Y --> #5:List Z --> #3:List Unifier 60 A --> #4:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt D --> #7:List #3:Elt #5:List W --> #4:List X --> #6:List #1:Elt #2:List #3:Elt Y --> #1:Elt #7:List Z --> #5:List Unifier 61 A --> #4:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt D --> #3:Elt #5:List W --> #4:List X --> #6:List #1:Elt #2:List #3:Elt Y --> #1:Elt Z --> #5:List Unifier 62 A --> #4:List #1:Elt #6:List E --> #1:Elt B --> #2:List F --> #1:Elt C --> #5:List #1:Elt #7:List D --> #3:List W --> #4:List X --> #6:List #1:Elt #2:List Y --> #5:List Z --> #7:List #1:Elt #3:List Unifier 63 A --> #4:List #1:Elt #6:List E --> #1:Elt B --> #2:List F --> #1:Elt C --> #5:List #1:Elt D --> #3:List W --> #4:List X --> #6:List #1:Elt #2:List Y --> #5:List Z --> #1:Elt #3:List Unifier 64 A --> #4:List #1:Elt #6:List E --> #1:Elt B --> #2:List F --> #1:Elt C --> #3:List D --> #7:List #1:Elt #5:List W --> #4:List X --> #6:List #1:Elt #2:List Y --> #3:List #1:Elt #7:List Z --> #5:List Unifier 65 A --> #4:List #1:Elt #6:List E --> #1:Elt B --> #2:List F --> #1:Elt C --> #3:List D --> #1:Elt #5:List W --> #4:List X --> #6:List #1:Elt #2:List Y --> #3:List #1:Elt Z --> #5:List Unifier 66 A --> #5:List #1:Elt #6:List E --> #1:Elt B --> #2:List F --> #1:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List #1:Elt #2:List Y --> #3:List Z --> #4:List Unifier 67 A --> #5:List #2:Elt #7:List E --> #1:Elt B --> #1:Elt #6:List #2:Elt #8:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #7:List #1:Elt Y --> #6:List Z --> #8:List #2:Elt #3:List #1:Elt #4:List Unifier 68 A --> #5:List #2:Elt #7:List E --> #1:Elt B --> #1:Elt #6:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #7:List #1:Elt Y --> #6:List Z --> #2:Elt #3:List #1:Elt #4:List Unifier 69 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #1:Elt #6:List F --> #2:Elt C --> #7:List #2:Elt #8:List D --> #3:List W --> #4:List X --> #5:List #1:Elt Y --> #6:List #2:Elt #7:List Z --> #8:List #1:Elt #3:List Unifier 70 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #1:Elt #6:List F --> #2:Elt C --> #7:List #2:Elt D --> #3:List W --> #4:List X --> #5:List #1:Elt Y --> #6:List #2:Elt #7:List Z --> #1:Elt #3:List Unifier 71 A --> #4:List #2:Elt #6:List E --> #1:Elt B --> #1:Elt #7:List F --> #2:Elt C --> #3:List D --> #8:List #2:Elt #5:List W --> #4:List X --> #6:List #1:Elt Y --> #7:List #2:Elt #3:List #1:Elt #8:List Z --> #5:List Unifier 72 A --> #4:List #2:Elt #6:List E --> #1:Elt B --> #1:Elt #7:List F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #4:List X --> #6:List #1:Elt Y --> #7:List #2:Elt #3:List #1:Elt Z --> #5:List Unifier 73 A --> #4:List #1:Elt #5:List E --> #1:Elt B --> #1:Elt #6:List F --> #1:Elt C --> #2:List D --> #3:List W --> #4:List X --> #5:List #1:Elt Y --> #6:List #1:Elt #2:List Z --> #3:List Unifier 74 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #1:Elt #6:List F --> #2:Elt C --> #2:Elt #7:List D --> #3:List W --> #4:List X --> #5:List #1:Elt Y --> #6:List #2:Elt Z --> #7:List #1:Elt #3:List Unifier 75 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #1:Elt #6:List F --> #2:Elt C --> #2:Elt D --> #3:List W --> #4:List X --> #5:List #1:Elt Y --> #6:List #2:Elt Z --> #1:Elt #3:List Unifier 76 A --> #5:List #2:Elt #7:List E --> #1:Elt B --> #1:Elt #6:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #7:List #1:Elt Y --> #6:List Z --> #3:List #1:Elt #4:List Unifier 77 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #6:List #2:Elt #7:List D --> #3:List W --> #4:List X --> #5:List #1:Elt Y --> #2:Elt #6:List Z --> #7:List #1:Elt #3:List Unifier 78 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #6:List #2:Elt D --> #3:List W --> #4:List X --> #5:List #1:Elt Y --> #2:Elt #6:List Z --> #1:Elt #3:List Unifier 79 A --> #4:List #2:Elt #6:List E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #3:List D --> #7:List #2:Elt #5:List W --> #4:List X --> #6:List #1:Elt Y --> #2:Elt #3:List #1:Elt #7:List Z --> #5:List Unifier 80 A --> #4:List #2:Elt #6:List E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #4:List X --> #6:List #1:Elt Y --> #2:Elt #3:List #1:Elt Z --> #5:List Unifier 81 A --> #4:List #1:Elt #5:List E --> #1:Elt B --> #1:Elt F --> #1:Elt C --> #2:List D --> #3:List W --> #4:List X --> #5:List #1:Elt Y --> #1:Elt #2:List Z --> #3:List Unifier 82 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #2:Elt #6:List D --> #3:List W --> #4:List X --> #5:List #1:Elt Y --> #2:Elt Z --> #6:List #1:Elt #3:List Unifier 83 A --> #4:List #2:Elt #5:List E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #2:Elt D --> #3:List W --> #4:List X --> #5:List #1:Elt Y --> #2:Elt Z --> #1:Elt #3:List Unifier 84 A --> #5:List #2:Elt #6:List E --> #1:Elt B --> #7:List #2:Elt #8:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #7:List Z --> #8:List #2:Elt #3:List #1:Elt #4:List Unifier 85 A --> #5:List #2:Elt #6:List E --> #1:Elt B --> #7:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #7:List Z --> #2:Elt #3:List #1:Elt #4:List Unifier 86 A --> #5:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #7:List #3:Elt #8:List D --> #4:List W --> #5:List X --> #6:List Y --> #2:List #3:Elt #7:List Z --> #8:List #1:Elt #4:List Unifier 87 A --> #5:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #7:List #3:Elt D --> #4:List W --> #5:List X --> #6:List Y --> #2:List #3:Elt #7:List Z --> #1:Elt #4:List Unifier 88 A --> #5:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #8:List #3:Elt #7:List W --> #5:List X --> #6:List Y --> #2:List #3:Elt #4:List #1:Elt #8:List Z --> #7:List Unifier 89 A --> #5:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #3:Elt #7:List W --> #5:List X --> #6:List Y --> #2:List #3:Elt #4:List #1:Elt Z --> #7:List Unifier 90 A --> #5:List #1:Elt #6:List E --> #1:Elt B --> #2:List F --> #1:Elt C --> #3:List D --> #4:List W --> #5:List X --> #6:List Y --> #2:List #1:Elt #3:List Z --> #4:List Unifier 91 A --> #5:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #3:Elt #7:List D --> #4:List W --> #5:List X --> #6:List Y --> #2:List #3:Elt Z --> #7:List #1:Elt #4:List Unifier 92 A --> #5:List #3:Elt #6:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #3:Elt D --> #4:List W --> #5:List X --> #6:List Y --> #2:List #3:Elt Z --> #1:Elt #4:List Unifier 93 A --> #6:List #3:Elt #7:List E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #5:List W --> #6:List X --> #7:List Y --> #2:List Z --> #4:List #1:Elt #5:List Unifier 94 A --> #5:List #2:Elt E --> #1:Elt B --> #7:List #1:Elt #6:List #2:Elt #8:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #1:Elt #7:List Y --> #6:List Z --> #8:List #2:Elt #3:List #1:Elt #4:List Unifier 95 A --> #5:List #2:Elt E --> #1:Elt B --> #7:List #1:Elt #6:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #1:Elt #7:List Y --> #6:List Z --> #2:Elt #3:List #1:Elt #4:List Unifier 96 A --> #4:List #2:Elt E --> #1:Elt B --> #5:List #1:Elt #6:List F --> #2:Elt C --> #7:List #2:Elt #8:List D --> #3:List W --> #4:List X --> #1:Elt #5:List Y --> #6:List #2:Elt #7:List Z --> #8:List #1:Elt #3:List Unifier 97 A --> #4:List #2:Elt E --> #1:Elt B --> #5:List #1:Elt #6:List F --> #2:Elt C --> #7:List #2:Elt D --> #3:List W --> #4:List X --> #1:Elt #5:List Y --> #6:List #2:Elt #7:List Z --> #1:Elt #3:List Unifier 98 A --> #4:List #2:Elt E --> #1:Elt B --> #6:List #1:Elt #7:List F --> #2:Elt C --> #3:List D --> #8:List #2:Elt #5:List W --> #4:List X --> #1:Elt #6:List Y --> #7:List #2:Elt #3:List #1:Elt #8:List Z --> #5:List Unifier 99 A --> #4:List #2:Elt E --> #1:Elt B --> #6:List #1:Elt #7:List F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #4:List X --> #1:Elt #6:List Y --> #7:List #2:Elt #3:List #1:Elt Z --> #5:List Unifier 100 A --> #4:List #1:Elt E --> #1:Elt B --> #5:List #1:Elt #6:List F --> #1:Elt C --> #2:List D --> #3:List W --> #4:List X --> #1:Elt #5:List Y --> #6:List #1:Elt #2:List Z --> #3:List Unifier 101 A --> #4:List #2:Elt E --> #1:Elt B --> #5:List #1:Elt #6:List F --> #2:Elt C --> #2:Elt #7:List D --> #3:List W --> #4:List X --> #1:Elt #5:List Y --> #6:List #2:Elt Z --> #7:List #1:Elt #3:List Unifier 102 A --> #4:List #2:Elt E --> #1:Elt B --> #5:List #1:Elt #6:List F --> #2:Elt C --> #2:Elt D --> #3:List W --> #4:List X --> #1:Elt #5:List Y --> #6:List #2:Elt Z --> #1:Elt #3:List Unifier 103 A --> #5:List #2:Elt E --> #1:Elt B --> #7:List #1:Elt #6:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #1:Elt #7:List Y --> #6:List Z --> #3:List #1:Elt #4:List Unifier 104 A --> #4:List #2:Elt E --> #1:Elt B --> #5:List #1:Elt F --> #2:Elt C --> #6:List #2:Elt #7:List D --> #3:List W --> #4:List X --> #1:Elt #5:List Y --> #2:Elt #6:List Z --> #7:List #1:Elt #3:List Unifier 105 A --> #4:List #2:Elt E --> #1:Elt B --> #5:List #1:Elt F --> #2:Elt C --> #6:List #2:Elt D --> #3:List W --> #4:List X --> #1:Elt #5:List Y --> #2:Elt #6:List Z --> #1:Elt #3:List Unifier 106 A --> #4:List #2:Elt E --> #1:Elt B --> #6:List #1:Elt F --> #2:Elt C --> #3:List D --> #7:List #2:Elt #5:List W --> #4:List X --> #1:Elt #6:List Y --> #2:Elt #3:List #1:Elt #7:List Z --> #5:List Unifier 107 A --> #4:List #2:Elt E --> #1:Elt B --> #6:List #1:Elt F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #4:List X --> #1:Elt #6:List Y --> #2:Elt #3:List #1:Elt Z --> #5:List Unifier 108 A --> #4:List #1:Elt E --> #1:Elt B --> #5:List #1:Elt F --> #1:Elt C --> #2:List D --> #3:List W --> #4:List X --> #1:Elt #5:List Y --> #1:Elt #2:List Z --> #3:List Unifier 109 A --> #4:List #2:Elt E --> #1:Elt B --> #5:List #1:Elt F --> #2:Elt C --> #2:Elt #6:List D --> #3:List W --> #4:List X --> #1:Elt #5:List Y --> #2:Elt Z --> #6:List #1:Elt #3:List Unifier 110 A --> #4:List #2:Elt E --> #1:Elt B --> #5:List #1:Elt F --> #2:Elt C --> #2:Elt D --> #3:List W --> #4:List X --> #1:Elt #5:List Y --> #2:Elt Z --> #1:Elt #3:List Unifier 111 A --> #5:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #7:List #1:Elt #6:List #3:Elt #8:List D --> #4:List W --> #5:List X --> #1:Elt #2:List #3:Elt #7:List Y --> #6:List Z --> #8:List #1:Elt #4:List Unifier 112 A --> #5:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #7:List #1:Elt #6:List #3:Elt D --> #4:List W --> #5:List X --> #1:Elt #2:List #3:Elt #7:List Y --> #6:List Z --> #1:Elt #4:List Unifier 113 A --> #4:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #6:List #1:Elt #7:List D --> #8:List #3:Elt #5:List W --> #4:List X --> #1:Elt #2:List #3:Elt #6:List Y --> #7:List #1:Elt #8:List Z --> #5:List Unifier 114 A --> #4:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #6:List #1:Elt #7:List D --> #3:Elt #5:List W --> #4:List X --> #1:Elt #2:List #3:Elt #6:List Y --> #7:List #1:Elt Z --> #5:List Unifier 115 A --> #4:List #1:Elt E --> #1:Elt B --> #2:List F --> #1:Elt C --> #6:List #1:Elt #5:List D --> #3:List W --> #4:List X --> #1:Elt #2:List #1:Elt #6:List Y --> #5:List Z --> #3:List Unifier 116 A --> #4:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #6:List #1:Elt D --> #7:List #3:Elt #5:List W --> #4:List X --> #1:Elt #2:List #3:Elt #6:List Y --> #1:Elt #7:List Z --> #5:List Unifier 117 A --> #4:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #6:List #1:Elt D --> #3:Elt #5:List W --> #4:List X --> #1:Elt #2:List #3:Elt #6:List Y --> #1:Elt Z --> #5:List Unifier 118 A --> #5:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #8:List #1:Elt #6:List #3:Elt #7:List W --> #5:List X --> #1:Elt #2:List #3:Elt #4:List #1:Elt #8:List Y --> #6:List Z --> #7:List Unifier 119 A --> #5:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #1:Elt #6:List #3:Elt #7:List W --> #5:List X --> #1:Elt #2:List #3:Elt #4:List #1:Elt Y --> #6:List Z --> #7:List Unifier 120 A --> #5:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #4:List D --> #6:List #3:Elt #7:List W --> #5:List X --> #1:Elt #2:List #3:Elt #4:List Y --> #6:List Z --> #7:List Unifier 121 A --> #5:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt #6:List #3:Elt #7:List D --> #4:List W --> #5:List X --> #1:Elt #2:List #3:Elt Y --> #6:List Z --> #7:List #1:Elt #4:List Unifier 122 A --> #5:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt #6:List #3:Elt D --> #4:List W --> #5:List X --> #1:Elt #2:List #3:Elt Y --> #6:List Z --> #1:Elt #4:List Unifier 123 A --> #4:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt #6:List D --> #7:List #3:Elt #5:List W --> #4:List X --> #1:Elt #2:List #3:Elt Y --> #6:List #1:Elt #7:List Z --> #5:List Unifier 124 A --> #4:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt #6:List D --> #3:Elt #5:List W --> #4:List X --> #1:Elt #2:List #3:Elt Y --> #6:List #1:Elt Z --> #5:List Unifier 125 A --> #4:List #1:Elt E --> #1:Elt B --> #2:List F --> #1:Elt C --> #1:Elt #5:List D --> #3:List W --> #4:List X --> #1:Elt #2:List #1:Elt Y --> #5:List Z --> #3:List Unifier 126 A --> #4:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt D --> #6:List #3:Elt #5:List W --> #4:List X --> #1:Elt #2:List #3:Elt Y --> #1:Elt #6:List Z --> #5:List Unifier 127 A --> #4:List #3:Elt E --> #1:Elt B --> #2:List F --> #3:Elt C --> #1:Elt D --> #3:Elt #5:List W --> #4:List X --> #1:Elt #2:List #3:Elt Y --> #1:Elt Z --> #5:List Unifier 128 A --> #4:List #1:Elt E --> #1:Elt B --> #2:List F --> #1:Elt C --> #5:List #1:Elt #6:List D --> #3:List W --> #4:List X --> #1:Elt #2:List Y --> #5:List Z --> #6:List #1:Elt #3:List Unifier 129 A --> #4:List #1:Elt E --> #1:Elt B --> #2:List F --> #1:Elt C --> #5:List #1:Elt D --> #3:List W --> #4:List X --> #1:Elt #2:List Y --> #5:List Z --> #1:Elt #3:List Unifier 130 A --> #4:List #1:Elt E --> #1:Elt B --> #2:List F --> #1:Elt C --> #3:List D --> #6:List #1:Elt #5:List W --> #4:List X --> #1:Elt #2:List Y --> #3:List #1:Elt #6:List Z --> #5:List Unifier 131 A --> #4:List #1:Elt E --> #1:Elt B --> #2:List F --> #1:Elt C --> #3:List D --> #1:Elt #5:List W --> #4:List X --> #1:Elt #2:List Y --> #3:List #1:Elt Z --> #5:List Unifier 132 A --> #5:List #1:Elt E --> #1:Elt B --> #2:List F --> #1:Elt C --> #3:List D --> #4:List W --> #5:List X --> #1:Elt #2:List Y --> #3:List Z --> #4:List Unifier 133 A --> #5:List #2:Elt E --> #1:Elt B --> #1:Elt #6:List #2:Elt #7:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #1:Elt Y --> #6:List Z --> #7:List #2:Elt #3:List #1:Elt #4:List Unifier 134 A --> #5:List #2:Elt E --> #1:Elt B --> #1:Elt #6:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #1:Elt Y --> #6:List Z --> #2:Elt #3:List #1:Elt #4:List Unifier 135 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt #5:List F --> #2:Elt C --> #6:List #2:Elt #7:List D --> #3:List W --> #4:List X --> #1:Elt Y --> #5:List #2:Elt #6:List Z --> #7:List #1:Elt #3:List Unifier 136 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt #5:List F --> #2:Elt C --> #6:List #2:Elt D --> #3:List W --> #4:List X --> #1:Elt Y --> #5:List #2:Elt #6:List Z --> #1:Elt #3:List Unifier 137 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt #6:List F --> #2:Elt C --> #3:List D --> #7:List #2:Elt #5:List W --> #4:List X --> #1:Elt Y --> #6:List #2:Elt #3:List #1:Elt #7:List Z --> #5:List Unifier 138 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt #6:List F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #4:List X --> #1:Elt Y --> #6:List #2:Elt #3:List #1:Elt Z --> #5:List Unifier 139 A --> #4:List #1:Elt E --> #1:Elt B --> #1:Elt #5:List F --> #1:Elt C --> #2:List D --> #3:List W --> #4:List X --> #1:Elt Y --> #5:List #1:Elt #2:List Z --> #3:List Unifier 140 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt #5:List F --> #2:Elt C --> #2:Elt #6:List D --> #3:List W --> #4:List X --> #1:Elt Y --> #5:List #2:Elt Z --> #6:List #1:Elt #3:List Unifier 141 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt #5:List F --> #2:Elt C --> #2:Elt D --> #3:List W --> #4:List X --> #1:Elt Y --> #5:List #2:Elt Z --> #1:Elt #3:List Unifier 142 A --> #5:List #2:Elt E --> #1:Elt B --> #1:Elt #6:List F --> #2:Elt C --> #3:List D --> #4:List W --> #5:List X --> #1:Elt Y --> #6:List Z --> #3:List #1:Elt #4:List Unifier 143 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #5:List #2:Elt #6:List D --> #3:List W --> #4:List X --> #1:Elt Y --> #2:Elt #5:List Z --> #6:List #1:Elt #3:List Unifier 144 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #5:List #2:Elt D --> #3:List W --> #4:List X --> #1:Elt Y --> #2:Elt #5:List Z --> #1:Elt #3:List Unifier 145 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #3:List D --> #6:List #2:Elt #5:List W --> #4:List X --> #1:Elt Y --> #2:Elt #3:List #1:Elt #6:List Z --> #5:List Unifier 146 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #4:List X --> #1:Elt Y --> #2:Elt #3:List #1:Elt Z --> #5:List Unifier 147 A --> #4:List #1:Elt E --> #1:Elt B --> #1:Elt F --> #1:Elt C --> #2:List D --> #3:List W --> #4:List X --> #1:Elt Y --> #1:Elt #2:List Z --> #3:List Unifier 148 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #2:Elt #5:List D --> #3:List W --> #4:List X --> #1:Elt Y --> #2:Elt Z --> #5:List #1:Elt #3:List Unifier 149 A --> #4:List #2:Elt E --> #1:Elt B --> #1:Elt F --> #2:Elt C --> #2:Elt D --> #3:List W --> #4:List X --> #1:Elt Y --> #2:Elt Z --> #1:Elt #3:List Unifier 150 A --> #1:List E --> #2:Elt B --> #8:List #3:Elt #6:List #2:Elt #7:List #3:Elt #9:List F --> #3:Elt C --> #4:List D --> #5:List W --> #1:List #2:Elt #8:List X --> #6:List Y --> #7:List Z --> #9:List #3:Elt #4:List #2:Elt #5:List Unifier 151 A --> #1:List E --> #2:Elt B --> #8:List #3:Elt #6:List #2:Elt #7:List #3:Elt F --> #3:Elt C --> #4:List D --> #5:List W --> #1:List #2:Elt #8:List X --> #6:List Y --> #7:List Z --> #3:Elt #4:List #2:Elt #5:List Unifier 152 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #5:List #2:Elt #7:List F --> #3:Elt C --> #8:List #3:Elt #9:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #7:List #3:Elt #8:List Z --> #9:List #2:Elt #4:List Unifier 153 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #5:List #2:Elt #7:List F --> #3:Elt C --> #8:List #3:Elt D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #7:List #3:Elt #8:List Z --> #2:Elt #4:List Unifier 154 A --> #1:List E --> #2:Elt B --> #7:List #3:Elt #5:List #2:Elt #8:List F --> #3:Elt C --> #4:List D --> #9:List #3:Elt #6:List W --> #1:List #2:Elt #7:List X --> #5:List Y --> #8:List #3:Elt #4:List #2:Elt #9:List Z --> #6:List Unifier 155 A --> #1:List E --> #2:Elt B --> #7:List #3:Elt #5:List #2:Elt #8:List F --> #3:Elt C --> #4:List D --> #3:Elt #6:List W --> #1:List #2:Elt #7:List X --> #5:List Y --> #8:List #3:Elt #4:List #2:Elt Z --> #6:List Unifier 156 A --> #1:List E --> #2:Elt B --> #6:List #2:Elt #5:List #2:Elt #7:List F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #7:List #2:Elt #3:List Z --> #4:List Unifier 157 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #5:List #2:Elt #7:List F --> #3:Elt C --> #3:Elt #8:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #7:List #3:Elt Z --> #8:List #2:Elt #4:List Unifier 158 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #5:List #2:Elt #7:List F --> #3:Elt C --> #3:Elt D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #7:List #3:Elt Z --> #2:Elt #4:List Unifier 159 A --> #1:List E --> #2:Elt B --> #8:List #3:Elt #6:List #2:Elt #7:List F --> #3:Elt C --> #4:List D --> #5:List W --> #1:List #2:Elt #8:List X --> #6:List Y --> #7:List Z --> #4:List #2:Elt #5:List Unifier 160 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #5:List #2:Elt F --> #3:Elt C --> #7:List #3:Elt #8:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #3:Elt #7:List Z --> #8:List #2:Elt #4:List Unifier 161 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #5:List #2:Elt F --> #3:Elt C --> #7:List #3:Elt D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #3:Elt #7:List Z --> #2:Elt #4:List Unifier 162 A --> #1:List E --> #2:Elt B --> #7:List #3:Elt #5:List #2:Elt F --> #3:Elt C --> #4:List D --> #8:List #3:Elt #6:List W --> #1:List #2:Elt #7:List X --> #5:List Y --> #3:Elt #4:List #2:Elt #8:List Z --> #6:List Unifier 163 A --> #1:List E --> #2:Elt B --> #7:List #3:Elt #5:List #2:Elt F --> #3:Elt C --> #4:List D --> #3:Elt #6:List W --> #1:List #2:Elt #7:List X --> #5:List Y --> #3:Elt #4:List #2:Elt Z --> #6:List Unifier 164 A --> #1:List E --> #2:Elt B --> #6:List #2:Elt #5:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #2:Elt #3:List Z --> #4:List Unifier 165 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #5:List #2:Elt F --> #3:Elt C --> #3:Elt #7:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #3:Elt Z --> #7:List #2:Elt #4:List Unifier 166 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #5:List #2:Elt F --> #3:Elt C --> #3:Elt D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #3:Elt Z --> #2:Elt #4:List Unifier 167 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #7:List F --> #3:Elt C --> #8:List #2:Elt #5:List #3:Elt #9:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #7:List #3:Elt #8:List Y --> #5:List Z --> #9:List #2:Elt #4:List Unifier 168 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #7:List F --> #3:Elt C --> #8:List #2:Elt #5:List #3:Elt D --> #4:List W --> #1:List #2:Elt #6:List X --> #7:List #3:Elt #8:List Y --> #5:List Z --> #2:Elt #4:List Unifier 169 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt #6:List F --> #3:Elt C --> #7:List #2:Elt #8:List D --> #9:List #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #6:List #3:Elt #7:List Y --> #8:List #2:Elt #9:List Z --> #4:List Unifier 170 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt #6:List F --> #3:Elt C --> #7:List #2:Elt #8:List D --> #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #6:List #3:Elt #7:List Y --> #8:List #2:Elt Z --> #4:List Unifier 171 A --> #1:List E --> #2:Elt B --> #5:List #2:Elt #6:List F --> #2:Elt C --> #7:List #2:Elt #4:List D --> #3:List W --> #1:List #2:Elt #5:List X --> #6:List #2:Elt #7:List Y --> #4:List Z --> #3:List Unifier 172 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt #6:List F --> #3:Elt C --> #7:List #2:Elt D --> #8:List #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #6:List #3:Elt #7:List Y --> #2:Elt #8:List Z --> #4:List Unifier 173 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt #6:List F --> #3:Elt C --> #7:List #2:Elt D --> #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #6:List #3:Elt #7:List Y --> #2:Elt Z --> #4:List Unifier 174 A --> #1:List E --> #2:Elt B --> #7:List #3:Elt #8:List F --> #3:Elt C --> #4:List D --> #9:List #2:Elt #5:List #3:Elt #6:List W --> #1:List #2:Elt #7:List X --> #8:List #3:Elt #4:List #2:Elt #9:List Y --> #5:List Z --> #6:List Unifier 175 A --> #1:List E --> #2:Elt B --> #7:List #3:Elt #8:List F --> #3:Elt C --> #4:List D --> #2:Elt #5:List #3:Elt #6:List W --> #1:List #2:Elt #7:List X --> #8:List #3:Elt #4:List #2:Elt Y --> #5:List Z --> #6:List Unifier 176 A --> #1:List E --> #2:Elt B --> #7:List #3:Elt #8:List F --> #3:Elt C --> #4:List D --> #5:List #3:Elt #6:List W --> #1:List #2:Elt #7:List X --> #8:List #3:Elt #4:List Y --> #5:List Z --> #6:List Unifier 177 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #7:List F --> #3:Elt C --> #2:Elt #5:List #3:Elt #8:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #7:List #3:Elt Y --> #5:List Z --> #8:List #2:Elt #4:List Unifier 178 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt #7:List F --> #3:Elt C --> #2:Elt #5:List #3:Elt D --> #4:List W --> #1:List #2:Elt #6:List X --> #7:List #3:Elt Y --> #5:List Z --> #2:Elt #4:List Unifier 179 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt #6:List F --> #3:Elt C --> #2:Elt #7:List D --> #8:List #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #6:List #3:Elt Y --> #7:List #2:Elt #8:List Z --> #4:List Unifier 180 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt #6:List F --> #3:Elt C --> #2:Elt #7:List D --> #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #6:List #3:Elt Y --> #7:List #2:Elt Z --> #4:List Unifier 181 A --> #1:List E --> #2:Elt B --> #5:List #2:Elt #6:List F --> #2:Elt C --> #2:Elt #4:List D --> #3:List W --> #1:List #2:Elt #5:List X --> #6:List #2:Elt Y --> #4:List Z --> #3:List Unifier 182 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt #6:List F --> #3:Elt C --> #2:Elt D --> #7:List #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #6:List #3:Elt Y --> #2:Elt #7:List Z --> #4:List Unifier 183 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt #6:List F --> #3:Elt C --> #2:Elt D --> #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #6:List #3:Elt Y --> #2:Elt Z --> #4:List Unifier 184 A --> #1:List E --> #2:Elt B --> #6:List #2:Elt #4:List F --> #2:Elt C --> #5:List #2:Elt #7:List D --> #3:List W --> #1:List #2:Elt #6:List X --> #4:List Y --> #5:List Z --> #7:List #2:Elt #3:List Unifier 185 A --> #1:List E --> #2:Elt B --> #6:List #2:Elt #4:List F --> #2:Elt C --> #5:List #2:Elt D --> #3:List W --> #1:List #2:Elt #6:List X --> #4:List Y --> #5:List Z --> #2:Elt #3:List Unifier 186 A --> #1:List E --> #2:Elt B --> #6:List #2:Elt #4:List F --> #2:Elt C --> #3:List D --> #7:List #2:Elt #5:List W --> #1:List #2:Elt #6:List X --> #4:List Y --> #3:List #2:Elt #7:List Z --> #5:List Unifier 187 A --> #1:List E --> #2:Elt B --> #6:List #2:Elt #4:List F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #1:List #2:Elt #6:List X --> #4:List Y --> #3:List #2:Elt Z --> #5:List Unifier 188 A --> #1:List E --> #2:Elt B --> #6:List #2:Elt #5:List F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #5:List Y --> #3:List Z --> #4:List Unifier 189 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt F --> #3:Elt C --> #7:List #2:Elt #5:List #3:Elt #8:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #3:Elt #7:List Y --> #5:List Z --> #8:List #2:Elt #4:List Unifier 190 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt F --> #3:Elt C --> #7:List #2:Elt #5:List #3:Elt D --> #4:List W --> #1:List #2:Elt #6:List X --> #3:Elt #7:List Y --> #5:List Z --> #2:Elt #4:List Unifier 191 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt F --> #3:Elt C --> #6:List #2:Elt #7:List D --> #8:List #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #3:Elt #6:List Y --> #7:List #2:Elt #8:List Z --> #4:List Unifier 192 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt F --> #3:Elt C --> #6:List #2:Elt #7:List D --> #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #3:Elt #6:List Y --> #7:List #2:Elt Z --> #4:List Unifier 193 A --> #1:List E --> #2:Elt B --> #5:List #2:Elt F --> #2:Elt C --> #6:List #2:Elt #4:List D --> #3:List W --> #1:List #2:Elt #5:List X --> #2:Elt #6:List Y --> #4:List Z --> #3:List Unifier 194 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt F --> #3:Elt C --> #6:List #2:Elt D --> #7:List #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #3:Elt #6:List Y --> #2:Elt #7:List Z --> #4:List Unifier 195 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt F --> #3:Elt C --> #6:List #2:Elt D --> #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #3:Elt #6:List Y --> #2:Elt Z --> #4:List Unifier 196 A --> #1:List E --> #2:Elt B --> #7:List #3:Elt F --> #3:Elt C --> #4:List D --> #8:List #2:Elt #5:List #3:Elt #6:List W --> #1:List #2:Elt #7:List X --> #3:Elt #4:List #2:Elt #8:List Y --> #5:List Z --> #6:List Unifier 197 A --> #1:List E --> #2:Elt B --> #7:List #3:Elt F --> #3:Elt C --> #4:List D --> #2:Elt #5:List #3:Elt #6:List W --> #1:List #2:Elt #7:List X --> #3:Elt #4:List #2:Elt Y --> #5:List Z --> #6:List Unifier 198 A --> #1:List E --> #2:Elt B --> #7:List #3:Elt F --> #3:Elt C --> #4:List D --> #5:List #3:Elt #6:List W --> #1:List #2:Elt #7:List X --> #3:Elt #4:List Y --> #5:List Z --> #6:List Unifier 199 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt F --> #3:Elt C --> #2:Elt #5:List #3:Elt #7:List D --> #4:List W --> #1:List #2:Elt #6:List X --> #3:Elt Y --> #5:List Z --> #7:List #2:Elt #4:List Unifier 200 A --> #1:List E --> #2:Elt B --> #6:List #3:Elt F --> #3:Elt C --> #2:Elt #5:List #3:Elt D --> #4:List W --> #1:List #2:Elt #6:List X --> #3:Elt Y --> #5:List Z --> #2:Elt #4:List Unifier 201 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt F --> #3:Elt C --> #2:Elt #6:List D --> #7:List #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #3:Elt Y --> #6:List #2:Elt #7:List Z --> #4:List Unifier 202 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt F --> #3:Elt C --> #2:Elt #6:List D --> #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #3:Elt Y --> #6:List #2:Elt Z --> #4:List Unifier 203 A --> #1:List E --> #2:Elt B --> #5:List #2:Elt F --> #2:Elt C --> #2:Elt #4:List D --> #3:List W --> #1:List #2:Elt #5:List X --> #2:Elt Y --> #4:List Z --> #3:List Unifier 204 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt F --> #3:Elt C --> #2:Elt D --> #6:List #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #3:Elt Y --> #2:Elt #6:List Z --> #4:List Unifier 205 A --> #1:List E --> #2:Elt B --> #5:List #3:Elt F --> #3:Elt C --> #2:Elt D --> #3:Elt #4:List W --> #1:List #2:Elt #5:List X --> #3:Elt Y --> #2:Elt Z --> #4:List Unifier 206 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #8:List #4:Elt #6:List #2:Elt #7:List #4:Elt #9:List D --> #5:List W --> #1:List #2:Elt #3:List #4:Elt #8:List X --> #6:List Y --> #7:List Z --> #9:List #2:Elt #5:List Unifier 207 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #8:List #4:Elt #6:List #2:Elt #7:List #4:Elt D --> #5:List W --> #1:List #2:Elt #3:List #4:Elt #8:List X --> #6:List Y --> #7:List Z --> #2:Elt #5:List Unifier 208 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #7:List #4:Elt #5:List #2:Elt #8:List D --> #9:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt #7:List X --> #5:List Y --> #8:List #2:Elt #9:List Z --> #6:List Unifier 209 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #7:List #4:Elt #5:List #2:Elt #8:List D --> #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt #7:List X --> #5:List Y --> #8:List #2:Elt Z --> #6:List Unifier 210 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #7:List #2:Elt #5:List #2:Elt #6:List D --> #4:List W --> #1:List #2:Elt #3:List #2:Elt #7:List X --> #5:List Y --> #6:List Z --> #4:List Unifier 211 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #7:List #4:Elt #5:List #2:Elt D --> #8:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt #7:List X --> #5:List Y --> #2:Elt #8:List Z --> #6:List Unifier 212 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #7:List #4:Elt #5:List #2:Elt D --> #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt #7:List X --> #5:List Y --> #2:Elt Z --> #6:List Unifier 213 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #7:List #4:Elt #8:List D --> #9:List #2:Elt #5:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt #7:List X --> #8:List #2:Elt #9:List Y --> #5:List Z --> #6:List Unifier 214 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #7:List #4:Elt #8:List D --> #2:Elt #5:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt #7:List X --> #8:List #2:Elt Y --> #5:List Z --> #6:List Unifier 215 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #8:List #4:Elt #5:List D --> #6:List #4:Elt #7:List W --> #1:List #2:Elt #3:List #4:Elt #8:List X --> #5:List Y --> #6:List Z --> #7:List Unifier 216 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #7:List #4:Elt D --> #8:List #2:Elt #5:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt #7:List X --> #2:Elt #8:List Y --> #5:List Z --> #6:List Unifier 217 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #7:List #4:Elt D --> #2:Elt #5:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt #7:List X --> #2:Elt Y --> #5:List Z --> #6:List Unifier 218 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #5:List D --> #9:List #4:Elt #6:List #2:Elt #7:List #4:Elt #8:List W --> #1:List #2:Elt #3:List #4:Elt #5:List #2:Elt #9:List X --> #6:List Y --> #7:List Z --> #8:List Unifier 219 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #5:List D --> #4:Elt #6:List #2:Elt #7:List #4:Elt #8:List W --> #1:List #2:Elt #3:List #4:Elt #5:List #2:Elt X --> #6:List Y --> #7:List Z --> #8:List Unifier 220 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #4:List D --> #5:List #2:Elt #6:List #2:Elt #7:List W --> #1:List #2:Elt #3:List #2:Elt #4:List X --> #5:List Y --> #6:List Z --> #7:List Unifier 221 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt #6:List #2:Elt #7:List #4:Elt #8:List D --> #5:List W --> #1:List #2:Elt #3:List #4:Elt X --> #6:List Y --> #7:List Z --> #8:List #2:Elt #5:List Unifier 222 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt #6:List #2:Elt #7:List #4:Elt D --> #5:List W --> #1:List #2:Elt #3:List #4:Elt X --> #6:List Y --> #7:List Z --> #2:Elt #5:List Unifier 223 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt #5:List #2:Elt #7:List D --> #8:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt X --> #5:List Y --> #7:List #2:Elt #8:List Z --> #6:List Unifier 224 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt #5:List #2:Elt #7:List D --> #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt X --> #5:List Y --> #7:List #2:Elt Z --> #6:List Unifier 225 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #2:Elt #5:List #2:Elt #6:List D --> #4:List W --> #1:List #2:Elt #3:List #2:Elt X --> #5:List Y --> #6:List Z --> #4:List Unifier 226 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt #5:List #2:Elt D --> #7:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt X --> #5:List Y --> #2:Elt #7:List Z --> #6:List Unifier 227 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt #5:List #2:Elt D --> #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt X --> #5:List Y --> #2:Elt Z --> #6:List Unifier 228 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt #7:List D --> #8:List #2:Elt #5:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt X --> #7:List #2:Elt #8:List Y --> #5:List Z --> #6:List Unifier 229 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt #7:List D --> #2:Elt #5:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt X --> #7:List #2:Elt Y --> #5:List Z --> #6:List Unifier 230 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt #5:List D --> #6:List #4:Elt #7:List W --> #1:List #2:Elt #3:List #4:Elt X --> #5:List Y --> #6:List Z --> #7:List Unifier 231 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt D --> #7:List #2:Elt #5:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt X --> #2:Elt #7:List Y --> #5:List Z --> #6:List Unifier 232 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #4:Elt D --> #2:Elt #5:List #4:Elt #6:List W --> #1:List #2:Elt #3:List #4:Elt X --> #2:Elt Y --> #5:List Z --> #6:List Unifier 233 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #6:List #2:Elt #7:List #4:Elt #8:List D --> #5:List W --> #1:List #2:Elt #3:List X --> #6:List Y --> #7:List Z --> #8:List #2:Elt #5:List Unifier 234 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #6:List #2:Elt #7:List #4:Elt D --> #5:List W --> #1:List #2:Elt #3:List X --> #6:List Y --> #7:List Z --> #2:Elt #5:List Unifier 235 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #5:List #2:Elt #7:List D --> #8:List #4:Elt #6:List W --> #1:List #2:Elt #3:List X --> #5:List Y --> #7:List #2:Elt #8:List Z --> #6:List Unifier 236 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #5:List #2:Elt #7:List D --> #4:Elt #6:List W --> #1:List #2:Elt #3:List X --> #5:List Y --> #7:List #2:Elt Z --> #6:List Unifier 237 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #5:List #2:Elt #6:List D --> #4:List W --> #1:List #2:Elt #3:List X --> #5:List Y --> #6:List Z --> #4:List Unifier 238 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #5:List #2:Elt D --> #7:List #4:Elt #6:List W --> #1:List #2:Elt #3:List X --> #5:List Y --> #2:Elt #7:List Z --> #6:List Unifier 239 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #5:List #2:Elt D --> #4:Elt #6:List W --> #1:List #2:Elt #3:List X --> #5:List Y --> #2:Elt Z --> #6:List Unifier 240 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #5:List D --> #8:List #2:Elt #6:List #4:Elt #7:List W --> #1:List #2:Elt #3:List X --> #5:List #2:Elt #8:List Y --> #6:List Z --> #7:List Unifier 241 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #5:List D --> #2:Elt #6:List #4:Elt #7:List W --> #1:List #2:Elt #3:List X --> #5:List #2:Elt Y --> #6:List Z --> #7:List Unifier 242 A --> #1:List E --> #2:Elt B --> #3:List F --> #4:Elt C --> #5:List D --> #6:List #4:Elt #7:List W --> #1:List #2:Elt #3:List X --> #5:List Y --> #6:List Z --> #7:List Unifier 243 A --> #1:List E --> #2:Elt B --> #3:Elt #6:List #2:Elt #7:List #3:Elt #8:List F --> #3:Elt C --> #4:List D --> #5:List W --> #1:List #2:Elt X --> #6:List Y --> #7:List Z --> #8:List #3:Elt #4:List #2:Elt #5:List Unifier 244 A --> #1:List E --> #2:Elt B --> #3:Elt #6:List #2:Elt #7:List #3:Elt F --> #3:Elt C --> #4:List D --> #5:List W --> #1:List #2:Elt X --> #6:List Y --> #7:List Z --> #3:Elt #4:List #2:Elt #5:List Unifier 245 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt #6:List F --> #3:Elt C --> #7:List #3:Elt #8:List D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #6:List #3:Elt #7:List Z --> #8:List #2:Elt #4:List Unifier 246 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt #6:List F --> #3:Elt C --> #7:List #3:Elt D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #6:List #3:Elt #7:List Z --> #2:Elt #4:List Unifier 247 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt #7:List F --> #3:Elt C --> #4:List D --> #8:List #3:Elt #6:List W --> #1:List #2:Elt X --> #5:List Y --> #7:List #3:Elt #4:List #2:Elt #8:List Z --> #6:List Unifier 248 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt #7:List F --> #3:Elt C --> #4:List D --> #3:Elt #6:List W --> #1:List #2:Elt X --> #5:List Y --> #7:List #3:Elt #4:List #2:Elt Z --> #6:List Unifier 249 A --> #1:List E --> #2:Elt B --> #2:Elt #5:List #2:Elt #6:List F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #6:List #2:Elt #3:List Z --> #4:List Unifier 250 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt #6:List F --> #3:Elt C --> #3:Elt #7:List D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #6:List #3:Elt Z --> #7:List #2:Elt #4:List Unifier 251 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt #6:List F --> #3:Elt C --> #3:Elt D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #6:List #3:Elt Z --> #2:Elt #4:List Unifier 252 A --> #1:List E --> #2:Elt B --> #3:Elt #6:List #2:Elt #7:List F --> #3:Elt C --> #4:List D --> #5:List W --> #1:List #2:Elt X --> #6:List Y --> #7:List Z --> #4:List #2:Elt #5:List Unifier 253 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt F --> #3:Elt C --> #6:List #3:Elt #7:List D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #3:Elt #6:List Z --> #7:List #2:Elt #4:List Unifier 254 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt F --> #3:Elt C --> #6:List #3:Elt D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #3:Elt #6:List Z --> #2:Elt #4:List Unifier 255 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt F --> #3:Elt C --> #4:List D --> #7:List #3:Elt #6:List W --> #1:List #2:Elt X --> #5:List Y --> #3:Elt #4:List #2:Elt #7:List Z --> #6:List Unifier 256 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt F --> #3:Elt C --> #4:List D --> #3:Elt #6:List W --> #1:List #2:Elt X --> #5:List Y --> #3:Elt #4:List #2:Elt Z --> #6:List Unifier 257 A --> #1:List E --> #2:Elt B --> #2:Elt #5:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #2:Elt #3:List Z --> #4:List Unifier 258 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt F --> #3:Elt C --> #3:Elt #6:List D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #3:Elt Z --> #6:List #2:Elt #4:List Unifier 259 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List #2:Elt F --> #3:Elt C --> #3:Elt D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #3:Elt Z --> #2:Elt #4:List Unifier 260 A --> #1:List E --> #2:Elt B --> #3:Elt #6:List F --> #3:Elt C --> #7:List #2:Elt #5:List #3:Elt #8:List D --> #4:List W --> #1:List #2:Elt X --> #6:List #3:Elt #7:List Y --> #5:List Z --> #8:List #2:Elt #4:List Unifier 261 A --> #1:List E --> #2:Elt B --> #3:Elt #6:List F --> #3:Elt C --> #7:List #2:Elt #5:List #3:Elt D --> #4:List W --> #1:List #2:Elt X --> #6:List #3:Elt #7:List Y --> #5:List Z --> #2:Elt #4:List Unifier 262 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List F --> #3:Elt C --> #6:List #2:Elt #7:List D --> #8:List #3:Elt #4:List W --> #1:List #2:Elt X --> #5:List #3:Elt #6:List Y --> #7:List #2:Elt #8:List Z --> #4:List Unifier 263 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List F --> #3:Elt C --> #6:List #2:Elt #7:List D --> #3:Elt #4:List W --> #1:List #2:Elt X --> #5:List #3:Elt #6:List Y --> #7:List #2:Elt Z --> #4:List Unifier 264 A --> #1:List E --> #2:Elt B --> #2:Elt #5:List F --> #2:Elt C --> #6:List #2:Elt #4:List D --> #3:List W --> #1:List #2:Elt X --> #5:List #2:Elt #6:List Y --> #4:List Z --> #3:List Unifier 265 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List F --> #3:Elt C --> #6:List #2:Elt D --> #7:List #3:Elt #4:List W --> #1:List #2:Elt X --> #5:List #3:Elt #6:List Y --> #2:Elt #7:List Z --> #4:List Unifier 266 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List F --> #3:Elt C --> #6:List #2:Elt D --> #3:Elt #4:List W --> #1:List #2:Elt X --> #5:List #3:Elt #6:List Y --> #2:Elt Z --> #4:List Unifier 267 A --> #1:List E --> #2:Elt B --> #3:Elt #7:List F --> #3:Elt C --> #4:List D --> #8:List #2:Elt #5:List #3:Elt #6:List W --> #1:List #2:Elt X --> #7:List #3:Elt #4:List #2:Elt #8:List Y --> #5:List Z --> #6:List Unifier 268 A --> #1:List E --> #2:Elt B --> #3:Elt #7:List F --> #3:Elt C --> #4:List D --> #2:Elt #5:List #3:Elt #6:List W --> #1:List #2:Elt X --> #7:List #3:Elt #4:List #2:Elt Y --> #5:List Z --> #6:List Unifier 269 A --> #1:List E --> #2:Elt B --> #3:Elt #7:List F --> #3:Elt C --> #4:List D --> #5:List #3:Elt #6:List W --> #1:List #2:Elt X --> #7:List #3:Elt #4:List Y --> #5:List Z --> #6:List Unifier 270 A --> #1:List E --> #2:Elt B --> #3:Elt #6:List F --> #3:Elt C --> #2:Elt #5:List #3:Elt #7:List D --> #4:List W --> #1:List #2:Elt X --> #6:List #3:Elt Y --> #5:List Z --> #7:List #2:Elt #4:List Unifier 271 A --> #1:List E --> #2:Elt B --> #3:Elt #6:List F --> #3:Elt C --> #2:Elt #5:List #3:Elt D --> #4:List W --> #1:List #2:Elt X --> #6:List #3:Elt Y --> #5:List Z --> #2:Elt #4:List Unifier 272 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List F --> #3:Elt C --> #2:Elt #6:List D --> #7:List #3:Elt #4:List W --> #1:List #2:Elt X --> #5:List #3:Elt Y --> #6:List #2:Elt #7:List Z --> #4:List Unifier 273 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List F --> #3:Elt C --> #2:Elt #6:List D --> #3:Elt #4:List W --> #1:List #2:Elt X --> #5:List #3:Elt Y --> #6:List #2:Elt Z --> #4:List Unifier 274 A --> #1:List E --> #2:Elt B --> #2:Elt #5:List F --> #2:Elt C --> #2:Elt #4:List D --> #3:List W --> #1:List #2:Elt X --> #5:List #2:Elt Y --> #4:List Z --> #3:List Unifier 275 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List F --> #3:Elt C --> #2:Elt D --> #6:List #3:Elt #4:List W --> #1:List #2:Elt X --> #5:List #3:Elt Y --> #2:Elt #6:List Z --> #4:List Unifier 276 A --> #1:List E --> #2:Elt B --> #3:Elt #5:List F --> #3:Elt C --> #2:Elt D --> #3:Elt #4:List W --> #1:List #2:Elt X --> #5:List #3:Elt Y --> #2:Elt Z --> #4:List Unifier 277 A --> #1:List E --> #2:Elt B --> #2:Elt #4:List F --> #2:Elt C --> #5:List #2:Elt #6:List D --> #3:List W --> #1:List #2:Elt X --> #4:List Y --> #5:List Z --> #6:List #2:Elt #3:List Unifier 278 A --> #1:List E --> #2:Elt B --> #2:Elt #4:List F --> #2:Elt C --> #5:List #2:Elt D --> #3:List W --> #1:List #2:Elt X --> #4:List Y --> #5:List Z --> #2:Elt #3:List Unifier 279 A --> #1:List E --> #2:Elt B --> #2:Elt #4:List F --> #2:Elt C --> #3:List D --> #6:List #2:Elt #5:List W --> #1:List #2:Elt X --> #4:List Y --> #3:List #2:Elt #6:List Z --> #5:List Unifier 280 A --> #1:List E --> #2:Elt B --> #2:Elt #4:List F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #1:List #2:Elt X --> #4:List Y --> #3:List #2:Elt Z --> #5:List Unifier 281 A --> #1:List E --> #2:Elt B --> #2:Elt #5:List F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List #2:Elt X --> #5:List Y --> #3:List Z --> #4:List Unifier 282 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #6:List #2:Elt #5:List #3:Elt #7:List D --> #4:List W --> #1:List #2:Elt X --> #3:Elt #6:List Y --> #5:List Z --> #7:List #2:Elt #4:List Unifier 283 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #6:List #2:Elt #5:List #3:Elt D --> #4:List W --> #1:List #2:Elt X --> #3:Elt #6:List Y --> #5:List Z --> #2:Elt #4:List Unifier 284 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #5:List #2:Elt #6:List D --> #7:List #3:Elt #4:List W --> #1:List #2:Elt X --> #3:Elt #5:List Y --> #6:List #2:Elt #7:List Z --> #4:List Unifier 285 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #5:List #2:Elt #6:List D --> #3:Elt #4:List W --> #1:List #2:Elt X --> #3:Elt #5:List Y --> #6:List #2:Elt Z --> #4:List Unifier 286 A --> #1:List E --> #2:Elt B --> #2:Elt F --> #2:Elt C --> #5:List #2:Elt #4:List D --> #3:List W --> #1:List #2:Elt X --> #2:Elt #5:List Y --> #4:List Z --> #3:List Unifier 287 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #5:List #2:Elt D --> #6:List #3:Elt #4:List W --> #1:List #2:Elt X --> #3:Elt #5:List Y --> #2:Elt #6:List Z --> #4:List Unifier 288 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #5:List #2:Elt D --> #3:Elt #4:List W --> #1:List #2:Elt X --> #3:Elt #5:List Y --> #2:Elt Z --> #4:List Unifier 289 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #4:List D --> #7:List #2:Elt #5:List #3:Elt #6:List W --> #1:List #2:Elt X --> #3:Elt #4:List #2:Elt #7:List Y --> #5:List Z --> #6:List Unifier 290 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #4:List D --> #2:Elt #5:List #3:Elt #6:List W --> #1:List #2:Elt X --> #3:Elt #4:List #2:Elt Y --> #5:List Z --> #6:List Unifier 291 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #4:List D --> #5:List #3:Elt #6:List W --> #1:List #2:Elt X --> #3:Elt #4:List Y --> #5:List Z --> #6:List Unifier 292 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #2:Elt #5:List #3:Elt #6:List D --> #4:List W --> #1:List #2:Elt X --> #3:Elt Y --> #5:List Z --> #6:List #2:Elt #4:List Unifier 293 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #2:Elt #5:List #3:Elt D --> #4:List W --> #1:List #2:Elt X --> #3:Elt Y --> #5:List Z --> #2:Elt #4:List Unifier 294 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #2:Elt #5:List D --> #6:List #3:Elt #4:List W --> #1:List #2:Elt X --> #3:Elt Y --> #5:List #2:Elt #6:List Z --> #4:List Unifier 295 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #2:Elt #5:List D --> #3:Elt #4:List W --> #1:List #2:Elt X --> #3:Elt Y --> #5:List #2:Elt Z --> #4:List Unifier 296 A --> #1:List E --> #2:Elt B --> #2:Elt F --> #2:Elt C --> #2:Elt #4:List D --> #3:List W --> #1:List #2:Elt X --> #2:Elt Y --> #4:List Z --> #3:List Unifier 297 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #2:Elt D --> #5:List #3:Elt #4:List W --> #1:List #2:Elt X --> #3:Elt Y --> #2:Elt #5:List Z --> #4:List Unifier 298 A --> #1:List E --> #2:Elt B --> #3:Elt F --> #3:Elt C --> #2:Elt D --> #3:Elt #4:List W --> #1:List #2:Elt X --> #3:Elt Y --> #2:Elt Z --> #4:List Unifier 299 A --> #1:List E --> #2:Elt B --> #5:List #2:Elt #6:List #2:Elt #7:List F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List X --> #5:List Y --> #6:List Z --> #7:List #2:Elt #3:List #2:Elt #4:List Unifier 300 A --> #1:List E --> #2:Elt B --> #5:List #2:Elt #6:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List X --> #5:List Y --> #6:List Z --> #2:Elt #3:List #2:Elt #4:List Unifier 301 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt #5:List F --> #2:Elt C --> #6:List #2:Elt #7:List D --> #3:List W --> #1:List X --> #4:List Y --> #5:List #2:Elt #6:List Z --> #7:List #2:Elt #3:List Unifier 302 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt #5:List F --> #2:Elt C --> #6:List #2:Elt D --> #3:List W --> #1:List X --> #4:List Y --> #5:List #2:Elt #6:List Z --> #2:Elt #3:List Unifier 303 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt #6:List F --> #2:Elt C --> #3:List D --> #7:List #2:Elt #5:List W --> #1:List X --> #4:List Y --> #6:List #2:Elt #3:List #2:Elt #7:List Z --> #5:List Unifier 304 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt #6:List F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #1:List X --> #4:List Y --> #6:List #2:Elt #3:List #2:Elt Z --> #5:List Unifier 305 A --> #1:List E --> #2:Elt B --> #5:List #2:Elt #6:List F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List X --> #5:List Y --> #6:List #2:Elt #3:List Z --> #4:List Unifier 306 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt #5:List F --> #2:Elt C --> #2:Elt #6:List D --> #3:List W --> #1:List X --> #4:List Y --> #5:List #2:Elt Z --> #6:List #2:Elt #3:List Unifier 307 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt #5:List F --> #2:Elt C --> #2:Elt D --> #3:List W --> #1:List X --> #4:List Y --> #5:List #2:Elt Z --> #2:Elt #3:List Unifier 308 A --> #1:List E --> #2:Elt B --> #5:List #2:Elt #6:List F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List X --> #5:List Y --> #6:List Z --> #3:List #2:Elt #4:List Unifier 309 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt F --> #2:Elt C --> #5:List #2:Elt #6:List D --> #3:List W --> #1:List X --> #4:List Y --> #2:Elt #5:List Z --> #6:List #2:Elt #3:List Unifier 310 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt F --> #2:Elt C --> #5:List #2:Elt D --> #3:List W --> #1:List X --> #4:List Y --> #2:Elt #5:List Z --> #2:Elt #3:List Unifier 311 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt F --> #2:Elt C --> #3:List D --> #6:List #2:Elt #5:List W --> #1:List X --> #4:List Y --> #2:Elt #3:List #2:Elt #6:List Z --> #5:List Unifier 312 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt F --> #2:Elt C --> #3:List D --> #2:Elt #5:List W --> #1:List X --> #4:List Y --> #2:Elt #3:List #2:Elt Z --> #5:List Unifier 313 A --> #1:List E --> #2:Elt B --> #5:List #2:Elt F --> #2:Elt C --> #3:List D --> #4:List W --> #1:List X --> #5:List Y --> #2:Elt #3:List Z --> #4:List Unifier 314 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt F --> #2:Elt C --> #2:Elt #5:List D --> #3:List W --> #1:List X --> #4:List Y --> #2:Elt Z --> #5:List #2:Elt #3:List Unifier 315 A --> #1:List E --> #2:Elt B --> #4:List #2:Elt F --> #2:Elt C --> #2:Elt D --> #3:List W --> #1:List X --> #4:List Y --> #2:Elt Z --> #2:Elt #3:List Unifier 316 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #6:List #2:Elt #5:List #2:Elt #7:List D --> #4:List W --> #1:List X --> #3:List #2:Elt #6:List Y --> #5:List Z --> #7:List #2:Elt #4:List Unifier 317 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #6:List #2:Elt #5:List #2:Elt D --> #4:List W --> #1:List X --> #3:List #2:Elt #6:List Y --> #5:List Z --> #2:Elt #4:List Unifier 318 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #5:List #2:Elt #6:List D --> #7:List #2:Elt #4:List W --> #1:List X --> #3:List #2:Elt #5:List Y --> #6:List #2:Elt #7:List Z --> #4:List Unifier 319 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #5:List #2:Elt #6:List D --> #2:Elt #4:List W --> #1:List X --> #3:List #2:Elt #5:List Y --> #6:List #2:Elt Z --> #4:List Unifier 320 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #6:List #2:Elt #5:List D --> #4:List W --> #1:List X --> #3:List #2:Elt #6:List Y --> #5:List Z --> #4:List Unifier 321 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #5:List #2:Elt D --> #6:List #2:Elt #4:List W --> #1:List X --> #3:List #2:Elt #5:List Y --> #2:Elt #6:List Z --> #4:List Unifier 322 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #5:List #2:Elt D --> #2:Elt #4:List W --> #1:List X --> #3:List #2:Elt #5:List Y --> #2:Elt Z --> #4:List Unifier 323 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #4:List D --> #7:List #2:Elt #5:List #2:Elt #6:List W --> #1:List X --> #3:List #2:Elt #4:List #2:Elt #7:List Y --> #5:List Z --> #6:List Unifier 324 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #4:List D --> #2:Elt #5:List #2:Elt #6:List W --> #1:List X --> #3:List #2:Elt #4:List #2:Elt Y --> #5:List Z --> #6:List Unifier 325 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #4:List D --> #5:List #2:Elt #6:List W --> #1:List X --> #3:List #2:Elt #4:List Y --> #5:List Z --> #6:List Unifier 326 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #2:Elt #5:List #2:Elt #6:List D --> #4:List W --> #1:List X --> #3:List #2:Elt Y --> #5:List Z --> #6:List #2:Elt #4:List Unifier 327 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #2:Elt #5:List #2:Elt D --> #4:List W --> #1:List X --> #3:List #2:Elt Y --> #5:List Z --> #2:Elt #4:List Unifier 328 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #2:Elt #5:List D --> #6:List #2:Elt #4:List W --> #1:List X --> #3:List #2:Elt Y --> #5:List #2:Elt #6:List Z --> #4:List Unifier 329 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #2:Elt #5:List D --> #2:Elt #4:List W --> #1:List X --> #3:List #2:Elt Y --> #5:List #2:Elt Z --> #4:List Unifier 330 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #2:Elt #5:List D --> #4:List W --> #1:List X --> #3:List #2:Elt Y --> #5:List Z --> #4:List Unifier 331 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #2:Elt D --> #5:List #2:Elt #4:List W --> #1:List X --> #3:List #2:Elt Y --> #2:Elt #5:List Z --> #4:List Unifier 332 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #2:Elt D --> #2:Elt #4:List W --> #1:List X --> #3:List #2:Elt Y --> #2:Elt Z --> #4:List Unifier 333 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #5:List #2:Elt #6:List D --> #4:List W --> #1:List X --> #3:List Y --> #5:List Z --> #6:List #2:Elt #4:List Unifier 334 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #5:List #2:Elt D --> #4:List W --> #1:List X --> #3:List Y --> #5:List Z --> #2:Elt #4:List Unifier 335 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #4:List D --> #6:List #2:Elt #5:List W --> #1:List X --> #3:List Y --> #4:List #2:Elt #6:List Z --> #5:List Unifier 336 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #4:List D --> #2:Elt #5:List W --> #1:List X --> #3:List Y --> #4:List #2:Elt Z --> #5:List Unifier 337 A --> #1:List E --> #2:Elt B --> #3:List F --> #2:Elt C --> #4:List D --> #5:List W --> #1:List X --> #3:List Y --> #4:List Z --> #5:List ========================================== unify in A-UNIF : A =? h(B, C) /\ X A Y =? U h(C, D) V E A W . Unifier 1 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #4:List h(#2:List, #5:List) #6:List #7:Elt h(#1:List, #2:List) #8:List Y --> #3:List U --> #4:List D --> #5:List V --> #6:List E --> #7:Elt W --> #8:List h(#1:List, #2:List) #3:List Unifier 2 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #4:List h(#2:List, #5:List) #6:List #7:Elt h(#1:List, #2:List) Y --> #3:List U --> #4:List D --> #5:List V --> #6:List E --> #7:Elt W --> h(#1:List, #2:List) #3:List Unifier 3 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #4:List h(#2:List, #5:List) #6:List #7:Elt Y --> #3:List U --> #4:List D --> #5:List V --> #6:List E --> #7:Elt W --> #3:List Unifier 4 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List h(#2:List, #4:List) #7:List Y --> #8:List #5:Elt h(#1:List, #2:List) #6:List U --> #3:List D --> #4:List V --> #7:List h(#1:List, #2:List) #8:List E --> #5:Elt W --> #6:List Unifier 5 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List h(#2:List, #4:List) #7:List Y --> #5:Elt h(#1:List, #2:List) #6:List U --> #3:List D --> #4:List V --> #7:List h(#1:List, #2:List) E --> #5:Elt W --> #6:List Unifier 6 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List h(#2:List, #4:List) Y --> #7:List #5:Elt h(#1:List, #2:List) #6:List U --> #3:List D --> #4:List V --> h(#1:List, #2:List) #7:List E --> #5:Elt W --> #6:List Unifier 7 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List h(#2:List, #4:List) Y --> #5:Elt h(#1:List, #2:List) #6:List U --> #3:List D --> #4:List V --> h(#1:List, #2:List) E --> #5:Elt W --> #6:List Unifier 8 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List Y --> #8:List h(#2:List, #4:List) #5:List #6:Elt h(#1:List, #2:List) #7:List U --> #3:List h(#1:List, #2:List) #8:List D --> #4:List V --> #5:List E --> #6:Elt W --> #7:List Unifier 9 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List Y --> h(#2:List, #4:List) #5:List #6:Elt h(#1:List, #2:List) #7:List U --> #3:List h(#1:List, #2:List) D --> #4:List V --> #5:List E --> #6:Elt W --> #7:List Unifier 10 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List Y --> #4:List #5:Elt h(#1:List, #2:List) #6:List U --> #3:List D --> #1:List V --> #4:List E --> #5:Elt W --> #6:List ========================================== unify in A-UNIF : X A Y =? U h(C, D) V E A W /\ A =? h(B, C) . Unifier 1 X --> #2:List h(#3:List, #4:List) #5:List #6:Elt h(#3:List, #7:List) #8:List A --> h(#3:List, #7:List) Y --> #1:List U --> #2:List C --> #3:List D --> #4:List V --> #5:List E --> #6:Elt W --> #8:List h(#3:List, #7:List) #1:List B --> #7:List Unifier 2 X --> #2:List h(#3:List, #4:List) #5:List #6:Elt h(#3:List, #7:List) A --> h(#3:List, #7:List) Y --> #1:List U --> #2:List C --> #3:List D --> #4:List V --> #5:List E --> #6:Elt W --> h(#3:List, #7:List) #1:List B --> #7:List Unifier 3 X --> #2:List h(#3:List, #4:List) #5:List #6:Elt A --> h(#3:List, #7:List) Y --> #1:List U --> #2:List C --> #3:List D --> #4:List V --> #5:List E --> #6:Elt W --> #1:List B --> #7:List Unifier 4 X --> #1:List h(#2:List, #3:List) #7:List A --> h(#2:List, #6:List) Y --> #8:List #4:Elt h(#2:List, #6:List) #5:List U --> #1:List C --> #2:List D --> #3:List V --> #7:List h(#2:List, #6:List) #8:List E --> #4:Elt W --> #5:List B --> #6:List Unifier 5 X --> #1:List h(#2:List, #3:List) #7:List A --> h(#2:List, #6:List) Y --> #4:Elt h(#2:List, #6:List) #5:List U --> #1:List C --> #2:List D --> #3:List V --> #7:List h(#2:List, #6:List) E --> #4:Elt W --> #5:List B --> #6:List Unifier 6 X --> #1:List h(#2:List, #3:List) A --> h(#2:List, #6:List) Y --> #7:List #4:Elt h(#2:List, #6:List) #5:List U --> #1:List C --> #2:List D --> #3:List V --> h(#2:List, #6:List) #7:List E --> #4:Elt W --> #5:List B --> #6:List Unifier 7 X --> #1:List h(#2:List, #3:List) A --> h(#2:List, #6:List) Y --> #4:Elt h(#2:List, #6:List) #5:List U --> #1:List C --> #2:List D --> #3:List V --> h(#2:List, #6:List) E --> #4:Elt W --> #5:List B --> #6:List Unifier 8 X --> #1:List A --> h(#2:List, #7:List) Y --> #8:List h(#2:List, #3:List) #4:List #5:Elt h(#2:List, #7:List) #6:List U --> #1:List h(#2:List, #7:List) #8:List C --> #2:List D --> #3:List V --> #4:List E --> #5:Elt W --> #6:List B --> #7:List Unifier 9 X --> #1:List A --> h(#2:List, #7:List) Y --> h(#2:List, #3:List) #4:List #5:Elt h(#2:List, #7:List) #6:List U --> #1:List h(#2:List, #7:List) C --> #2:List D --> #3:List V --> #4:List E --> #5:Elt W --> #6:List B --> #7:List Unifier 10 X --> #1:List A --> h(#2:List, #6:List) Y --> #3:List #4:Elt h(#2:List, #6:List) #5:List U --> #1:List C --> #2:List D --> #6:List V --> #3:List E --> #4:Elt W --> #5:List B --> #6:List ========================================== unify in A-UNIF : A =? h(B, C) /\ X A Y =? U h(C, D) V E A W . Unifier 1 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #4:List h(#2:List, #5:List) #6:List #7:Elt h(#1:List, #2:List) #8:List Y --> #3:List U --> #4:List D --> #5:List V --> #6:List E --> #7:Elt W --> #8:List h(#1:List, #2:List) #3:List Unifier 2 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #4:List h(#2:List, #5:List) #6:List #7:Elt h(#1:List, #2:List) Y --> #3:List U --> #4:List D --> #5:List V --> #6:List E --> #7:Elt W --> h(#1:List, #2:List) #3:List Unifier 3 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #4:List h(#2:List, #5:List) #6:List #7:Elt Y --> #3:List U --> #4:List D --> #5:List V --> #6:List E --> #7:Elt W --> #3:List Unifier 4 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List h(#2:List, #4:List) #7:List Y --> #8:List #5:Elt h(#1:List, #2:List) #6:List U --> #3:List D --> #4:List V --> #7:List h(#1:List, #2:List) #8:List E --> #5:Elt W --> #6:List Unifier 5 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List h(#2:List, #4:List) #7:List Y --> #5:Elt h(#1:List, #2:List) #6:List U --> #3:List D --> #4:List V --> #7:List h(#1:List, #2:List) E --> #5:Elt W --> #6:List Unifier 6 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List h(#2:List, #4:List) Y --> #7:List #5:Elt h(#1:List, #2:List) #6:List U --> #3:List D --> #4:List V --> h(#1:List, #2:List) #7:List E --> #5:Elt W --> #6:List Unifier 7 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List h(#2:List, #4:List) Y --> #5:Elt h(#1:List, #2:List) #6:List U --> #3:List D --> #4:List V --> h(#1:List, #2:List) E --> #5:Elt W --> #6:List Unifier 8 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List Y --> #8:List h(#2:List, #4:List) #5:List #6:Elt h(#1:List, #2:List) #7:List U --> #3:List h(#1:List, #2:List) #8:List D --> #4:List V --> #5:List E --> #6:Elt W --> #7:List Unifier 9 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List Y --> h(#2:List, #4:List) #5:List #6:Elt h(#1:List, #2:List) #7:List U --> #3:List h(#1:List, #2:List) D --> #4:List V --> #5:List E --> #6:Elt W --> #7:List Unifier 10 A --> h(#1:List, #2:List) B --> #1:List C --> #2:List X --> #3:List Y --> #4:List #5:Elt h(#1:List, #2:List) #6:List U --> #3:List D --> #1:List V --> #4:List E --> #5:Elt W --> #6:List ========================================== unify in A-UNIF : j(A, f(B, E, C), f(D, E, j(G, H), I)) =? j(U, f(V, W), f(X, j(Y, Z), S)) . Unifier 1 A --> j(f(#6:List, #7:List), f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 2 A --> j(f(#6:List, #7:List), f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 3 A --> j(f(#6:List, #7:List), f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 4 A --> j(f(#6:List, #7:List), f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 5 A --> j(f(#7:List, #8:List), f(#9:List, 1, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> #10:List Unifier 6 A --> j(f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> #11:List Unifier 7 A --> j(f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> #11:List Unifier 8 A --> j(f(#7:List, #8:List), f(#9:List, j(#10:List, #11:List), #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> #12:List Unifier 9 A --> j(f(#7:List, #8:List), f(#9:List, 1, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> #10:List Unifier 10 A --> j(f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> #11:List Unifier 11 A --> j(f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> #11:List Unifier 12 A --> j(f(#7:List, #8:List), f(#9:List, j(#10:List, #11:List), #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> #12:List Unifier 13 A --> j(f(#8:List, #9:List), f(#10:List, 1, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> 1 Y --> 1 S --> #11:List Unifier 14 A --> j(f(#8:List, #9:List), f(#10:List, #11:List, #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> #11:List Y --> 1 S --> #12:List Unifier 15 A --> j(f(#8:List, #9:List), f(#10:List, #11:List, #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> 1 Y --> #11:List S --> #12:List Unifier 16 A --> j(f(#8:List, #9:List), f(#10:List, j(#11:List, #12:List), #13:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> #11:List Y --> #12:List S --> #13:List Unifier 17 A --> j(f(#6:List, #7:List), f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 18 A --> j(f(#6:List, #7:List), f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 19 A --> j(f(#6:List, #7:List), f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 20 A --> j(f(#6:List, #7:List), f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 21 A --> j(f(#7:List, #8:List), f(#9:List, 1, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> #10:List Unifier 22 A --> j(f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> #11:List Unifier 23 A --> j(f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> #11:List Unifier 24 A --> j(f(#7:List, #8:List), f(#9:List, j(#10:List, #11:List), #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> #12:List Unifier 25 A --> j(f(#7:List, #8:List), f(#9:List, 1, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> #10:List Unifier 26 A --> j(f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> #11:List Unifier 27 A --> j(f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> #11:List Unifier 28 A --> j(f(#7:List, #8:List), f(#9:List, j(#10:List, #11:List), #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> #12:List Unifier 29 A --> j(f(#8:List, #9:List), f(#10:List, 1, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> 1 Y --> 1 S --> #11:List Unifier 30 A --> j(f(#8:List, #9:List), f(#10:List, #11:List, #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> #11:List Y --> 1 S --> #12:List Unifier 31 A --> j(f(#8:List, #9:List), f(#10:List, #11:List, #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> 1 Y --> #11:List S --> #12:List Unifier 32 A --> j(f(#8:List, #9:List), f(#10:List, j(#11:List, #12:List), #13:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> #11:List Y --> #12:List S --> #13:List Unifier 33 A --> j(#10:List, f(#6:List, #7:List), f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 34 A --> j(#11:List, f(#6:List, #7:List), f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 35 A --> j(#11:List, f(#6:List, #7:List), f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 36 A --> j(#12:List, f(#6:List, #7:List), f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 37 A --> j(#11:List, f(#7:List, #8:List), f(#9:List, 1, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> #10:List Unifier 38 A --> j(#12:List, f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> #11:List Unifier 39 A --> j(#12:List, f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> #11:List Unifier 40 A --> j(#13:List, f(#7:List, #8:List), f(#9:List, j(#10:List, #11:List), #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#13:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> #12:List Unifier 41 A --> j(#11:List, f(#7:List, #8:List), f(#9:List, 1, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> #10:List Unifier 42 A --> j(#12:List, f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> #11:List Unifier 43 A --> j(#12:List, f(#7:List, #8:List), f(#9:List, #10:List, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> #11:List Unifier 44 A --> j(#13:List, f(#7:List, #8:List), f(#9:List, j(#10:List, #11:List), #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#13:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> #12:List Unifier 45 A --> j(#12:List, f(#8:List, #9:List), f(#10:List, 1, #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> 1 Y --> 1 S --> #11:List Unifier 46 A --> j(#13:List, f(#8:List, #9:List), f(#10:List, #11:List, #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#13:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> #11:List Y --> 1 S --> #12:List Unifier 47 A --> j(#13:List, f(#8:List, #9:List), f(#10:List, #11:List, #12:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#13:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> 1 Y --> #11:List S --> #12:List Unifier 48 A --> j(#14:List, f(#8:List, #9:List), f(#10:List, j(#11:List, #12:List), #13:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#14:List, f(#1:List, #2:Elt, #3:List), f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #10:List Z --> #11:List Y --> #12:List S --> #13:List Unifier 49 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 50 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 51 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 52 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 53 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 54 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 55 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 56 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 57 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 58 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 59 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 60 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 61 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 62 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 63 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 64 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> f(#12:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> f(#1:List, #2:Elt, #12:List) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 65 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 66 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 67 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 68 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 69 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 70 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 71 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 72 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 73 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 74 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 75 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 76 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 77 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 78 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 79 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 80 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 81 A --> f(#6:List, 1, #7:List) B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 82 A --> f(#6:List, #7:List, #8:List) B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 83 A --> f(#6:List, #7:List, #8:List) B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 84 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 85 A --> f(#7:List, 1, #8:List) B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 86 A --> f(#7:List, #8:List, #9:List) B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 87 A --> f(#7:List, #8:List, #9:List) B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 88 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 89 A --> f(#7:List, 1, #8:List) B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 90 A --> f(#7:List, #8:List, #9:List) B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 91 A --> f(#7:List, #8:List, #9:List) B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 92 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 93 A --> f(#8:List, 1, #9:List) B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 94 A --> f(#8:List, #9:List, #10:List) B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 95 A --> f(#8:List, #9:List, #10:List) B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 96 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> f(#7:List, #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> f(#12:List, #1:Elt, #2:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 97 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 98 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 99 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 100 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 101 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 102 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 103 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 104 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 105 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 106 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 107 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 108 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 109 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 110 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 111 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 112 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 113 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 114 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 115 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 116 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 117 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 118 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 119 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 120 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 121 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 122 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 123 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 124 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 125 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 126 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 127 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 128 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> f(#12:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> f(#1:List, #2:Elt, #12:List) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 129 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#3:List, #2:Elt, 1, #4:List)) V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 130 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #2:Elt, 1, #4:List)) V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 131 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #2:Elt, 1, #4:List)) V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 132 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#10:List, f(#3:List, #2:Elt, 1, #4:List)) V --> f(#1:List, #2:Elt, #11:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 133 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 134 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 135 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 136 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> f(#12:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#11:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> f(#1:List, #2:Elt, #12:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 137 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 138 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 139 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 140 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> f(#12:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#11:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> f(#1:List, #2:Elt, #12:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 141 A --> j(#10:List, f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 142 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> f(#12:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> f(#1:List, #2:Elt, #12:List) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 143 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> f(#12:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> f(#1:List, #2:Elt, #12:List) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 144 A --> j(#12:List, f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> f(#13:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#12:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> f(#1:List, #2:Elt, #13:List) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 145 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 146 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 147 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 148 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 149 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 150 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 151 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 152 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 153 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 154 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 155 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 156 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 157 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 158 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 159 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 160 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 161 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#4:List, #2:Elt, 1, #5:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 162 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#9:List, f(#4:List, #2:Elt, 1, #5:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 163 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#9:List, f(#4:List, #2:Elt, 1, #5:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 164 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#10:List, f(#4:List, #2:Elt, 1, #5:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 165 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 166 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#10:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 167 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#10:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 168 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#11:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 169 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 170 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#10:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 171 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#10:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 172 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#11:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 173 A --> j(#10:List, f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 174 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#11:List, f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 175 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#11:List, f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 176 A --> j(#12:List, f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#12:List, f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 177 A --> f(#6:List, 1, #7:List) B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 178 A --> f(#6:List, #7:List, #8:List) B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 179 A --> f(#6:List, #7:List, #8:List) B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 180 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 181 A --> f(#7:List, 1, #8:List) B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 182 A --> f(#7:List, #8:List, #9:List) B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 183 A --> f(#7:List, #8:List, #9:List) B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 184 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 185 A --> f(#7:List, 1, #8:List) B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 186 A --> f(#7:List, #8:List, #9:List) B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 187 A --> f(#7:List, #8:List, #9:List) B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 188 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 189 A --> f(#8:List, 1, #9:List) B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 190 A --> f(#8:List, #9:List, #10:List) B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 191 A --> f(#8:List, #9:List, #10:List) B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 192 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> f(#7:List, #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> f(#12:List, #1:Elt, #2:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 193 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 194 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 195 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 196 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> f(#5:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#10:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> f(#11:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 197 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 198 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 199 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 200 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> f(#6:List, #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#11:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> f(#12:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 201 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 202 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 203 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 204 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> f(#6:List, #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#11:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> f(#12:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 205 A --> j(#10:List, f(#8:List, 1, #9:List)) B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 206 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> f(#7:List, #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> f(#12:List, #1:Elt, #2:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 207 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> f(#7:List, #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> f(#12:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 208 A --> j(#12:List, f(#8:List, j(#9:List, #10:List), #11:List)) B --> f(#7:List, #13:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#12:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> f(#13:List, #1:Elt, #2:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 209 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 210 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 211 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 212 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 213 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 214 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 215 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 216 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 217 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 218 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 219 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 220 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 221 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 222 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 223 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 224 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 225 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#4:List, #2:Elt, 1, #5:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 226 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#9:List, f(#4:List, #2:Elt, 1, #5:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 227 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#9:List, f(#4:List, #2:Elt, 1, #5:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 228 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#10:List, f(#4:List, #2:Elt, 1, #5:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 229 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 230 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#10:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 231 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#10:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 232 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#11:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 233 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 234 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#10:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 235 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#10:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 236 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#11:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 237 A --> j(#10:List, f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 238 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#11:List, f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 239 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#11:List, f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 240 A --> j(#12:List, f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#12:List, f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 241 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #5:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 242 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #5:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 243 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #5:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1, #9:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 244 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#10:List, #5:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1, #10:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 245 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 246 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 247 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 248 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#11:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 249 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 250 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 251 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 252 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#11:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 253 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #10:List) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 254 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 255 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 256 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#12:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #12:List) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 257 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #8:List) W --> f(#9:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 258 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #10:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #9:List) W --> f(#10:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 259 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #10:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #9:List) W --> f(#10:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 260 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, #11:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #10:List) W --> f(#11:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 261 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #8:List) W --> f(#9:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 262 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #10:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #9:List) W --> f(#10:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 263 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #10:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #9:List) W --> f(#10:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 264 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, #11:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #10:List) W --> f(#11:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 265 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 266 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 267 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 268 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 269 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 270 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 271 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 272 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 273 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 274 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 275 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 276 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 277 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 278 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 279 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 280 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 281 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 282 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 283 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 284 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 285 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 286 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 287 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 288 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 289 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 290 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 291 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 292 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 293 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 294 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 295 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 296 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 297 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> f(#8:List, #2:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 298 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> f(#9:List, #2:Elt, 1, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 299 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> f(#9:List, #2:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 300 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #10:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> f(#10:List, #2:Elt, 1, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 301 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#9:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 302 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#10:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 303 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#10:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 304 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #11:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#11:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 305 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#9:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 306 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#10:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 307 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#10:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 308 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #11:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#11:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 309 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> f(#10:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 310 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 311 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 312 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #12:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> f(#12:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 313 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 314 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 315 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 316 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 317 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 318 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 319 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 320 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 321 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 322 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 323 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 324 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 325 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 326 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 327 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 328 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 329 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #5:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 330 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #5:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 331 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #5:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1, #9:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 332 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#10:List, #5:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1, #10:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 333 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 334 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 335 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 336 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#11:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 337 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 338 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 339 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 340 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#11:List, #6:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 341 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #10:List) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 342 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 343 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 344 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#12:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #12:List) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 345 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #5:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, 1, #9:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 346 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#10:List, #5:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, 1, #10:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 347 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#10:List, #5:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, 1, #10:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 348 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#11:List, #5:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, 1, #11:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 349 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #6:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 350 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#11:List, #6:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 351 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#11:List, #6:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List, #11:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 352 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#12:List, #6:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List, #12:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 353 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #6:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 354 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#11:List, #6:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 355 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#11:List, #6:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List, #11:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 356 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#12:List, #6:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List, #12:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 357 A --> j(#10:List, f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #7:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 358 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#12:List, #7:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #12:List) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 359 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#12:List, #7:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #12:List) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 360 A --> j(#12:List, f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#13:List, #7:List) U --> j(#12:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #13:List) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 361 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #8:List) W --> f(#9:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 362 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #10:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #9:List) W --> f(#10:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 363 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #10:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #9:List) W --> f(#10:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 364 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, #11:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #10:List) W --> f(#11:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 365 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #10:List) G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #9:List) W --> f(#10:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 366 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, #11:List) G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #10:List) W --> f(#11:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 367 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, #11:List) G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #10:List) W --> f(#11:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 368 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#11:List, #12:List) G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #11:List) W --> f(#12:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 369 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #8:List) W --> f(#9:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 370 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #10:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #9:List) W --> f(#10:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 371 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #10:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #9:List) W --> f(#10:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 372 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, #11:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #10:List) W --> f(#11:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 373 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #10:List) I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #9:List) W --> f(#10:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 374 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, #11:List) I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #10:List) W --> f(#11:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 375 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, #11:List) I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #10:List) W --> f(#11:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 376 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#11:List, #12:List) I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #11:List) W --> f(#12:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 377 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 378 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 379 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 380 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 381 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 382 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 383 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 384 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 385 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 386 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 387 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 388 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 389 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 390 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 391 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 392 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 393 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 394 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 395 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 396 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 397 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 398 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 399 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 400 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 401 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 402 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 403 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 404 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 405 A --> j(#10:List, f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 406 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 407 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 408 A --> j(#12:List, f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 409 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 410 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 411 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 412 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 413 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 414 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 415 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 416 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 417 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 418 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 419 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 420 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 421 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 422 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 423 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 424 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 425 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 426 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 427 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 428 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 429 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 430 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 431 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 432 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 433 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 434 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 435 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 436 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 437 A --> j(#10:List, f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 438 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 439 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 440 A --> j(#12:List, f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List)) V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 441 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> f(#8:List, #2:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 442 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> f(#9:List, #2:Elt, 1, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 443 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> f(#9:List, #2:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 444 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #10:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> f(#10:List, #2:Elt, 1, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 445 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#9:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 446 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#10:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 447 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#10:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 448 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #11:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#11:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 449 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#9:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 450 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#10:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 451 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#10:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 452 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #11:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> f(#11:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 453 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> f(#10:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 454 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 455 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 456 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #12:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> f(#12:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 457 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> f(#9:List, #2:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 458 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #10:List) H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> f(#10:List, #2:Elt, 1, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 459 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #10:List) H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> f(#10:List, #2:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 460 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #11:List) H --> 1 G --> 1 I --> #4:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> f(#11:List, #2:Elt, 1, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 461 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> f(#10:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 462 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #11:List) H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> f(#11:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 463 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #11:List) H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> f(#11:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 464 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #12:List) H --> #4:List G --> 1 I --> #5:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> f(#12:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 465 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> f(#10:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 466 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #11:List) H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> f(#11:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 467 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #11:List) H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> f(#11:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 468 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #12:List) H --> 1 G --> #4:List I --> #5:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> f(#12:List, #2:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 469 A --> j(#10:List, f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 470 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #12:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> f(#12:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 471 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #12:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> f(#12:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 472 A --> j(#12:List, f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #13:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> f(#13:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 473 A --> f(#6:List, 1, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 474 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 475 A --> f(#6:List, #7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 476 A --> f(#6:List, j(#7:List, #8:List), #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 477 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 478 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 479 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 480 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 481 A --> f(#7:List, 1, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 482 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 483 A --> f(#7:List, #8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 484 A --> f(#7:List, j(#8:List, #9:List), #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 485 A --> f(#8:List, 1, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 486 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 487 A --> f(#8:List, #9:List, #10:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 488 A --> f(#8:List, j(#9:List, #10:List), #11:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 489 A --> j(#8:List, f(#6:List, 1, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> #7:List Unifier 490 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> #8:List Unifier 491 A --> j(#9:List, f(#6:List, #7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> #8:List Unifier 492 A --> j(#10:List, f(#6:List, j(#7:List, #8:List), #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> #9:List Unifier 493 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 494 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 495 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 496 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 497 A --> j(#9:List, f(#7:List, 1, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> 1 S --> #8:List Unifier 498 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> #9:List Unifier 499 A --> j(#10:List, f(#7:List, #8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> #9:List Unifier 500 A --> j(#11:List, f(#7:List, j(#8:List, #9:List), #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> #10:List Unifier 501 A --> j(#10:List, f(#8:List, 1, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> 1 S --> #9:List Unifier 502 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> 1 S --> #10:List Unifier 503 A --> j(#11:List, f(#8:List, #9:List, #10:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> 1 Y --> #9:List S --> #10:List Unifier 504 A --> j(#12:List, f(#8:List, j(#9:List, #10:List), #11:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #8:List Z --> #9:List Y --> #10:List S --> #11:List Unifier 505 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 506 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 507 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 508 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 509 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 510 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 511 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 512 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#11:List, j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 513 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 514 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 515 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 516 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#11:List, j(#8:List, #9:List), #10:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 517 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#10:List, 1, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> 1 S --> #9:List Unifier 518 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #11:List) Z --> #9:List Y --> 1 S --> #10:List Unifier 519 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #11:List) Z --> 1 Y --> #9:List S --> #10:List Unifier 520 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#12:List, j(#9:List, #10:List), #11:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #12:List) Z --> #9:List Y --> #10:List S --> #11:List Unifier 521 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 522 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 523 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 524 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 525 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 526 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 527 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 528 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 529 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 530 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 531 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 532 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 533 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(1, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #9:List Unifier 534 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> #9:List Y --> 1 S --> #10:List Unifier 535 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #9:List S --> #10:List Unifier 536 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(j(#9:List, #10:List), #11:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> #9:List Y --> #10:List S --> #11:List Unifier 537 A --> f(#4:List, #5:List) B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> f(#2:List, #1:Elt, 1, #3:List) V --> #4:List W --> #5:List X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 538 A --> f(#5:List, #6:List) B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> f(#2:List, #1:Elt, #3:List, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #8:List Unifier 539 A --> f(#5:List, #6:List) B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> f(#2:List, #1:Elt, #3:List, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #8:List Unifier 540 A --> f(#6:List, #7:List) B --> f(#8:List, #10:List) E --> #1:Elt C --> f(#11:List, #9:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> f(#2:List, #1:Elt, j(#3:List, #4:List), #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#10:List, #1:Elt, #11:List) Y --> 1 S --> #9:List Unifier 541 A --> f(#4:List, #5:List) B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> f(#2:List, #1:Elt, 1, #3:List) V --> #4:List W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 542 A --> f(#5:List, #6:List) B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> f(#2:List, #1:Elt, #3:List, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #8:List Unifier 543 A --> f(#5:List, #6:List) B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> f(#2:List, #1:Elt, #3:List, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #8:List Unifier 544 A --> f(#6:List, #7:List) B --> f(#8:List, #10:List) E --> #1:Elt C --> f(#11:List, #9:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> f(#2:List, #1:Elt, j(#3:List, #4:List), #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #1:Elt, #11:List) S --> #9:List Unifier 545 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 546 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 547 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 548 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> f(#10:List, #1:Elt) Y --> 1 S --> #2:List Unifier 549 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 550 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 551 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 552 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> f(#10:List, #1:Elt) S --> #2:List Unifier 553 A --> f(#5:List, #6:List) B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 554 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 555 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 556 A --> f(#5:List, #6:List) B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 557 A --> f(#6:List, #7:List) B --> f(#8:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 558 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 559 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 560 A --> f(#6:List, #7:List) B --> f(#8:List, j(#9:List, #10:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #1:Elt, #2:List) Unifier 561 A --> f(#6:List, #7:List) B --> f(#8:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 562 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 563 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 564 A --> f(#6:List, #7:List) B --> f(#8:List, j(#9:List, #10:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #1:Elt, #2:List) Unifier 565 A --> f(#7:List, #8:List) B --> f(#9:List, 1, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 566 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#11:List, #1:Elt, #2:List) Unifier 567 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#11:List, #1:Elt, #2:List) Unifier 568 A --> f(#7:List, #8:List) B --> f(#9:List, j(#10:List, #11:List), #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#12:List, #1:Elt, #2:List) Unifier 569 A --> f(#5:List, #6:List) B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 570 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 571 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 572 A --> f(#5:List, #6:List) B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 573 A --> f(#6:List, #7:List) B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 574 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 575 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 576 A --> f(#6:List, #7:List) B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 577 A --> f(#6:List, #7:List) B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 578 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 579 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 580 A --> f(#6:List, #7:List) B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 581 A --> f(#7:List, #8:List) B --> f(#9:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 582 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 583 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 584 A --> f(#7:List, #8:List) B --> f(#9:List, j(#10:List, #11:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#1:Elt, #2:List) Unifier 585 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 586 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #8:List Unifier 587 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #8:List Unifier 588 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> f(#2:Elt, #10:List) Y --> 1 S --> #9:List Unifier 589 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 590 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #8:List Unifier 591 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #8:List Unifier 592 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #10:List) S --> #9:List Unifier 593 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 594 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 595 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 596 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #8:List W --> #9:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 597 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 598 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 599 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 600 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #8:List W --> #9:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 601 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 602 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 603 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 604 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 605 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 606 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 607 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 608 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#11:List, j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 609 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 610 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 611 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 612 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#11:List, j(#8:List, #9:List), #10:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 613 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#10:List, 1, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> 1 S --> #9:List Unifier 614 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #11:List) Z --> #9:List Y --> 1 S --> #10:List Unifier 615 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#11:List, #9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #11:List) Z --> 1 Y --> #9:List S --> #10:List Unifier 616 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#12:List, j(#9:List, #10:List), #11:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #12:List) Z --> #9:List Y --> #10:List S --> #11:List Unifier 617 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#3:List, #2:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #7:List Unifier 618 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #2:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 619 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #2:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 620 A --> j(#10:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#10:List, f(#3:List, #2:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt, #11:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 621 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, 1, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> 1 S --> #8:List Unifier 622 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 623 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #11:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 624 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#12:List, j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#11:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #12:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 625 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, 1, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> 1 S --> #8:List Unifier 626 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 627 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #11:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 628 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#12:List, j(#8:List, #9:List), #10:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#11:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt, #12:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 629 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, 1, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #11:List) Z --> 1 Y --> 1 S --> #9:List Unifier 630 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(#12:List, #9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #12:List) Z --> #9:List Y --> 1 S --> #10:List Unifier 631 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(#12:List, #9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #12:List) Z --> 1 Y --> #9:List S --> #10:List Unifier 632 A --> j(#12:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(#13:List, j(#9:List, #10:List), #11:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#12:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt, #13:List) Z --> #9:List Y --> #10:List S --> #11:List Unifier 633 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 634 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 635 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 636 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 637 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 638 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 639 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 640 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 641 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 642 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 643 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 644 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 645 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(1, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #9:List Unifier 646 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> #9:List Y --> 1 S --> #10:List Unifier 647 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #9:List S --> #10:List Unifier 648 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(j(#9:List, #10:List), #11:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> #9:List Y --> #10:List S --> #11:List Unifier 649 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#3:List, #2:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 650 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #2:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 651 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #2:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 652 A --> j(#10:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#10:List, f(#3:List, #2:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 653 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 654 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 655 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 656 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#11:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 657 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 658 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 659 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 660 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#11:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 661 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(1, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #9:List Unifier 662 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(#9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> #9:List Y --> 1 S --> #10:List Unifier 663 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(#9:List, #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #9:List S --> #10:List Unifier 664 A --> j(#12:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(j(#9:List, #10:List), #11:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#12:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> f(#1:List, #2:Elt) Z --> #9:List Y --> #10:List S --> #11:List Unifier 665 A --> f(#4:List, #5:List) B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> f(#2:List, #1:Elt, 1, #3:List) V --> #4:List W --> #5:List X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 666 A --> f(#5:List, #6:List) B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> f(#2:List, #1:Elt, #3:List, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #8:List Unifier 667 A --> f(#5:List, #6:List) B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> f(#2:List, #1:Elt, #3:List, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #8:List Unifier 668 A --> f(#6:List, #7:List) B --> f(#8:List, #10:List) E --> #1:Elt C --> f(#11:List, #9:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> f(#2:List, #1:Elt, j(#3:List, #4:List), #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#10:List, #1:Elt, #11:List) Y --> 1 S --> #9:List Unifier 669 A --> j(#8:List, f(#4:List, #5:List)) B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> j(#8:List, f(#2:List, #1:Elt, 1, #3:List)) V --> #4:List W --> #5:List X --> #6:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #7:List Unifier 670 A --> j(#9:List, f(#5:List, #6:List)) B --> f(#7:List, #10:List) E --> #1:Elt C --> f(#11:List, #8:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> j(#9:List, f(#2:List, #1:Elt, #3:List, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> f(#10:List, #1:Elt, #11:List) Y --> 1 S --> #8:List Unifier 671 A --> j(#9:List, f(#5:List, #6:List)) B --> f(#7:List, #10:List) E --> #1:Elt C --> f(#11:List, #8:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> j(#9:List, f(#2:List, #1:Elt, #3:List, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> f(#10:List, #1:Elt, #11:List) Y --> 1 S --> #8:List Unifier 672 A --> j(#10:List, f(#6:List, #7:List)) B --> f(#8:List, #11:List) E --> #1:Elt C --> f(#12:List, #9:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> j(#10:List, f(#2:List, #1:Elt, j(#3:List, #4:List), #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> f(#11:List, #1:Elt, #12:List) Y --> 1 S --> #9:List Unifier 673 A --> f(#4:List, #5:List) B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> f(#2:List, #1:Elt, 1, #3:List) V --> #4:List W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 674 A --> f(#5:List, #6:List) B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> f(#2:List, #1:Elt, #3:List, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #8:List Unifier 675 A --> f(#5:List, #6:List) B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> f(#2:List, #1:Elt, #3:List, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #8:List Unifier 676 A --> f(#6:List, #7:List) B --> f(#8:List, #10:List) E --> #1:Elt C --> f(#11:List, #9:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> f(#2:List, #1:Elt, j(#3:List, #4:List), #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #1:Elt, #11:List) S --> #9:List Unifier 677 A --> j(#8:List, f(#4:List, #5:List)) B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> j(#8:List, f(#2:List, #1:Elt, 1, #3:List)) V --> #4:List W --> #5:List X --> #6:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #7:List Unifier 678 A --> j(#9:List, f(#5:List, #6:List)) B --> f(#7:List, #10:List) E --> #1:Elt C --> f(#11:List, #8:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> j(#9:List, f(#2:List, #1:Elt, #3:List, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#10:List, #1:Elt, #11:List) S --> #8:List Unifier 679 A --> j(#9:List, f(#5:List, #6:List)) B --> f(#7:List, #10:List) E --> #1:Elt C --> f(#11:List, #8:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> j(#9:List, f(#2:List, #1:Elt, #3:List, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#10:List, #1:Elt, #11:List) S --> #8:List Unifier 680 A --> j(#10:List, f(#6:List, #7:List)) B --> f(#8:List, #11:List) E --> #1:Elt C --> f(#12:List, #9:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> j(#10:List, f(#2:List, #1:Elt, j(#3:List, #4:List), #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#11:List, #1:Elt, #12:List) S --> #9:List Unifier 681 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 682 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 683 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 684 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> f(#10:List, #1:Elt) Y --> 1 S --> #2:List Unifier 685 A --> j(#8:List, f(#5:List, #6:List)) B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 686 A --> j(#9:List, f(#6:List, #7:List)) B --> f(#8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> f(#10:List, #1:Elt) Y --> 1 S --> #2:List Unifier 687 A --> j(#9:List, f(#6:List, #7:List)) B --> f(#8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> f(#10:List, #1:Elt) Y --> 1 S --> #2:List Unifier 688 A --> j(#10:List, f(#7:List, #8:List)) B --> f(#9:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> f(#11:List, #1:Elt) Y --> 1 S --> #2:List Unifier 689 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 690 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 691 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 692 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> f(#10:List, #1:Elt) S --> #2:List Unifier 693 A --> j(#8:List, f(#5:List, #6:List)) B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 694 A --> j(#9:List, f(#6:List, #7:List)) B --> f(#8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #1:Elt) S --> #2:List Unifier 695 A --> j(#9:List, f(#6:List, #7:List)) B --> f(#8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #1:Elt) S --> #2:List Unifier 696 A --> j(#10:List, f(#7:List, #8:List)) B --> f(#9:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> f(#11:List, #1:Elt) S --> #2:List Unifier 697 A --> f(#5:List, #6:List) B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 698 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 699 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 700 A --> f(#5:List, #6:List) B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 701 A --> f(#6:List, #7:List) B --> f(#8:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 702 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 703 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 704 A --> f(#6:List, #7:List) B --> f(#8:List, j(#9:List, #10:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #1:Elt, #2:List) Unifier 705 A --> f(#6:List, #7:List) B --> f(#8:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 706 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 707 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 708 A --> f(#6:List, #7:List) B --> f(#8:List, j(#9:List, #10:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #1:Elt, #2:List) Unifier 709 A --> f(#7:List, #8:List) B --> f(#9:List, 1, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 710 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#11:List, #1:Elt, #2:List) Unifier 711 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#11:List, #1:Elt, #2:List) Unifier 712 A --> f(#7:List, #8:List) B --> f(#9:List, j(#10:List, #11:List), #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#12:List, #1:Elt, #2:List) Unifier 713 A --> j(#8:List, f(#5:List, #6:List)) B --> f(#7:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 714 A --> j(#9:List, f(#5:List, #6:List)) B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 715 A --> j(#9:List, f(#5:List, #6:List)) B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 716 A --> j(#10:List, f(#5:List, #6:List)) B --> f(#7:List, j(#8:List, #9:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#10:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 717 A --> j(#9:List, f(#6:List, #7:List)) B --> f(#8:List, 1, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 718 A --> j(#10:List, f(#6:List, #7:List)) B --> f(#8:List, #9:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#11:List, #1:Elt, #2:List) Unifier 719 A --> j(#10:List, f(#6:List, #7:List)) B --> f(#8:List, #9:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 720 A --> j(#11:List, f(#6:List, #7:List)) B --> f(#8:List, j(#9:List, #10:List), #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#11:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#12:List, #1:Elt, #2:List) Unifier 721 A --> j(#9:List, f(#6:List, #7:List)) B --> f(#8:List, 1, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 722 A --> j(#10:List, f(#6:List, #7:List)) B --> f(#8:List, #9:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#11:List, #1:Elt, #2:List) Unifier 723 A --> j(#10:List, f(#6:List, #7:List)) B --> f(#8:List, #9:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 724 A --> j(#11:List, f(#6:List, #7:List)) B --> f(#8:List, j(#9:List, #10:List), #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#11:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#12:List, #1:Elt, #2:List) Unifier 725 A --> j(#10:List, f(#7:List, #8:List)) B --> f(#9:List, 1, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#11:List, #1:Elt, #2:List) Unifier 726 A --> j(#11:List, f(#7:List, #8:List)) B --> f(#9:List, #10:List, #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#12:List, #1:Elt, #2:List) Unifier 727 A --> j(#11:List, f(#7:List, #8:List)) B --> f(#9:List, #10:List, #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#12:List, #1:Elt, #2:List) Unifier 728 A --> j(#12:List, f(#7:List, #8:List)) B --> f(#9:List, j(#10:List, #11:List), #13:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#12:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#13:List, #1:Elt, #2:List) Unifier 729 A --> f(#5:List, #6:List) B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 730 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 731 A --> f(#5:List, #6:List) B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 732 A --> f(#5:List, #6:List) B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #1:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 733 A --> f(#6:List, #7:List) B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 734 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 735 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 736 A --> f(#6:List, #7:List) B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 737 A --> f(#6:List, #7:List) B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 738 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 739 A --> f(#6:List, #7:List) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 740 A --> f(#6:List, #7:List) B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #1:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 741 A --> f(#7:List, #8:List) B --> f(#9:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 742 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 743 A --> f(#7:List, #8:List) B --> f(#9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 744 A --> f(#7:List, #8:List) B --> f(#9:List, j(#10:List, #11:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#1:Elt, #2:List) Unifier 745 A --> j(#8:List, f(#5:List, #6:List)) B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 746 A --> j(#9:List, f(#5:List, #6:List)) B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 747 A --> j(#9:List, f(#5:List, #6:List)) B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 748 A --> j(#10:List, f(#5:List, #6:List)) B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#10:List, f(#3:List, #1:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 749 A --> j(#9:List, f(#6:List, #7:List)) B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 750 A --> j(#10:List, f(#6:List, #7:List)) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 751 A --> j(#10:List, f(#6:List, #7:List)) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 752 A --> j(#11:List, f(#6:List, #7:List)) B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#11:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 753 A --> j(#9:List, f(#6:List, #7:List)) B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 754 A --> j(#10:List, f(#6:List, #7:List)) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 755 A --> j(#10:List, f(#6:List, #7:List)) B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 756 A --> j(#11:List, f(#6:List, #7:List)) B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#11:List, f(#3:List, #1:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 757 A --> j(#10:List, f(#7:List, #8:List)) B --> f(#9:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 758 A --> j(#11:List, f(#7:List, #8:List)) B --> f(#9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 759 A --> j(#11:List, f(#7:List, #8:List)) B --> f(#9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 760 A --> j(#12:List, f(#7:List, #8:List)) B --> f(#9:List, j(#10:List, #11:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#12:List, f(#3:List, #1:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#1:Elt, #2:List) Unifier 761 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 762 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #8:List Unifier 763 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #8:List Unifier 764 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> f(#2:Elt, #10:List) Y --> 1 S --> #9:List Unifier 765 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#3:List, #2:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #7:List Unifier 766 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #1:List Z --> f(#2:Elt, #10:List) Y --> 1 S --> #8:List Unifier 767 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #1:List Z --> f(#2:Elt, #10:List) Y --> 1 S --> #8:List Unifier 768 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #1:List Z --> f(#2:Elt, #11:List) Y --> 1 S --> #9:List Unifier 769 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> f(#3:List, #2:Elt, 1, #4:List) V --> #5:List W --> #6:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 770 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #8:List Unifier 771 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> f(#3:List, #2:Elt, #4:List, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #8:List Unifier 772 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> f(#10:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #10:List) S --> #9:List Unifier 773 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#3:List, #2:Elt, 1, #4:List)) V --> #5:List W --> #6:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #7:List Unifier 774 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #10:List) S --> #8:List Unifier 775 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#3:List, #2:Elt, #4:List, #5:List)) V --> #6:List W --> #7:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #10:List) S --> #8:List Unifier 776 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> f(#11:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#3:List, #2:Elt, j(#4:List, #5:List), #6:List)) V --> #7:List W --> #8:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #11:List) S --> #9:List Unifier 777 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 778 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 779 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 780 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #8:List W --> #9:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 781 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 782 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 783 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 784 A --> j(#10:List, f(#8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 785 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#4:List, #2:Elt, 1, #5:List) V --> #6:List W --> #7:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 786 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 787 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#4:List, #2:Elt, #5:List, #6:List) V --> #7:List W --> #8:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 788 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List) V --> #8:List W --> #9:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 789 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#4:List, #2:Elt, 1, #5:List)) V --> #6:List W --> #7:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 790 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 791 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#4:List, #2:Elt, #5:List, #6:List)) V --> #7:List W --> #8:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 792 A --> j(#10:List, f(#8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#4:List, #2:Elt, j(#5:List, #6:List), #7:List)) V --> #8:List W --> #9:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 793 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #4:List) U --> 1 V --> f(#3:List, #2:Elt, 1, #6:List) W --> #4:List X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #5:List Unifier 794 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #4:List) U --> 1 V --> f(#3:List, #2:Elt, 1, #7:List) W --> #4:List X --> f(#1:List, #2:Elt, #8:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 795 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #4:List) U --> 1 V --> f(#3:List, #2:Elt, 1, #7:List) W --> #4:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 796 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, j(#5:List, #6:List), #7:List) D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #4:List) U --> 1 V --> f(#3:List, #2:Elt, 1, #8:List) W --> #4:List X --> f(#1:List, #2:Elt, #9:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 797 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #7:List) W --> #5:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #6:List Unifier 798 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 799 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 800 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #5:List X --> f(#1:List, #2:Elt, #10:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 801 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #7:List) W --> #5:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #6:List Unifier 802 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 803 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 804 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #5:List X --> f(#1:List, #2:Elt, #10:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 805 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #6:List) U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #8:List) W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #7:List Unifier 806 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #6:List) U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 807 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #6:List) U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 808 A --> 1 B --> #1:List E --> #2:Elt C --> f(#11:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #6:List) U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #10:List) W --> #6:List X --> f(#1:List, #2:Elt, #11:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 809 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #5:List) D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #6:List) W --> f(#7:List, #4:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #5:List Unifier 810 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 811 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 812 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, j(#5:List, #6:List), #7:List) D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 813 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #5:List) D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #6:List) W --> f(#7:List, #4:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #5:List Unifier 814 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 815 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 816 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, j(#5:List, #6:List), #7:List) D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 817 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, 1, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 818 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt, #7:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 819 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 820 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, j(#5:List, #6:List), #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt, #8:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 821 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 822 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 823 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 824 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 825 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 826 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 827 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 828 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 829 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 830 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 831 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 832 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 833 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, 1, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 834 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt, #7:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 835 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 836 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, j(#5:List, #6:List), #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt, #8:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 837 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 838 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 839 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 840 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 841 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 842 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 843 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 844 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 845 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 846 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 847 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 848 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 849 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #5:List) D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#6:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #5:List Unifier 850 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List, #6:List) D --> f(#4:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt, #8:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 851 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List, #6:List) D --> f(#4:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 852 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, j(#5:List, #6:List), #7:List) D --> f(#4:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#8:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 853 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #6:List) D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #6:List Unifier 854 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> f(#5:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 855 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> f(#5:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 856 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, j(#6:List, #7:List), #8:List) D --> f(#5:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 857 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #6:List) D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #6:List Unifier 858 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> f(#5:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 859 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> f(#5:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 860 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, j(#6:List, #7:List), #8:List) D --> f(#5:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 861 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #7:List) D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #7:List Unifier 862 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> f(#6:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 863 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> f(#6:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 864 A --> 1 B --> #1:List E --> #2:Elt C --> f(#11:List, j(#7:List, #8:List), #9:List) D --> f(#6:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#10:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt, #11:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 865 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, 1, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 866 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt, #7:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 867 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 868 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, j(#5:List, #6:List), #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt, #8:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 869 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 870 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 871 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 872 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 873 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 874 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 875 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 876 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 877 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 878 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 879 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 880 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 881 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #4:List) U --> 1 V --> f(#3:List, #2:Elt, 1, #6:List) W --> #4:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 882 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #4:List) U --> 1 V --> f(#3:List, #2:Elt, 1, #7:List) W --> #4:List X --> f(#1:List, #2:Elt) Z --> #5:List Y --> 1 S --> #6:List Unifier 883 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #4:List) U --> 1 V --> f(#3:List, #2:Elt, 1, #7:List) W --> #4:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #5:List S --> #6:List Unifier 884 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#5:List, #6:List), #7:List) D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #4:List) U --> 1 V --> f(#3:List, #2:Elt, 1, #8:List) W --> #4:List X --> f(#1:List, #2:Elt) Z --> #5:List Y --> #6:List S --> #7:List Unifier 885 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #7:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 886 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 887 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 888 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 889 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #7:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 890 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 891 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 892 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 893 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #6:List) U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #8:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 894 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #6:List) U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 895 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #6:List) U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 896 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #6:List) U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #10:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 897 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #5:List) D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #6:List) W --> f(#7:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 898 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #5:List Y --> 1 S --> #6:List Unifier 899 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #5:List S --> #6:List Unifier 900 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#5:List, #6:List), #7:List) D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #5:List Y --> #6:List S --> #7:List Unifier 901 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #5:List) D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #6:List) W --> f(#7:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 902 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #5:List Y --> 1 S --> #6:List Unifier 903 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #5:List S --> #6:List Unifier 904 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#5:List, #6:List), #7:List) D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #5:List Y --> #6:List S --> #7:List Unifier 905 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 906 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt) Z --> #5:List Y --> 1 S --> #6:List Unifier 907 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #5:List S --> #6:List Unifier 908 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#5:List, #6:List), #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt) Z --> #5:List Y --> #6:List S --> #7:List Unifier 909 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 910 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 911 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 912 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 913 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 914 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 915 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 916 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 917 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 918 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 919 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 920 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 921 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 922 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt) Z --> #5:List Y --> 1 S --> #6:List Unifier 923 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #5:List S --> #6:List Unifier 924 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#5:List, #6:List), #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt) Z --> #5:List Y --> #6:List S --> #7:List Unifier 925 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 926 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 927 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 928 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 929 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 930 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 931 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 932 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 933 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 934 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 935 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 936 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 937 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #5:List) D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#6:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 938 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> f(#4:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt) Z --> #5:List Y --> 1 S --> #6:List Unifier 939 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> f(#4:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #5:List S --> #6:List Unifier 940 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#5:List, #6:List), #7:List) D --> f(#4:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#8:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt) Z --> #5:List Y --> #6:List S --> #7:List Unifier 941 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 942 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> f(#5:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 943 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> f(#5:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 944 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> f(#5:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 945 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 946 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> f(#5:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 947 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> f(#5:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 948 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> f(#5:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 949 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 950 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> f(#6:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 951 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> f(#6:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 952 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> f(#6:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#10:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 953 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 954 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt) Z --> #5:List Y --> 1 S --> #6:List Unifier 955 A --> 1 B --> #1:List E --> #2:Elt C --> f(#5:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #5:List S --> #6:List Unifier 956 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#5:List, #6:List), #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt) Z --> #5:List Y --> #6:List S --> #7:List Unifier 957 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 958 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 959 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 960 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 961 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 962 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 963 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 964 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 965 A --> 1 B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 966 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 967 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 968 A --> 1 B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 969 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> f(#8:List, #5:List) D --> #2:List H --> 1 G --> 1 I --> f(#6:List, #3:List) U --> 1 V --> f(#2:List, #1:Elt, 1, #6:List) W --> #3:List X --> #4:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #5:List Unifier 970 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> #2:List H --> #3:List G --> 1 I --> f(#7:List, #4:List) U --> 1 V --> f(#2:List, #1:Elt, #3:List, #7:List) W --> #4:List X --> #5:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #6:List Unifier 971 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> #2:List H --> 1 G --> #3:List I --> f(#7:List, #4:List) U --> 1 V --> f(#2:List, #1:Elt, #3:List, #7:List) W --> #4:List X --> #5:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #6:List Unifier 972 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> #2:List H --> #3:List G --> #4:List I --> f(#8:List, #5:List) U --> 1 V --> f(#2:List, #1:Elt, j(#3:List, #4:List), #8:List) W --> #5:List X --> #6:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #7:List Unifier 973 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> f(#8:List, #5:List) D --> #2:List H --> 1 G --> 1 I --> f(#6:List, #3:List) U --> 1 V --> f(#2:List, #1:Elt, 1, #6:List) W --> #3:List X --> #4:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #5:List Unifier 974 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> #2:List H --> #3:List G --> 1 I --> f(#7:List, #4:List) U --> 1 V --> f(#2:List, #1:Elt, #3:List, #7:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #6:List Unifier 975 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> #2:List H --> 1 G --> #3:List I --> f(#7:List, #4:List) U --> 1 V --> f(#2:List, #1:Elt, #3:List, #7:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #6:List Unifier 976 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> #2:List H --> #3:List G --> #4:List I --> f(#8:List, #5:List) U --> 1 V --> f(#2:List, #1:Elt, j(#3:List, #4:List), #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #7:List Unifier 977 A --> 1 B --> f(#4:List, #8:List) E --> #1:Elt C --> f(#9:List, #5:List) D --> #2:List H --> f(#6:List, #7:List) G --> 1 I --> #3:List U --> 1 V --> f(#2:List, #1:Elt, #6:List) W --> f(#7:List, #3:List) X --> #4:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #5:List Unifier 978 A --> 1 B --> f(#4:List, #8:List) E --> #1:Elt C --> f(#9:List, #5:List) D --> #2:List H --> f(#6:List, #7:List) G --> 1 I --> #3:List U --> 1 V --> f(#2:List, #1:Elt, #6:List) W --> f(#7:List, #3:List) X --> #4:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #5:List Unifier 979 A --> 1 B --> f(#4:List, #8:List) E --> #1:Elt C --> f(#9:List, #5:List) D --> #2:List H --> 1 G --> f(#6:List, #7:List) I --> #3:List U --> 1 V --> f(#2:List, #1:Elt, #6:List) W --> f(#7:List, #3:List) X --> #4:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #5:List Unifier 980 A --> 1 B --> f(#4:List, #8:List) E --> #1:Elt C --> f(#9:List, #5:List) D --> #2:List H --> 1 G --> f(#6:List, #7:List) I --> #3:List U --> 1 V --> f(#2:List, #1:Elt, #6:List) W --> f(#7:List, #3:List) X --> #4:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #5:List Unifier 981 A --> 1 B --> f(#4:List, #6:List) E --> #1:Elt C --> f(#7:List, #5:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#2:List, #1:Elt, 1) W --> #3:List X --> #4:List Z --> f(#6:List, #1:Elt, #7:List) Y --> 1 S --> #5:List Unifier 982 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#2:List, #1:Elt, #3:List) W --> #4:List X --> #5:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #6:List Unifier 983 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#2:List, #1:Elt, #3:List) W --> #4:List X --> #5:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #6:List Unifier 984 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#2:List, #1:Elt, j(#3:List, #4:List)) W --> #5:List X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 985 A --> 1 B --> f(#4:List, #6:List) E --> #1:Elt C --> f(#7:List, #5:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#2:List, #1:Elt, 1) W --> #3:List X --> #4:List Z --> 1 Y --> f(#6:List, #1:Elt, #7:List) S --> #5:List Unifier 986 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#2:List, #1:Elt, #3:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #6:List Unifier 987 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#2:List, #1:Elt, #3:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #6:List Unifier 988 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#2:List, #1:Elt, j(#3:List, #4:List)) W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 989 A --> 1 B --> f(#4:List, #6:List) E --> #1:Elt C --> f(#7:List, #5:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#2:List, #1:Elt) W --> f(1, #3:List) X --> #4:List Z --> f(#6:List, #1:Elt, #7:List) Y --> 1 S --> #5:List Unifier 990 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#2:List, #1:Elt) W --> f(#3:List, #4:List) X --> #5:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #6:List Unifier 991 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#2:List, #1:Elt) W --> f(#3:List, #4:List) X --> #5:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #6:List Unifier 992 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#2:List, #1:Elt) W --> f(j(#3:List, #4:List), #5:List) X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 993 A --> 1 B --> f(#4:List, #6:List) E --> #1:Elt C --> f(#7:List, #5:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#2:List, #1:Elt) W --> f(1, #3:List) X --> #4:List Z --> 1 Y --> f(#6:List, #1:Elt, #7:List) S --> #5:List Unifier 994 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#2:List, #1:Elt) W --> f(#3:List, #4:List) X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #6:List Unifier 995 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#2:List, #1:Elt) W --> f(#3:List, #4:List) X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #6:List Unifier 996 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#2:List, #1:Elt) W --> f(j(#3:List, #4:List), #5:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 997 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> f(#8:List, #5:List) D --> f(#3:List, #6:List) H --> 1 G --> 1 I --> #2:List U --> 1 V --> #3:List W --> f(#6:List, #1:Elt, 1, #2:List) X --> #4:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #5:List Unifier 998 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> f(#4:List, #7:List) H --> #2:List G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List, #3:List) X --> #5:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #6:List Unifier 999 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> f(#4:List, #7:List) H --> 1 G --> #2:List I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List, #3:List) X --> #5:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #6:List Unifier 1000 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> f(#5:List, #8:List) H --> #2:List G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, j(#2:List, #3:List), #4:List) X --> #6:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #7:List Unifier 1001 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> f(#8:List, #5:List) D --> f(#3:List, #6:List) H --> 1 G --> 1 I --> #2:List U --> 1 V --> #3:List W --> f(#6:List, #1:Elt, 1, #2:List) X --> #4:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #5:List Unifier 1002 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> f(#4:List, #7:List) H --> #2:List G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List, #3:List) X --> #5:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #6:List Unifier 1003 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> f(#4:List, #7:List) H --> 1 G --> #2:List I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List, #3:List) X --> #5:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #6:List Unifier 1004 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> f(#5:List, #8:List) H --> #2:List G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, j(#2:List, #3:List), #4:List) X --> #6:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #7:List Unifier 1005 A --> 1 B --> f(#4:List, #6:List) E --> #1:Elt C --> f(#7:List, #5:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> 1 V --> #2:List W --> f(#1:Elt, 1, #3:List) X --> #4:List Z --> f(#6:List, #1:Elt, #7:List) Y --> 1 S --> #5:List Unifier 1006 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #2:List W --> f(#1:Elt, #3:List, #4:List) X --> #5:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1007 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #2:List W --> f(#1:Elt, #3:List, #4:List) X --> #5:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1008 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #2:List W --> f(#1:Elt, j(#3:List, #4:List), #5:List) X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1009 A --> 1 B --> f(#4:List, #6:List) E --> #1:Elt C --> f(#7:List, #5:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> 1 V --> #2:List W --> f(#1:Elt, 1, #3:List) X --> #4:List Z --> 1 Y --> f(#6:List, #1:Elt, #7:List) S --> #5:List Unifier 1010 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #2:List W --> f(#1:Elt, #3:List, #4:List) X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #6:List Unifier 1011 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #2:List W --> f(#1:Elt, #3:List, #4:List) X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #6:List Unifier 1012 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #2:List W --> f(#1:Elt, j(#3:List, #4:List), #5:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 1013 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #4:List) U --> 1 V --> f(#3:List, #1:Elt, 1, #6:List) W --> #4:List X --> #5:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1014 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #7:List) W --> #5:List X --> #6:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1015 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #7:List) W --> #5:List X --> #6:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1016 A --> 1 B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #6:List) U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #8:List) W --> #6:List X --> #7:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1017 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #4:List) U --> 1 V --> f(#3:List, #1:Elt, 1, #6:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1018 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1019 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1020 A --> 1 B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #6:List) U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1021 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #6:List) W --> f(#7:List, #4:List) X --> #5:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1022 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #6:List) W --> f(#7:List, #4:List) X --> #5:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1023 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #6:List) W --> f(#7:List, #4:List) X --> #5:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1024 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #6:List) W --> f(#7:List, #4:List) X --> #5:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1025 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #5:List Z --> f(#6:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1026 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1027 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1028 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1029 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #5:List Z --> 1 Y --> f(#6:List, #1:Elt) S --> #2:List Unifier 1030 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1031 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1032 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1033 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #5:List Z --> f(#6:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1034 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1035 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1036 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1037 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #5:List Z --> 1 Y --> f(#6:List, #1:Elt) S --> #2:List Unifier 1038 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1039 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1040 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1041 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#6:List, #1:Elt, 1, #3:List) X --> #5:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1042 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1043 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1044 A --> 1 B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1045 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#6:List, #1:Elt, 1, #3:List) X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1046 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1047 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1048 A --> 1 B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1049 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #5:List Z --> f(#6:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1050 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1051 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1052 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1053 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #5:List Z --> 1 Y --> f(#6:List, #1:Elt) S --> #2:List Unifier 1054 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1055 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1056 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1057 A --> 1 B --> f(#5:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #4:List) U --> 1 V --> f(#3:List, #1:Elt, 1, #6:List) W --> #4:List X --> #5:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1058 A --> 1 B --> f(#5:List, #6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #4:List) U --> 1 V --> f(#3:List, #1:Elt, 1, #7:List) W --> #4:List X --> #5:List Z --> #6:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1059 A --> 1 B --> f(#5:List, #6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #4:List) U --> 1 V --> f(#3:List, #1:Elt, 1, #7:List) W --> #4:List X --> #5:List Z --> 1 Y --> #6:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1060 A --> 1 B --> f(#5:List, j(#6:List, #7:List), #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #4:List) U --> 1 V --> f(#3:List, #1:Elt, 1, #8:List) W --> #4:List X --> #5:List Z --> #6:List Y --> #7:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1061 A --> 1 B --> f(#6:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1062 A --> 1 B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1063 A --> 1 B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1064 A --> 1 B --> f(#6:List, j(#7:List, #8:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1065 A --> 1 B --> f(#6:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1066 A --> 1 B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1067 A --> 1 B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1068 A --> 1 B --> f(#6:List, j(#7:List, #8:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1069 A --> 1 B --> f(#7:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #6:List) U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1070 A --> 1 B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #6:List) U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1071 A --> 1 B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #6:List) U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1072 A --> 1 B --> f(#7:List, j(#8:List, #9:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #6:List) U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1073 A --> 1 B --> f(#5:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #6:List) W --> f(#7:List, #4:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1074 A --> 1 B --> f(#5:List, #6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1075 A --> 1 B --> f(#5:List, #6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1076 A --> 1 B --> f(#5:List, j(#6:List, #7:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1077 A --> 1 B --> f(#5:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #6:List) W --> f(#7:List, #4:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1078 A --> 1 B --> f(#5:List, #6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1079 A --> 1 B --> f(#5:List, #6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1080 A --> 1 B --> f(#5:List, j(#6:List, #7:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1081 A --> 1 B --> f(#5:List, 1, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #5:List Z --> 1 Y --> 1 S --> f(#6:List, #1:Elt, #2:List) Unifier 1082 A --> 1 B --> f(#5:List, #6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #5:List Z --> #6:List Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1083 A --> 1 B --> f(#5:List, #6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #5:List Z --> 1 Y --> #6:List S --> f(#7:List, #1:Elt, #2:List) Unifier 1084 A --> 1 B --> f(#5:List, j(#6:List, #7:List), #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #5:List Z --> #6:List Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1085 A --> 1 B --> f(#6:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1086 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1087 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1088 A --> 1 B --> f(#6:List, j(#7:List, #8:List), #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1089 A --> 1 B --> f(#6:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1090 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1091 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1092 A --> 1 B --> f(#6:List, j(#7:List, #8:List), #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1093 A --> 1 B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1094 A --> 1 B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1095 A --> 1 B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1096 A --> 1 B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1097 A --> 1 B --> f(#5:List, 1, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#6:List, #1:Elt, #2:List) Unifier 1098 A --> 1 B --> f(#5:List, #6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1099 A --> 1 B --> f(#5:List, #6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#7:List, #1:Elt, #2:List) Unifier 1100 A --> 1 B --> f(#5:List, j(#6:List, #7:List), #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1101 A --> 1 B --> f(#6:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1102 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1103 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1104 A --> 1 B --> f(#6:List, j(#7:List, #8:List), #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1105 A --> 1 B --> f(#6:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1106 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1107 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1108 A --> 1 B --> f(#6:List, j(#7:List, #8:List), #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1109 A --> 1 B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1110 A --> 1 B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1111 A --> 1 B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1112 A --> 1 B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1113 A --> 1 B --> f(#5:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#6:List, #1:Elt, 1, #3:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1114 A --> 1 B --> f(#5:List, #6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#4:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, 1, #3:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1115 A --> 1 B --> f(#5:List, #6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#4:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, 1, #3:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1116 A --> 1 B --> f(#5:List, j(#6:List, #7:List), #9:List) E --> #1:Elt C --> #2:List D --> f(#4:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#8:List, #1:Elt, 1, #3:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1117 A --> 1 B --> f(#6:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1118 A --> 1 B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1119 A --> 1 B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1120 A --> 1 B --> f(#6:List, j(#7:List, #8:List), #10:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1121 A --> 1 B --> f(#6:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1122 A --> 1 B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1123 A --> 1 B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1124 A --> 1 B --> f(#6:List, j(#7:List, #8:List), #10:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1125 A --> 1 B --> f(#7:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1126 A --> 1 B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1127 A --> 1 B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1128 A --> 1 B --> f(#7:List, j(#8:List, #9:List), #11:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#10:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1129 A --> 1 B --> f(#5:List, 1, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#6:List, #1:Elt, #2:List) Unifier 1130 A --> 1 B --> f(#5:List, #6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1131 A --> 1 B --> f(#5:List, #6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#7:List, #1:Elt, #2:List) Unifier 1132 A --> 1 B --> f(#5:List, j(#6:List, #7:List), #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1133 A --> 1 B --> f(#6:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1134 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1135 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1136 A --> 1 B --> f(#6:List, j(#7:List, #8:List), #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1137 A --> 1 B --> f(#6:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1138 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1139 A --> 1 B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1140 A --> 1 B --> f(#6:List, j(#7:List, #8:List), #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1141 A --> 1 B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1142 A --> 1 B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1143 A --> 1 B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1144 A --> 1 B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1145 A --> 1 B --> f(#5:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #4:List) U --> 1 V --> f(#3:List, #1:Elt, 1, #6:List) W --> #4:List X --> #5:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1146 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #4:List) U --> 1 V --> f(#3:List, #1:Elt, 1, #7:List) W --> #4:List X --> #5:List Z --> #6:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1147 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #4:List) U --> 1 V --> f(#3:List, #1:Elt, 1, #7:List) W --> #4:List X --> #5:List Z --> 1 Y --> #6:List S --> f(#1:Elt, #2:List) Unifier 1148 A --> 1 B --> f(#5:List, j(#6:List, #7:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #4:List) U --> 1 V --> f(#3:List, #1:Elt, 1, #8:List) W --> #4:List X --> #5:List Z --> #6:List Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1149 A --> 1 B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1150 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1151 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1152 A --> 1 B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1153 A --> 1 B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1154 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1155 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1156 A --> 1 B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #5:List) U --> 1 V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1157 A --> 1 B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #6:List) U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1158 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #6:List) U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1159 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #6:List) U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1160 A --> 1 B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #6:List) U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1161 A --> 1 B --> f(#5:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #6:List) W --> f(#7:List, #4:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1162 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1163 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#1:Elt, #2:List) Unifier 1164 A --> 1 B --> f(#5:List, j(#6:List, #7:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1165 A --> 1 B --> f(#5:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #6:List) W --> f(#7:List, #4:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1166 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1167 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#1:Elt, #2:List) Unifier 1168 A --> 1 B --> f(#5:List, j(#6:List, #7:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1169 A --> 1 B --> f(#5:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #5:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1170 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #5:List Z --> #6:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1171 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #5:List Z --> 1 Y --> #6:List S --> f(#1:Elt, #2:List) Unifier 1172 A --> 1 B --> f(#5:List, j(#6:List, #7:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #5:List Z --> #6:List Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1173 A --> 1 B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1174 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1175 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1176 A --> 1 B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1177 A --> 1 B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1178 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1179 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1180 A --> 1 B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1181 A --> 1 B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1182 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1183 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1184 A --> 1 B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1185 A --> 1 B --> f(#5:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1186 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1187 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#1:Elt, #2:List) Unifier 1188 A --> 1 B --> f(#5:List, j(#6:List, #7:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1189 A --> 1 B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1190 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1191 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1192 A --> 1 B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1193 A --> 1 B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1194 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1195 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1196 A --> 1 B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1197 A --> 1 B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1198 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1199 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1200 A --> 1 B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1201 A --> 1 B --> f(#5:List, 1) E --> #1:Elt C --> #2:List D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#6:List, #1:Elt, 1, #3:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1202 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> f(#4:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, 1, #3:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1203 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> f(#4:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, 1, #3:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#1:Elt, #2:List) Unifier 1204 A --> 1 B --> f(#5:List, j(#6:List, #7:List)) E --> #1:Elt C --> #2:List D --> f(#4:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#8:List, #1:Elt, 1, #3:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1205 A --> 1 B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1206 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1207 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1208 A --> 1 B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> f(#5:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1209 A --> 1 B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1210 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1211 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1212 A --> 1 B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> f(#5:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1213 A --> 1 B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1214 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1215 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1216 A --> 1 B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> f(#6:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#10:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1217 A --> 1 B --> f(#5:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1218 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1219 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#1:Elt, #2:List) Unifier 1220 A --> 1 B --> f(#5:List, j(#6:List, #7:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1221 A --> 1 B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1222 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1223 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1224 A --> 1 B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1225 A --> 1 B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1226 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1227 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1228 A --> 1 B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1229 A --> 1 B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1230 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1231 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1232 A --> 1 B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1233 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #4:List) U --> 1 V --> f(#3:List, #2:Elt, 1, #6:List) W --> #4:List X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #5:List Unifier 1234 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #7:List) W --> #5:List X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1235 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #7:List) W --> #5:List X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1236 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #6:List) U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #8:List) W --> #6:List X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1237 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #4:List) U --> 1 V --> f(#3:List, #2:Elt, 1, #6:List) W --> #4:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #5:List Unifier 1238 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #7:List) W --> #5:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #6:List Unifier 1239 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #5:List) U --> 1 V --> f(#3:List, #2:Elt, #4:List, #7:List) W --> #5:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #6:List Unifier 1240 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #6:List) U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #8:List) W --> #6:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #7:List Unifier 1241 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #6:List) W --> f(#7:List, #4:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #5:List Unifier 1242 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #6:List) W --> f(#7:List, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #5:List Unifier 1243 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #6:List) W --> f(#7:List, #4:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #5:List Unifier 1244 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, #6:List) W --> f(#7:List, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #5:List Unifier 1245 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> #1:List Z --> f(#2:Elt, #6:List) Y --> 1 S --> #5:List Unifier 1246 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #6:List Unifier 1247 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #6:List Unifier 1248 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 1249 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #6:List) S --> #5:List Unifier 1250 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #6:List Unifier 1251 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #6:List Unifier 1252 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 1253 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> #1:List Z --> f(#2:Elt, #6:List) Y --> 1 S --> #5:List Unifier 1254 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #6:List Unifier 1255 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #6:List Unifier 1256 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 1257 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #6:List) S --> #5:List Unifier 1258 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #6:List Unifier 1259 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #6:List Unifier 1260 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 1261 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#6:List, #2:Elt, 1, #3:List) X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #5:List Unifier 1262 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #2:Elt, #3:List, #4:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1263 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #2:Elt, #3:List, #4:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1264 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1265 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#6:List, #2:Elt, 1, #3:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #5:List Unifier 1266 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #2:Elt, #3:List, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #6:List Unifier 1267 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #2:Elt, #3:List, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #6:List Unifier 1268 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #7:List Unifier 1269 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> #1:List Z --> f(#2:Elt, #6:List) Y --> 1 S --> #5:List Unifier 1270 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #6:List Unifier 1271 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #6:List Unifier 1272 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 1273 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #6:List) S --> #5:List Unifier 1274 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #6:List Unifier 1275 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #6:List Unifier 1276 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 1277 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> f(#4:List, #2:Elt, 1, #6:List) W --> #5:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1278 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> f(#4:List, #2:Elt, #5:List, #7:List) W --> #6:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1279 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #6:List) U --> 1 V --> f(#4:List, #2:Elt, #5:List, #7:List) W --> #6:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1280 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #7:List) U --> 1 V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #8:List) W --> #7:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1281 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> f(#4:List, #2:Elt, 1, #6:List) W --> #5:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1282 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> f(#4:List, #2:Elt, #5:List, #7:List) W --> #6:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1283 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #6:List) U --> 1 V --> f(#4:List, #2:Elt, #5:List, #7:List) W --> #6:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1284 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #7:List) U --> 1 V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #8:List) W --> #7:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1285 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> f(#4:List, #2:Elt, #6:List) W --> f(#7:List, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1286 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> f(#4:List, #2:Elt, #6:List) W --> f(#7:List, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1287 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> #5:List U --> 1 V --> f(#4:List, #2:Elt, #6:List) W --> f(#7:List, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1288 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> #5:List U --> 1 V --> f(#4:List, #2:Elt, #6:List) W --> f(#7:List, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1289 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1290 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1291 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1292 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1293 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1294 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1295 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1296 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1297 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1298 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1299 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1300 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1301 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1302 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1303 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1304 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1305 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#6:List, #2:Elt, 1, #4:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1306 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #2:Elt, #4:List, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1307 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #2:Elt, #4:List, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1308 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #7:List W --> f(#8:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1309 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#6:List, #2:Elt, 1, #4:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1310 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #2:Elt, #4:List, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1311 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #2:Elt, #4:List, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1312 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #7:List W --> f(#8:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1313 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1314 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1315 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1316 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1317 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1318 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1319 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1320 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1321 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #6:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> #4:List V --> f(#3:List, #2:Elt, 1, #7:List) W --> #5:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #6:List Unifier 1322 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #5:List) U --> #4:List V --> f(#3:List, #2:Elt, 1, #8:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 1323 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #5:List) U --> #4:List V --> f(#3:List, #2:Elt, 1, #8:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 1324 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> 1 I --> f(#9:List, #5:List) U --> #4:List V --> f(#3:List, #2:Elt, 1, #9:List) W --> #5:List X --> f(#1:List, #2:Elt, #10:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1325 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #7:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1326 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1327 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1328 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> 1 I --> f(#10:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #10:List) W --> #6:List X --> f(#1:List, #2:Elt, #11:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1329 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #7:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1330 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1331 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1332 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> #4:List I --> f(#10:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #10:List) W --> #6:List X --> f(#1:List, #2:Elt, #11:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1333 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, 1, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> #6:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) W --> #7:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> 1 S --> #8:List Unifier 1334 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#11:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #7:List) U --> #6:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #10:List) W --> #7:List X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 1335 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#11:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #7:List) U --> #6:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #10:List) W --> #7:List X --> f(#1:List, #2:Elt, #11:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 1336 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#12:List, j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#11:List, #7:List) U --> #6:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #11:List) W --> #7:List X --> f(#1:List, #2:Elt, #12:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1337 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #6:List Unifier 1338 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List, #7:List) D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 1339 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List, #7:List) D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 1340 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> f(#9:List, #10:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #9:List) W --> f(#10:List, #4:List) X --> f(#1:List, #2:Elt, #11:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1341 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #6:List Unifier 1342 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List, #7:List) D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 1343 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List, #7:List) D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 1344 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> f(#9:List, #10:List) I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #9:List) W --> f(#10:List, #4:List) X --> f(#1:List, #2:Elt, #11:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1345 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 1346 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 1347 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 1348 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1349 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1350 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1351 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1352 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1353 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1354 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1355 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1356 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1357 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 1358 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 1359 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 1360 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#11:List, j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1361 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 1362 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 1363 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 1364 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1365 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1366 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1367 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1368 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1369 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1370 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1371 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1372 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1373 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 1374 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 1375 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 1376 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#11:List, j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1377 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #6:List) D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#7:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #6:List Unifier 1378 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> f(#5:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 1379 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List, #7:List) D --> f(#5:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 1380 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, j(#6:List, #7:List), #8:List) D --> f(#5:List, #9:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#9:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1381 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #7:List) D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1382 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> f(#6:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1383 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> f(#6:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1384 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, j(#7:List, #8:List), #9:List) D --> f(#6:List, #10:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #11:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1385 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #7:List) D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1386 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> f(#6:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1387 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List, #8:List) D --> f(#6:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1388 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, j(#7:List, #8:List), #9:List) D --> f(#6:List, #10:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt, #11:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1389 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, 1, #8:List) D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> 1 S --> #8:List Unifier 1390 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#11:List, #8:List, #9:List) D --> f(#7:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 1391 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#11:List, #8:List, #9:List) D --> f(#7:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt, #11:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 1392 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#12:List, j(#8:List, #9:List), #10:List) D --> f(#7:List, #11:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#11:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt, #12:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1393 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, 1, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 1394 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 1395 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 1396 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1397 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1398 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1399 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1400 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1401 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, 1, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1402 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1403 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1404 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1405 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, 1, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 1406 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 1407 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 1408 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#11:List, j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1409 A --> #4:List B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> #4:List V --> f(#3:List, #2:Elt, 1, #7:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 1410 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #5:List) U --> #4:List V --> f(#3:List, #2:Elt, 1, #8:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 1411 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #5:List) U --> #4:List V --> f(#3:List, #2:Elt, 1, #8:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 1412 A --> #4:List B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> 1 I --> f(#9:List, #5:List) U --> #4:List V --> f(#3:List, #2:Elt, 1, #9:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1413 A --> #5:List B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 1414 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 1415 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 1416 A --> #5:List B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> 1 I --> f(#10:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #10:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1417 A --> #5:List B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 1418 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 1419 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #9:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 1420 A --> #5:List B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> #4:List I --> f(#10:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #10:List) W --> #6:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1421 A --> #6:List B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> #6:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 1422 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #7:List) U --> #6:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #10:List) W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 1423 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #7:List) U --> #6:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #10:List) W --> #7:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 1424 A --> #6:List B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#11:List, #7:List) U --> #6:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #11:List) W --> #7:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1425 A --> #5:List B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 1426 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 1427 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 1428 A --> #5:List B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> f(#9:List, #10:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #9:List) W --> f(#10:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1429 A --> #5:List B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 1430 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 1431 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #8:List) W --> f(#9:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 1432 A --> #5:List B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> f(#9:List, #10:List) I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #9:List) W --> f(#10:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1433 A --> #5:List B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 1434 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 1435 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 1436 A --> #5:List B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1437 A --> #6:List B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 1438 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 1439 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 1440 A --> #6:List B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1441 A --> #6:List B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 1442 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 1443 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 1444 A --> #6:List B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1445 A --> #7:List B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 1446 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 1447 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 1448 A --> #7:List B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1449 A --> #5:List B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 1450 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 1451 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 1452 A --> #5:List B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1453 A --> #6:List B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 1454 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 1455 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 1456 A --> #6:List B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1457 A --> #6:List B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 1458 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 1459 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 1460 A --> #6:List B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1461 A --> #7:List B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 1462 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 1463 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 1464 A --> #7:List B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1465 A --> #4:List B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#7:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 1466 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> f(#5:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 1467 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> f(#5:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 1468 A --> #4:List B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> f(#5:List, #9:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#9:List, #2:Elt, 1, #3:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1469 A --> #5:List B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 1470 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> f(#6:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 1471 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> f(#6:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 1472 A --> #5:List B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> f(#6:List, #10:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1473 A --> #5:List B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 1474 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> f(#6:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 1475 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> f(#6:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 1476 A --> #5:List B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> f(#6:List, #10:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #2:Elt, #3:List, #4:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1477 A --> #6:List B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 1478 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> f(#7:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 1479 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> f(#7:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 1480 A --> #6:List B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> f(#7:List, #11:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#11:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1481 A --> #5:List B --> #1:List E --> #2:Elt C --> f(1, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #6:List Unifier 1482 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> 1 S --> #7:List Unifier 1483 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#6:List, #7:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #6:List S --> #7:List Unifier 1484 A --> #5:List B --> #1:List E --> #2:Elt C --> f(j(#6:List, #7:List), #8:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> f(#1:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #8:List Unifier 1485 A --> #6:List B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 1486 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 1487 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 1488 A --> #6:List B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1489 A --> #6:List B --> #1:List E --> #2:Elt C --> f(1, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #7:List Unifier 1490 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> 1 S --> #8:List Unifier 1491 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#7:List, #8:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #7:List S --> #8:List Unifier 1492 A --> #6:List B --> #1:List E --> #2:Elt C --> f(j(#7:List, #8:List), #9:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> f(#1:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1493 A --> #7:List B --> #1:List E --> #2:Elt C --> f(1, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> 1 S --> #8:List Unifier 1494 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> #8:List Y --> 1 S --> #9:List Unifier 1495 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#8:List, #9:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> 1 Y --> #8:List S --> #9:List Unifier 1496 A --> #7:List B --> #1:List E --> #2:Elt C --> f(j(#8:List, #9:List), #10:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> f(#1:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1497 A --> #3:List B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> #2:List H --> 1 G --> 1 I --> f(#7:List, #4:List) U --> #3:List V --> f(#2:List, #1:Elt, 1, #7:List) W --> #4:List X --> #5:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #6:List Unifier 1498 A --> #4:List B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> #2:List H --> #3:List G --> 1 I --> f(#8:List, #5:List) U --> #4:List V --> f(#2:List, #1:Elt, #3:List, #8:List) W --> #5:List X --> #6:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #7:List Unifier 1499 A --> #4:List B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> #2:List H --> 1 G --> #3:List I --> f(#8:List, #5:List) U --> #4:List V --> f(#2:List, #1:Elt, #3:List, #8:List) W --> #5:List X --> #6:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #7:List Unifier 1500 A --> #5:List B --> f(#7:List, #10:List) E --> #1:Elt C --> f(#11:List, #8:List) D --> #2:List H --> #3:List G --> #4:List I --> f(#9:List, #6:List) U --> #5:List V --> f(#2:List, #1:Elt, j(#3:List, #4:List), #9:List) W --> #6:List X --> #7:List Z --> f(#10:List, #1:Elt, #11:List) Y --> 1 S --> #8:List Unifier 1501 A --> #3:List B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> #2:List H --> 1 G --> 1 I --> f(#7:List, #4:List) U --> #3:List V --> f(#2:List, #1:Elt, 1, #7:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #6:List Unifier 1502 A --> #4:List B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> #2:List H --> #3:List G --> 1 I --> f(#8:List, #5:List) U --> #4:List V --> f(#2:List, #1:Elt, #3:List, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #7:List Unifier 1503 A --> #4:List B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> #2:List H --> 1 G --> #3:List I --> f(#8:List, #5:List) U --> #4:List V --> f(#2:List, #1:Elt, #3:List, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #7:List Unifier 1504 A --> #5:List B --> f(#7:List, #10:List) E --> #1:Elt C --> f(#11:List, #8:List) D --> #2:List H --> #3:List G --> #4:List I --> f(#9:List, #6:List) U --> #5:List V --> f(#2:List, #1:Elt, j(#3:List, #4:List), #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#10:List, #1:Elt, #11:List) S --> #8:List Unifier 1505 A --> #4:List B --> f(#5:List, #9:List) E --> #1:Elt C --> f(#10:List, #6:List) D --> #2:List H --> f(#7:List, #8:List) G --> 1 I --> #3:List U --> #4:List V --> f(#2:List, #1:Elt, #7:List) W --> f(#8:List, #3:List) X --> #5:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #6:List Unifier 1506 A --> #4:List B --> f(#5:List, #9:List) E --> #1:Elt C --> f(#10:List, #6:List) D --> #2:List H --> f(#7:List, #8:List) G --> 1 I --> #3:List U --> #4:List V --> f(#2:List, #1:Elt, #7:List) W --> f(#8:List, #3:List) X --> #5:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #6:List Unifier 1507 A --> #4:List B --> f(#5:List, #9:List) E --> #1:Elt C --> f(#10:List, #6:List) D --> #2:List H --> 1 G --> f(#7:List, #8:List) I --> #3:List U --> #4:List V --> f(#2:List, #1:Elt, #7:List) W --> f(#8:List, #3:List) X --> #5:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #6:List Unifier 1508 A --> #4:List B --> f(#5:List, #9:List) E --> #1:Elt C --> f(#10:List, #6:List) D --> #2:List H --> 1 G --> f(#7:List, #8:List) I --> #3:List U --> #4:List V --> f(#2:List, #1:Elt, #7:List) W --> f(#8:List, #3:List) X --> #5:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #6:List Unifier 1509 A --> #4:List B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#2:List, #1:Elt, 1) W --> #3:List X --> #5:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1510 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#2:List, #1:Elt, #3:List) W --> #4:List X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1511 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#2:List, #1:Elt, #3:List) W --> #4:List X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1512 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#2:List, #1:Elt, j(#3:List, #4:List)) W --> #5:List X --> #7:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #8:List Unifier 1513 A --> #4:List B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#2:List, #1:Elt, 1) W --> #3:List X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #6:List Unifier 1514 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#2:List, #1:Elt, #3:List) W --> #4:List X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 1515 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#2:List, #1:Elt, #3:List) W --> #4:List X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 1516 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#2:List, #1:Elt, j(#3:List, #4:List)) W --> #5:List X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #8:List Unifier 1517 A --> #4:List B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#2:List, #1:Elt) W --> f(1, #3:List) X --> #5:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1518 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#2:List, #1:Elt) W --> f(#3:List, #4:List) X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1519 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#2:List, #1:Elt) W --> f(#3:List, #4:List) X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1520 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#2:List, #1:Elt) W --> f(j(#3:List, #4:List), #5:List) X --> #7:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #8:List Unifier 1521 A --> #4:List B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#2:List, #1:Elt) W --> f(1, #3:List) X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #6:List Unifier 1522 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#2:List, #1:Elt) W --> f(#3:List, #4:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 1523 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#2:List, #1:Elt) W --> f(#3:List, #4:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 1524 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#2:List, #1:Elt) W --> f(j(#3:List, #4:List), #5:List) X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #8:List Unifier 1525 A --> #3:List B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> f(#4:List, #7:List) H --> 1 G --> 1 I --> #2:List U --> #3:List V --> #4:List W --> f(#7:List, #1:Elt, 1, #2:List) X --> #5:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #6:List Unifier 1526 A --> #4:List B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> f(#5:List, #8:List) H --> #2:List G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List, #3:List) X --> #6:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #7:List Unifier 1527 A --> #4:List B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> f(#5:List, #8:List) H --> 1 G --> #2:List I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List, #3:List) X --> #6:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #7:List Unifier 1528 A --> #5:List B --> f(#7:List, #10:List) E --> #1:Elt C --> f(#11:List, #8:List) D --> f(#6:List, #9:List) H --> #2:List G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, j(#2:List, #3:List), #4:List) X --> #7:List Z --> f(#10:List, #1:Elt, #11:List) Y --> 1 S --> #8:List Unifier 1529 A --> #3:List B --> f(#5:List, #8:List) E --> #1:Elt C --> f(#9:List, #6:List) D --> f(#4:List, #7:List) H --> 1 G --> 1 I --> #2:List U --> #3:List V --> #4:List W --> f(#7:List, #1:Elt, 1, #2:List) X --> #5:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #6:List Unifier 1530 A --> #4:List B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> f(#5:List, #8:List) H --> #2:List G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List, #3:List) X --> #6:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #7:List Unifier 1531 A --> #4:List B --> f(#6:List, #9:List) E --> #1:Elt C --> f(#10:List, #7:List) D --> f(#5:List, #8:List) H --> 1 G --> #2:List I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List, #3:List) X --> #6:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #7:List Unifier 1532 A --> #5:List B --> f(#7:List, #10:List) E --> #1:Elt C --> f(#11:List, #8:List) D --> f(#6:List, #9:List) H --> #2:List G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, j(#2:List, #3:List), #4:List) X --> #7:List Z --> 1 Y --> f(#10:List, #1:Elt, #11:List) S --> #8:List Unifier 1533 A --> #4:List B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #2:List W --> f(#1:Elt, 1, #3:List) X --> #5:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1534 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #2:List W --> f(#1:Elt, #3:List, #4:List) X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1535 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #2:List W --> f(#1:Elt, #3:List, #4:List) X --> #6:List Z --> f(#8:List, #1:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1536 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #2:List W --> f(#1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> f(#9:List, #1:Elt, #10:List) Y --> 1 S --> #8:List Unifier 1537 A --> #4:List B --> f(#5:List, #7:List) E --> #1:Elt C --> f(#8:List, #6:List) D --> #2:List H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #2:List W --> f(#1:Elt, 1, #3:List) X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> #6:List Unifier 1538 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #2:List W --> f(#1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 1539 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> f(#9:List, #7:List) D --> #2:List H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #2:List W --> f(#1:Elt, #3:List, #4:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #9:List) S --> #7:List Unifier 1540 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> f(#10:List, #8:List) D --> #2:List H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #2:List W --> f(#1:Elt, j(#3:List, #4:List), #5:List) X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt, #10:List) S --> #8:List Unifier 1541 A --> #4:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> #4:List V --> f(#3:List, #1:Elt, 1, #7:List) W --> #5:List X --> #6:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1542 A --> #5:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #6:List X --> #7:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1543 A --> #5:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #6:List X --> #7:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1544 A --> #6:List B --> f(#8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> #6:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) W --> #7:List X --> #8:List Z --> f(#10:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1545 A --> #4:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> #4:List V --> f(#3:List, #1:Elt, 1, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1546 A --> #5:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1547 A --> #5:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1548 A --> #6:List B --> f(#8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> #6:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #1:Elt) S --> #2:List Unifier 1549 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #6:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1550 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #6:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1551 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #6:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1552 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #6:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1553 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1554 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1555 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1556 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #8:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1557 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1558 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1559 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1560 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #8:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1561 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1562 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1563 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1564 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #8:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1565 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1566 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1567 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1568 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1569 A --> #4:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#7:List, #1:Elt, 1, #3:List) X --> #6:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1570 A --> #5:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1571 A --> #5:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1572 A --> #6:List B --> f(#8:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #8:List Z --> f(#10:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1573 A --> #4:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#7:List, #1:Elt, 1, #3:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1574 A --> #5:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1575 A --> #5:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1576 A --> #6:List B --> f(#8:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #8:List Z --> 1 Y --> f(#10:List, #1:Elt) S --> #2:List Unifier 1577 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1578 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1579 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1580 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> #2:List Unifier 1581 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> #2:List Unifier 1582 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1583 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> #2:List Unifier 1584 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> #2:List Unifier 1585 A --> #4:List B --> f(#6:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> #4:List V --> f(#3:List, #1:Elt, 1, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1586 A --> #4:List B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #5:List) U --> #4:List V --> f(#3:List, #1:Elt, 1, #8:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1587 A --> #4:List B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #5:List) U --> #4:List V --> f(#3:List, #1:Elt, 1, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1588 A --> #4:List B --> f(#6:List, j(#7:List, #8:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#9:List, #5:List) U --> #4:List V --> f(#3:List, #1:Elt, 1, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1589 A --> #5:List B --> f(#7:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1590 A --> #5:List B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1591 A --> #5:List B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1592 A --> #5:List B --> f(#7:List, j(#8:List, #9:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#10:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1593 A --> #5:List B --> f(#7:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1594 A --> #5:List B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1595 A --> #5:List B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1596 A --> #5:List B --> f(#7:List, j(#8:List, #9:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#10:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1597 A --> #6:List B --> f(#8:List, 1, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> #6:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1598 A --> #6:List B --> f(#8:List, #9:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #7:List) U --> #6:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #10:List) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#11:List, #1:Elt, #2:List) Unifier 1599 A --> #6:List B --> f(#8:List, #9:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #7:List) U --> #6:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #10:List) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1600 A --> #6:List B --> f(#8:List, j(#9:List, #10:List), #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#11:List, #7:List) U --> #6:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #11:List) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#12:List, #1:Elt, #2:List) Unifier 1601 A --> #5:List B --> f(#6:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1602 A --> #5:List B --> f(#6:List, #7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1603 A --> #5:List B --> f(#6:List, #7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1604 A --> #5:List B --> f(#6:List, j(#7:List, #8:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#9:List, #10:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #9:List) W --> f(#10:List, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1605 A --> #5:List B --> f(#6:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1606 A --> #5:List B --> f(#6:List, #7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1607 A --> #5:List B --> f(#6:List, #7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1608 A --> #5:List B --> f(#6:List, j(#7:List, #8:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#9:List, #10:List) I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #9:List) W --> f(#10:List, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1609 A --> #5:List B --> f(#6:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1610 A --> #5:List B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1611 A --> #5:List B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1612 A --> #5:List B --> f(#6:List, j(#7:List, #8:List), #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1613 A --> #6:List B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1614 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1615 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1616 A --> #6:List B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1617 A --> #6:List B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1618 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1619 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1620 A --> #6:List B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1621 A --> #7:List B --> f(#8:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1622 A --> #7:List B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1623 A --> #7:List B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1624 A --> #7:List B --> f(#8:List, j(#9:List, #10:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1625 A --> #5:List B --> f(#6:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1626 A --> #5:List B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1627 A --> #5:List B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1628 A --> #5:List B --> f(#6:List, j(#7:List, #8:List), #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1629 A --> #6:List B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1630 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1631 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1632 A --> #6:List B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1633 A --> #6:List B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1634 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1635 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1636 A --> #6:List B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1637 A --> #7:List B --> f(#8:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1638 A --> #7:List B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1639 A --> #7:List B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1640 A --> #7:List B --> f(#8:List, j(#9:List, #10:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1641 A --> #4:List B --> f(#6:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#7:List, #1:Elt, 1, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1642 A --> #4:List B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, 1, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1643 A --> #4:List B --> f(#6:List, #7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, 1, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1644 A --> #4:List B --> f(#6:List, j(#7:List, #8:List), #10:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #9:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#9:List, #1:Elt, 1, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1645 A --> #5:List B --> f(#7:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1646 A --> #5:List B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1647 A --> #5:List B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1648 A --> #5:List B --> f(#7:List, j(#8:List, #9:List), #11:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #10:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1649 A --> #5:List B --> f(#7:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1650 A --> #5:List B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1651 A --> #5:List B --> f(#7:List, #8:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1652 A --> #5:List B --> f(#7:List, j(#8:List, #9:List), #11:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #10:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1653 A --> #6:List B --> f(#8:List, 1, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #8:List Z --> 1 Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1654 A --> #6:List B --> f(#8:List, #9:List, #11:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #8:List Z --> #9:List Y --> 1 S --> f(#11:List, #1:Elt, #2:List) Unifier 1655 A --> #6:List B --> f(#8:List, #9:List, #11:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #8:List Z --> 1 Y --> #9:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1656 A --> #6:List B --> f(#8:List, j(#9:List, #10:List), #12:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #11:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#11:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #8:List Z --> #9:List Y --> #10:List S --> f(#12:List, #1:Elt, #2:List) Unifier 1657 A --> #5:List B --> f(#6:List, 1, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #2:List) Unifier 1658 A --> #5:List B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1659 A --> #5:List B --> f(#6:List, #7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #2:List) Unifier 1660 A --> #5:List B --> f(#6:List, j(#7:List, #8:List), #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1661 A --> #6:List B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1662 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1663 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1664 A --> #6:List B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1665 A --> #6:List B --> f(#7:List, 1, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #2:List) Unifier 1666 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1667 A --> #6:List B --> f(#7:List, #8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #2:List) Unifier 1668 A --> #6:List B --> f(#7:List, j(#8:List, #9:List), #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1669 A --> #7:List B --> f(#8:List, 1, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, #2:List) Unifier 1670 A --> #7:List B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #1:Elt, #2:List) Unifier 1671 A --> #7:List B --> f(#8:List, #9:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #1:Elt, #2:List) Unifier 1672 A --> #7:List B --> f(#8:List, j(#9:List, #10:List), #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #1:Elt, #2:List) Unifier 1673 A --> #4:List B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> #4:List V --> f(#3:List, #1:Elt, 1, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1674 A --> #4:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #5:List) U --> #4:List V --> f(#3:List, #1:Elt, 1, #8:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1675 A --> #4:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #5:List) U --> #4:List V --> f(#3:List, #1:Elt, 1, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1676 A --> #4:List B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#9:List, #5:List) U --> #4:List V --> f(#3:List, #1:Elt, 1, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1677 A --> #5:List B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1678 A --> #5:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1679 A --> #5:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1680 A --> #5:List B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#10:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1681 A --> #5:List B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1682 A --> #5:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1683 A --> #5:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1684 A --> #5:List B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#10:List, #6:List) U --> #5:List V --> f(#3:List, #1:Elt, #4:List, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1685 A --> #6:List B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> #6:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1686 A --> #6:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #7:List) U --> #6:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #10:List) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1687 A --> #6:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #7:List) U --> #6:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #10:List) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1688 A --> #6:List B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#11:List, #7:List) U --> #6:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List), #11:List) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 1689 A --> #5:List B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1690 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1691 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1692 A --> #5:List B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#9:List, #10:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #9:List) W --> f(#10:List, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1693 A --> #5:List B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #7:List) W --> f(#8:List, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1694 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1695 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #8:List) W --> f(#9:List, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1696 A --> #5:List B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#9:List, #10:List) I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, #9:List) W --> f(#10:List, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1697 A --> #5:List B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1698 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1699 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1700 A --> #5:List B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt, 1) W --> #4:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1701 A --> #6:List B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1702 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1703 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1704 A --> #6:List B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1705 A --> #6:List B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1706 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1707 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1708 A --> #6:List B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt, #4:List) W --> #5:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1709 A --> #7:List B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1710 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1711 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1712 A --> #7:List B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt, j(#4:List, #5:List)) W --> #6:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 1713 A --> #5:List B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1714 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1715 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1716 A --> #5:List B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #1:Elt) W --> f(1, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1717 A --> #6:List B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1718 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1719 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1720 A --> #6:List B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1721 A --> #6:List B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1722 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1723 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1724 A --> #6:List B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #1:Elt) W --> f(#4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1725 A --> #7:List B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1726 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1727 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1728 A --> #7:List B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #1:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 1729 A --> #4:List B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#7:List, #1:Elt, 1, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1730 A --> #4:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, 1, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1731 A --> #4:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, 1, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1732 A --> #4:List B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> f(#5:List, #9:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#9:List, #1:Elt, 1, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1733 A --> #5:List B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1734 A --> #5:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1735 A --> #5:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1736 A --> #5:List B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> f(#6:List, #10:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1737 A --> #5:List B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1738 A --> #5:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1739 A --> #5:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1740 A --> #5:List B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> f(#6:List, #10:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #3:List, #4:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1741 A --> #6:List B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1742 A --> #6:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1743 A --> #6:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1744 A --> #6:List B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> f(#7:List, #11:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#11:List, #1:Elt, j(#3:List, #4:List), #5:List) X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 1745 A --> #5:List B --> f(#6:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1746 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1747 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #2:List) Unifier 1748 A --> #5:List B --> f(#6:List, j(#7:List, #8:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#1:Elt, 1, #4:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1749 A --> #6:List B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1750 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1751 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1752 A --> #6:List B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1753 A --> #6:List B --> f(#7:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1754 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1755 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #2:List) Unifier 1756 A --> #6:List B --> f(#7:List, j(#8:List, #9:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#1:Elt, #4:List, #5:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1757 A --> #7:List B --> f(#8:List, 1) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1758 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, #2:List) Unifier 1759 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, #2:List) Unifier 1760 A --> #7:List B --> f(#8:List, j(#9:List, #10:List)) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#1:Elt, j(#4:List, #5:List), #6:List) X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, #2:List) Unifier 1761 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> #4:List V --> f(#3:List, #2:Elt, 1, #7:List) W --> #5:List X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1762 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #6:List X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1763 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #6:List X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1764 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> #6:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) W --> #7:List X --> #1:List Z --> f(#2:Elt, #10:List) Y --> 1 S --> #8:List Unifier 1765 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> #4:List V --> f(#3:List, #2:Elt, 1, #7:List) W --> #5:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #6:List Unifier 1766 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #6:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #7:List Unifier 1767 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> #5:List V --> f(#3:List, #2:Elt, #4:List, #8:List) W --> #6:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #7:List Unifier 1768 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> #6:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) W --> #7:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #10:List) S --> #8:List Unifier 1769 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #6:List Unifier 1770 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #6:List Unifier 1771 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #6:List Unifier 1772 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, #7:List) W --> f(#8:List, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #6:List Unifier 1773 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #6:List Unifier 1774 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 1775 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 1776 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #8:List Unifier 1777 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt, 1) W --> #4:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #6:List Unifier 1778 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 1779 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt, #4:List) W --> #5:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 1780 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt, j(#4:List, #5:List)) W --> #6:List X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #8:List Unifier 1781 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #6:List Unifier 1782 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 1783 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 1784 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #8:List Unifier 1785 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#3:List, #2:Elt) W --> f(1, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #6:List Unifier 1786 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 1787 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#3:List, #2:Elt) W --> f(#4:List, #5:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 1788 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#3:List, #2:Elt) W --> f(j(#4:List, #5:List), #6:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #8:List Unifier 1789 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#7:List, #2:Elt, 1, #3:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #6:List Unifier 1790 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1791 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #7:List Unifier 1792 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List) D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> #1:List Z --> f(#2:Elt, #10:List) Y --> 1 S --> #8:List Unifier 1793 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#7:List, #2:Elt, 1, #3:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #6:List Unifier 1794 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #7:List Unifier 1795 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #2:Elt, #3:List, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #7:List Unifier 1796 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #8:List) D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #10:List) S --> #8:List Unifier 1797 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> #1:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> #6:List Unifier 1798 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 1799 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> #1:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> #7:List Unifier 1800 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> #1:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> #8:List Unifier 1801 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #3:List W --> f(#2:Elt, 1, #4:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> #6:List Unifier 1802 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 1803 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #3:List W --> f(#2:Elt, #4:List, #5:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> #7:List Unifier 1804 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #3:List W --> f(#2:Elt, j(#4:List, #5:List), #6:List) X --> #1:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> #8:List Unifier 1805 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #5:List V --> f(#4:List, #2:Elt, 1, #7:List) W --> #6:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1806 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #7:List) U --> #6:List V --> f(#4:List, #2:Elt, #5:List, #8:List) W --> #7:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1807 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #7:List) U --> #6:List V --> f(#4:List, #2:Elt, #5:List, #8:List) W --> #7:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1808 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #8:List) U --> #7:List V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #9:List) W --> #8:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1809 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #5:List V --> f(#4:List, #2:Elt, 1, #7:List) W --> #6:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1810 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #7:List) U --> #6:List V --> f(#4:List, #2:Elt, #5:List, #8:List) W --> #7:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1811 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #7:List) U --> #6:List V --> f(#4:List, #2:Elt, #5:List, #8:List) W --> #7:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1812 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #8:List) U --> #7:List V --> f(#4:List, #2:Elt, j(#5:List, #6:List), #9:List) W --> #8:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1813 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> f(#4:List, #2:Elt, #7:List) W --> f(#8:List, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1814 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> f(#4:List, #2:Elt, #7:List) W --> f(#8:List, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1815 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> #5:List U --> #6:List V --> f(#4:List, #2:Elt, #7:List) W --> f(#8:List, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1816 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> #5:List U --> #6:List V --> f(#4:List, #2:Elt, #7:List) W --> f(#8:List, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1817 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1818 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1819 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1820 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1821 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> f(#4:List, #2:Elt, 1) W --> #5:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1822 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1823 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> f(#4:List, #2:Elt, #5:List) W --> #6:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1824 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> f(#4:List, #2:Elt, j(#5:List, #6:List)) W --> #7:List X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1825 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1826 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1827 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1828 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1829 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> f(#4:List, #2:Elt) W --> f(1, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1830 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1831 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> f(#4:List, #2:Elt) W --> f(#5:List, #6:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1832 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> f(#4:List, #2:Elt) W --> f(j(#5:List, #6:List), #7:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1833 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#7:List, #2:Elt, 1, #4:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1834 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #2:Elt, #4:List, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1835 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #2:Elt, #4:List, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1836 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #8:List W --> f(#9:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1837 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#7:List, #2:Elt, 1, #4:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1838 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #2:Elt, #4:List, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1839 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #2:Elt, #4:List, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1840 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #8:List W --> f(#9:List, #2:Elt, j(#4:List, #5:List), #6:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1841 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1842 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1843 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1844 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #1:List Z --> #2:Elt Y --> 1 S --> #3:List Unifier 1845 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> #4:List W --> f(#2:Elt, 1, #5:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1846 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1847 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> #4:List W --> f(#2:Elt, #5:List, #6:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1848 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> #4:List W --> f(#2:Elt, j(#5:List, #6:List), #7:List) X --> #1:List Z --> 1 Y --> #2:Elt S --> #3:List Unifier 1849 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, 1, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 1850 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #7:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 1851 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #7:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 1852 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1853 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, 1, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 1854 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 1855 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 1856 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#11:List, j(#8:List, #9:List), #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1857 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, 1, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 1858 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 1859 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 1860 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#11:List, j(#8:List, #9:List), #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1861 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, 1, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #10:List) Z --> 1 Y --> 1 S --> #9:List Unifier 1862 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #9:List, #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) Z --> #9:List Y --> 1 S --> #10:List Unifier 1863 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #9:List, #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) Z --> 1 Y --> #9:List S --> #10:List Unifier 1864 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#12:List, j(#9:List, #10:List), #11:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #12:List) Z --> #9:List Y --> #10:List S --> #11:List Unifier 1865 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> f(#10:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #8:List) Z --> f(#9:List, #10:List) Y --> 1 S --> #7:List Unifier 1866 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> f(#10:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> f(#9:List, #10:List) S --> #7:List Unifier 1867 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> f(#10:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #8:List) Z --> f(#9:List, #10:List) Y --> 1 S --> #7:List Unifier 1868 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> f(#10:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> f(#9:List, #10:List) S --> #7:List Unifier 1869 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, 1, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> f(#9:List, #5:List) Unifier 1870 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #8:List, #10:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> #8:List Y --> 1 S --> f(#10:List, #5:List) Unifier 1871 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #8:List, #10:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> #8:List S --> f(#10:List, #5:List) Unifier 1872 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, j(#8:List, #9:List), #11:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> #9:List S --> f(#11:List, #5:List) Unifier 1873 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, 1, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> f(#9:List, #5:List) Unifier 1874 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #8:List, #10:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> #8:List Y --> 1 S --> f(#10:List, #5:List) Unifier 1875 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #8:List, #10:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> #8:List S --> f(#10:List, #5:List) Unifier 1876 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, j(#8:List, #9:List), #11:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> #9:List S --> f(#11:List, #5:List) Unifier 1877 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, 1) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #5:List Unifier 1878 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #8:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> #8:List Y --> 1 S --> #5:List Unifier 1879 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #8:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> #8:List S --> #5:List Unifier 1880 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, j(#8:List, #9:List)) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> #9:List S --> #5:List Unifier 1881 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, 1) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #5:List Unifier 1882 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #8:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> #8:List Y --> 1 S --> #5:List Unifier 1883 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #8:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> #8:List S --> #5:List Unifier 1884 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, j(#8:List, #9:List)) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> #9:List S --> #5:List Unifier 1885 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(1, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> 1 S --> #7:List Unifier 1886 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> #7:List Y --> 1 S --> #8:List Unifier 1887 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> #7:List S --> #8:List Unifier 1888 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(j(#7:List, #8:List), #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> #7:List Y --> #8:List S --> #9:List Unifier 1889 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(1, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #8:List Unifier 1890 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 1891 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 1892 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(j(#8:List, #9:List), #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1893 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(1, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #8:List Unifier 1894 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 1895 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 1896 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(j(#8:List, #9:List), #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 1897 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(1, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> 1 S --> #9:List Unifier 1898 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #9:List Y --> 1 S --> #10:List Unifier 1899 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> #9:List S --> #10:List Unifier 1900 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(j(#9:List, #10:List), #11:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #9:List Y --> #10:List S --> #11:List Unifier 1901 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt) Z --> f(1, #8:List) Y --> 1 S --> #7:List Unifier 1902 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> f(#5:List, #9:List) Y --> 1 S --> #8:List Unifier 1903 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> f(#5:List, #9:List) Y --> 1 S --> #8:List Unifier 1904 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> f(j(#5:List, #6:List), #10:List) Y --> 1 S --> #9:List Unifier 1905 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(1, #8:List) S --> #7:List Unifier 1906 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #9:List) S --> #8:List Unifier 1907 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #9:List) S --> #8:List Unifier 1908 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(j(#5:List, #6:List), #10:List) S --> #9:List Unifier 1909 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(1, #8:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#8:List, #5:List) Unifier 1910 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> f(#9:List, #5:List) Unifier 1911 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> f(#9:List, #5:List) Unifier 1912 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(j(#8:List, #9:List), #10:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> f(#10:List, #5:List) Unifier 1913 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(1, #8:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#8:List, #5:List) Unifier 1914 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> f(#9:List, #5:List) Unifier 1915 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> f(#9:List, #5:List) Unifier 1916 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(j(#8:List, #9:List), #10:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> f(#10:List, #5:List) Unifier 1917 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 1918 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> #5:List Unifier 1919 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #8:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> #5:List Unifier 1920 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #6:List) Y --> 1 S --> #7:List Unifier 1921 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> #5:List Unifier 1922 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 1923 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #9:List G --> #8:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 1924 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#9:List, #10:List) G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #10:List) Y --> #9:List S --> #6:List Unifier 1925 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #8:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> #5:List Unifier 1926 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> #9:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 1927 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> j(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 1928 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#9:List, #10:List) I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #10:List) Y --> #9:List S --> #6:List Unifier 1929 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> j(#5:List, #6:List) S --> #7:List Unifier 1930 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#9:List, #10:List) G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> #9:List Y --> j(#5:List, #10:List) S --> #6:List Unifier 1931 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#9:List, #10:List) I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> #9:List Y --> j(#5:List, #10:List) S --> #6:List Unifier 1932 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#8:List, #10:List) G --> j(#9:List, #11:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> j(#8:List, #9:List) Y --> j(#10:List, #11:List) S --> #5:List Unifier 1933 A --> f(#4:List, #5:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> 1 G --> 1 I --> f(#9:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> #5:List X --> #6:List Z --> f(#8:List, #2:Elt, 1, #9:List) Y --> 1 S --> #7:List Unifier 1934 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> #4:List G --> 1 I --> f(#10:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #2:Elt, #4:List, #10:List) Y --> 1 S --> #8:List Unifier 1935 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> 1 G --> #4:List I --> f(#10:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #2:Elt, #4:List, #10:List) Y --> 1 S --> #8:List Unifier 1936 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> #4:List G --> #5:List I --> f(#11:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#10:List, #2:Elt, j(#4:List, #5:List), #11:List) Y --> 1 S --> #9:List Unifier 1937 A --> f(#4:List, #5:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> 1 G --> 1 I --> f(#9:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, 1, #9:List) S --> #7:List Unifier 1938 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> #4:List G --> 1 I --> f(#10:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt, #4:List, #10:List) S --> #8:List Unifier 1939 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> 1 G --> #4:List I --> f(#10:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt, #4:List, #10:List) S --> #8:List Unifier 1940 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> #4:List G --> #5:List I --> f(#11:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #2:Elt, j(#4:List, #5:List), #11:List) S --> #9:List Unifier 1941 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> f(#9:List, #10:List) G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt, #9:List) Y --> 1 S --> f(#10:List, #4:List) Unifier 1942 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> f(#9:List, #10:List) G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, #9:List) S --> f(#10:List, #4:List) Unifier 1943 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> f(#9:List, #10:List) I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt, #9:List) Y --> 1 S --> f(#10:List, #4:List) Unifier 1944 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> f(#9:List, #10:List) I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, #9:List) S --> f(#10:List, #4:List) Unifier 1945 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt, 1) Y --> 1 S --> #4:List Unifier 1946 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 1947 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 1948 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> f(#10:List, #2:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 1949 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, 1) S --> #4:List Unifier 1950 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt, #4:List) S --> #5:List Unifier 1951 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt, #4:List) S --> #5:List Unifier 1952 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> f(#10:List, #2:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 1953 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(1, #4:List) Unifier 1954 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 1955 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 1956 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> f(#10:List, #2:Elt) Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 1957 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(1, #4:List) Unifier 1958 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 1959 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 1960 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> f(#10:List, #2:Elt) S --> f(j(#4:List, #5:List), #6:List) Unifier 1961 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, 1, #4:List) Unifier 1962 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, 1, #4:List) Unifier 1963 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, 1, #4:List) Unifier 1964 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, 1, #4:List) Unifier 1965 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 1966 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 1967 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 1968 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List), #11:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #2:Elt, #4:List, #5:List) Unifier 1969 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 1970 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 1971 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 1972 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List), #11:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #2:Elt, #4:List, #5:List) Unifier 1973 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, 1, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#10:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 1974 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 1975 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 1976 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, j(#10:List, #11:List), #12:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#12:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 1977 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 1978 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 1979 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, 1, #4:List) Unifier 1980 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List)) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, 1, #4:List) Unifier 1981 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 1982 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 1983 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#2:Elt, #4:List, #5:List) Unifier 1984 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List)) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#2:Elt, #4:List, #5:List) Unifier 1985 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 1986 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 1987 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#2:Elt, #4:List, #5:List) Unifier 1988 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List)) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#2:Elt, #4:List, #5:List) Unifier 1989 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, 1) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 1990 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 1991 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 1992 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, j(#10:List, #11:List)) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 1993 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #4:List Z --> f(#2:Elt, 1, #8:List) Y --> 1 S --> #7:List Unifier 1994 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #5:List, #9:List) Y --> 1 S --> #8:List Unifier 1995 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #5:List, #9:List) Y --> 1 S --> #8:List Unifier 1996 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List), #10:List) Y --> 1 S --> #9:List Unifier 1997 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #4:List Z --> 1 Y --> f(#2:Elt, 1, #8:List) S --> #7:List Unifier 1998 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #9:List) S --> #8:List Unifier 1999 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #9:List) S --> #8:List Unifier 2000 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List), #10:List) S --> #9:List Unifier 2001 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> f(#9:List, #5:List) Unifier 2002 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> f(#9:List, #5:List) Unifier 2003 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> f(#9:List, #5:List) Unifier 2004 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> f(#9:List, #5:List) Unifier 2005 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, 1) Y --> 1 S --> #5:List Unifier 2006 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 2007 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 2008 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List)) Y --> 1 S --> #7:List Unifier 2009 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, 1) S --> #5:List Unifier 2010 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 2011 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 2012 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List)) S --> #7:List Unifier 2013 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(1, #5:List) Unifier 2014 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 2015 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 2016 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(j(#5:List, #6:List), #7:List) Unifier 2017 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(1, #5:List) Unifier 2018 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 2019 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 2020 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(j(#5:List, #6:List), #7:List) Unifier 2021 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, 1, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 2022 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #7:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 2023 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #7:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 2024 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2025 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, 1, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 2026 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 2027 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 2028 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#11:List, j(#8:List, #9:List), #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 2029 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, 1, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 2030 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 2031 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 2032 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#11:List, j(#8:List, #9:List), #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 2033 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, 1, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #10:List) Z --> 1 Y --> 1 S --> #9:List Unifier 2034 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #9:List, #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) Z --> #9:List Y --> 1 S --> #10:List Unifier 2035 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #9:List, #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) Z --> 1 Y --> #9:List S --> #10:List Unifier 2036 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#12:List, j(#9:List, #10:List), #11:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #12:List) Z --> #9:List Y --> #10:List S --> #11:List Unifier 2037 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, 1, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #9:List) Z --> 1 Y --> 1 S --> #7:List Unifier 2038 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#10:List, #7:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #10:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 2039 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#10:List, #7:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #10:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 2040 A --> j(#10:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#11:List, j(#7:List, #8:List), #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1, #11:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2041 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, 1, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> 1 Y --> 1 S --> #8:List Unifier 2042 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#11:List, #8:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #11:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 2043 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#11:List, #8:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #11:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 2044 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#12:List, j(#8:List, #9:List), #10:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #12:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 2045 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, 1, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> 1 Y --> 1 S --> #8:List Unifier 2046 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#11:List, #8:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #11:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 2047 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#11:List, #8:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #11:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 2048 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#12:List, j(#8:List, #9:List), #10:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List, #12:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 2049 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, 1, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) Z --> 1 Y --> 1 S --> #9:List Unifier 2050 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#12:List, #9:List, #10:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #12:List) Z --> #9:List Y --> 1 S --> #10:List Unifier 2051 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#12:List, #9:List, #10:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #12:List) Z --> 1 Y --> #9:List S --> #10:List Unifier 2052 A --> j(#12:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#13:List, j(#9:List, #10:List), #11:List) U --> j(#12:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #13:List) Z --> #9:List Y --> #10:List S --> #11:List Unifier 2053 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> f(#10:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #8:List) Z --> f(#9:List, #10:List) Y --> 1 S --> #7:List Unifier 2054 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #10:List) G --> 1 I --> f(#11:List, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #9:List) Z --> f(#10:List, #11:List) Y --> 1 S --> #7:List Unifier 2055 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> f(#10:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> f(#9:List, #10:List) S --> #7:List Unifier 2056 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #10:List) G --> 1 I --> f(#11:List, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> f(#10:List, #11:List) S --> #7:List Unifier 2057 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> f(#10:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #8:List) Z --> f(#9:List, #10:List) Y --> 1 S --> #7:List Unifier 2058 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #10:List) I --> f(#11:List, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #9:List) Z --> f(#10:List, #11:List) Y --> 1 S --> #7:List Unifier 2059 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> f(#10:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> f(#9:List, #10:List) S --> #7:List Unifier 2060 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #10:List) I --> f(#11:List, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> f(#10:List, #11:List) S --> #7:List Unifier 2061 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, 1, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> f(#9:List, #5:List) Unifier 2062 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #8:List, #10:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> #8:List Y --> 1 S --> f(#10:List, #5:List) Unifier 2063 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #8:List, #10:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> #8:List S --> f(#10:List, #5:List) Unifier 2064 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, j(#8:List, #9:List), #11:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> #9:List S --> f(#11:List, #5:List) Unifier 2065 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, 1, #10:List) G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> f(#10:List, #5:List) Unifier 2066 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, #8:List, #11:List) G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> f(#11:List, #5:List) Unifier 2067 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, #8:List, #11:List) G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> f(#11:List, #5:List) Unifier 2068 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#11:List, j(#8:List, #9:List), #12:List) G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> f(#12:List, #5:List) Unifier 2069 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, 1, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> f(#9:List, #5:List) Unifier 2070 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #8:List, #10:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> #8:List Y --> 1 S --> f(#10:List, #5:List) Unifier 2071 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #8:List, #10:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> #8:List S --> f(#10:List, #5:List) Unifier 2072 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, j(#8:List, #9:List), #11:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> #9:List S --> f(#11:List, #5:List) Unifier 2073 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, 1, #10:List) I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> f(#10:List, #5:List) Unifier 2074 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, #8:List, #11:List) I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> f(#11:List, #5:List) Unifier 2075 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, #8:List, #11:List) I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> f(#11:List, #5:List) Unifier 2076 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#11:List, j(#8:List, #9:List), #12:List) I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> f(#12:List, #5:List) Unifier 2077 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, 1) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2078 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #8:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> #8:List Y --> 1 S --> #5:List Unifier 2079 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #8:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> #8:List S --> #5:List Unifier 2080 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, j(#8:List, #9:List)) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2081 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, 1) G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2082 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, #8:List) G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> #5:List Unifier 2083 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#10:List, #8:List) G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> #5:List Unifier 2084 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#11:List, j(#8:List, #9:List)) G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2085 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, 1) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2086 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #8:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> #8:List Y --> 1 S --> #5:List Unifier 2087 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #8:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> #8:List S --> #5:List Unifier 2088 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, j(#8:List, #9:List)) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2089 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, 1) I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #9:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2090 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, #8:List) I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> #8:List Y --> 1 S --> #5:List Unifier 2091 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#10:List, #8:List) I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #10:List) Z --> 1 Y --> #8:List S --> #5:List Unifier 2092 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#11:List, j(#8:List, #9:List)) I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #11:List) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2093 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(1, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> 1 S --> #7:List Unifier 2094 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> #7:List Y --> 1 S --> #8:List Unifier 2095 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> #7:List S --> #8:List Unifier 2096 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(j(#7:List, #8:List), #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2097 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(1, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #8:List Unifier 2098 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 2099 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 2100 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(j(#8:List, #9:List), #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 2101 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(1, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #8:List Unifier 2102 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 2103 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 2104 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(j(#8:List, #9:List), #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 2105 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(1, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> 1 S --> #9:List Unifier 2106 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #9:List Y --> 1 S --> #10:List Unifier 2107 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #10:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> #9:List S --> #10:List Unifier 2108 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(j(#9:List, #10:List), #11:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #9:List Y --> #10:List S --> #11:List Unifier 2109 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(1, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> 1 S --> #7:List Unifier 2110 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> #7:List Y --> 1 S --> #8:List Unifier 2111 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> #7:List S --> #8:List Unifier 2112 A --> j(#10:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(j(#7:List, #8:List), #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt, 1) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2113 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(1, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #8:List Unifier 2114 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 2115 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 2116 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(j(#8:List, #9:List), #10:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 2117 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(1, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #8:List Unifier 2118 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 2119 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 2120 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(j(#8:List, #9:List), #10:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt, #5:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 2121 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(1, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> 1 S --> #9:List Unifier 2122 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #10:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #9:List Y --> 1 S --> #10:List Unifier 2123 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #10:List) U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> #9:List S --> #10:List Unifier 2124 A --> j(#12:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(j(#9:List, #10:List), #11:List) U --> j(#12:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #9:List Y --> #10:List S --> #11:List Unifier 2125 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt) Z --> f(1, #8:List) Y --> 1 S --> #7:List Unifier 2126 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> f(#5:List, #9:List) Y --> 1 S --> #8:List Unifier 2127 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> f(#5:List, #9:List) Y --> 1 S --> #8:List Unifier 2128 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> f(j(#5:List, #6:List), #10:List) Y --> 1 S --> #9:List Unifier 2129 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt) Z --> f(1, #9:List) Y --> 1 S --> #7:List Unifier 2130 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> f(#5:List, #10:List) Y --> 1 S --> #8:List Unifier 2131 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> f(#5:List, #10:List) Y --> 1 S --> #8:List Unifier 2132 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> f(j(#5:List, #6:List), #11:List) Y --> 1 S --> #9:List Unifier 2133 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(1, #8:List) S --> #7:List Unifier 2134 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #9:List) S --> #8:List Unifier 2135 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #9:List) S --> #8:List Unifier 2136 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(j(#5:List, #6:List), #10:List) S --> #9:List Unifier 2137 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(1, #9:List) S --> #7:List Unifier 2138 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #10:List) S --> #8:List Unifier 2139 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #10:List) S --> #8:List Unifier 2140 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(j(#5:List, #6:List), #11:List) S --> #9:List Unifier 2141 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(1, #8:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#8:List, #5:List) Unifier 2142 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> f(#9:List, #5:List) Unifier 2143 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> f(#9:List, #5:List) Unifier 2144 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(j(#8:List, #9:List), #10:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> f(#10:List, #5:List) Unifier 2145 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(1, #9:List) G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#9:List, #5:List) Unifier 2146 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #10:List) G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> f(#10:List, #5:List) Unifier 2147 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #10:List) G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> f(#10:List, #5:List) Unifier 2148 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(j(#8:List, #9:List), #11:List) G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> f(#11:List, #5:List) Unifier 2149 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(1, #8:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#8:List, #5:List) Unifier 2150 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> f(#9:List, #5:List) Unifier 2151 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> f(#9:List, #5:List) Unifier 2152 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(j(#8:List, #9:List), #10:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> f(#10:List, #5:List) Unifier 2153 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(1, #9:List) I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#9:List, #5:List) Unifier 2154 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #10:List) I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> f(#10:List, #5:List) Unifier 2155 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #10:List) I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> f(#10:List, #5:List) Unifier 2156 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(j(#8:List, #9:List), #11:List) I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> f(#11:List, #5:List) Unifier 2157 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 2158 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> #5:List Unifier 2159 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #8:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> #5:List Unifier 2160 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #6:List) Y --> 1 S --> #7:List Unifier 2161 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> #5:List Unifier 2162 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2163 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #9:List G --> #8:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2164 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#9:List, #10:List) G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #10:List) Y --> #9:List S --> #6:List Unifier 2165 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #8:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> #5:List Unifier 2166 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> #9:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2167 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> j(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2168 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#9:List, #10:List) I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #10:List) Y --> #9:List S --> #6:List Unifier 2169 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> j(#5:List, #6:List) S --> #7:List Unifier 2170 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#9:List, #10:List) G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> #9:List Y --> j(#5:List, #10:List) S --> #6:List Unifier 2171 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#9:List, #10:List) I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> #9:List Y --> j(#5:List, #10:List) S --> #6:List Unifier 2172 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#8:List, #10:List) G --> j(#9:List, #11:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> j(#8:List, #9:List) Y --> j(#10:List, #11:List) S --> #5:List Unifier 2173 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 2174 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> #5:List Unifier 2175 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #8:List I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> 1 S --> #5:List Unifier 2176 A --> j(#10:List, f(#8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #8:List W --> #9:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #6:List) Y --> 1 S --> #7:List Unifier 2177 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> #5:List Unifier 2178 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#8:List, #9:List) G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2179 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #9:List G --> #8:List I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2180 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#9:List, #11:List) G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #11:List) Y --> #9:List S --> #6:List Unifier 2181 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #8:List I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #8:List S --> #5:List Unifier 2182 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> #9:List I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2183 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> j(#8:List, #9:List) I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> #9:List S --> #5:List Unifier 2184 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#9:List, #11:List) I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #11:List) Y --> #9:List S --> #6:List Unifier 2185 A --> j(#10:List, f(#8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #8:List W --> #9:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> j(#5:List, #6:List) S --> #7:List Unifier 2186 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#9:List, #11:List) G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> #9:List Y --> j(#5:List, #11:List) S --> #6:List Unifier 2187 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#9:List, #11:List) I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> f(#4:List, #2:Elt) Z --> #9:List Y --> j(#5:List, #11:List) S --> #6:List Unifier 2188 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#9:List, #11:List) G --> j(#10:List, #12:List) I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> f(#4:List, #2:Elt) Z --> j(#9:List, #10:List) Y --> j(#11:List, #12:List) S --> #5:List Unifier 2189 A --> f(#4:List, #5:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> 1 G --> 1 I --> f(#9:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> #5:List X --> #6:List Z --> f(#8:List, #2:Elt, 1, #9:List) Y --> 1 S --> #7:List Unifier 2190 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> #4:List G --> 1 I --> f(#10:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #2:Elt, #4:List, #10:List) Y --> 1 S --> #8:List Unifier 2191 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> 1 G --> #4:List I --> f(#10:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #2:Elt, #4:List, #10:List) Y --> 1 S --> #8:List Unifier 2192 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> #4:List G --> #5:List I --> f(#11:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#10:List, #2:Elt, j(#4:List, #5:List), #11:List) Y --> 1 S --> #9:List Unifier 2193 A --> j(#8:List, f(#4:List, #5:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #9:List) H --> 1 G --> 1 I --> f(#10:List, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> #5:List X --> #6:List Z --> f(#9:List, #2:Elt, 1, #10:List) Y --> 1 S --> #7:List Unifier 2194 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #10:List) H --> #4:List G --> 1 I --> f(#11:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> f(#10:List, #2:Elt, #4:List, #11:List) Y --> 1 S --> #8:List Unifier 2195 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #10:List) H --> 1 G --> #4:List I --> f(#11:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> f(#10:List, #2:Elt, #4:List, #11:List) Y --> 1 S --> #8:List Unifier 2196 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #11:List) H --> #4:List G --> #5:List I --> f(#12:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> f(#11:List, #2:Elt, j(#4:List, #5:List), #12:List) Y --> 1 S --> #9:List Unifier 2197 A --> f(#4:List, #5:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> 1 G --> 1 I --> f(#9:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #4:List W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, 1, #9:List) S --> #7:List Unifier 2198 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> #4:List G --> 1 I --> f(#10:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt, #4:List, #10:List) S --> #8:List Unifier 2199 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> 1 G --> #4:List I --> f(#10:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt, #4:List, #10:List) S --> #8:List Unifier 2200 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> #4:List G --> #5:List I --> f(#11:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #2:Elt, j(#4:List, #5:List), #11:List) S --> #9:List Unifier 2201 A --> j(#8:List, f(#4:List, #5:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #9:List) H --> 1 G --> 1 I --> f(#10:List, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #4:List W --> #5:List X --> #6:List Z --> 1 Y --> f(#9:List, #2:Elt, 1, #10:List) S --> #7:List Unifier 2202 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #10:List) H --> #4:List G --> 1 I --> f(#11:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#10:List, #2:Elt, #4:List, #11:List) S --> #8:List Unifier 2203 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #10:List) H --> 1 G --> #4:List I --> f(#11:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#10:List, #2:Elt, #4:List, #11:List) S --> #8:List Unifier 2204 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #11:List) H --> #4:List G --> #5:List I --> f(#12:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#11:List, #2:Elt, j(#4:List, #5:List), #12:List) S --> #9:List Unifier 2205 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> f(#9:List, #10:List) G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt, #9:List) Y --> 1 S --> f(#10:List, #4:List) Unifier 2206 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> f(#10:List, #11:List) G --> 1 I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #2:Elt, #10:List) Y --> 1 S --> f(#11:List, #4:List) Unifier 2207 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> f(#9:List, #10:List) G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, #9:List) S --> f(#10:List, #4:List) Unifier 2208 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> f(#10:List, #11:List) G --> 1 I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt, #10:List) S --> f(#11:List, #4:List) Unifier 2209 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> f(#9:List, #10:List) I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt, #9:List) Y --> 1 S --> f(#10:List, #4:List) Unifier 2210 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> 1 G --> f(#10:List, #11:List) I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #2:Elt, #10:List) Y --> 1 S --> f(#11:List, #4:List) Unifier 2211 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> f(#9:List, #10:List) I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, #9:List) S --> f(#10:List, #4:List) Unifier 2212 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> 1 G --> f(#10:List, #11:List) I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt, #10:List) S --> f(#11:List, #4:List) Unifier 2213 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt, 1) Y --> 1 S --> #4:List Unifier 2214 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 2215 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 2216 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> f(#10:List, #2:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 2217 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #2:Elt, 1) Y --> 1 S --> #4:List Unifier 2218 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> f(#10:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 2219 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> f(#10:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 2220 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> f(#11:List, #2:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 2221 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, 1) S --> #4:List Unifier 2222 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt, #4:List) S --> #5:List Unifier 2223 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt, #4:List) S --> #5:List Unifier 2224 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> f(#10:List, #2:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 2225 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt, 1) S --> #4:List Unifier 2226 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #2:Elt, #4:List) S --> #5:List Unifier 2227 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #2:Elt, #4:List) S --> #5:List Unifier 2228 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> f(#11:List, #2:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 2229 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(1, #4:List) Unifier 2230 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 2231 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> f(#9:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 2232 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> f(#10:List, #2:Elt) Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 2233 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> f(#9:List, #2:Elt) Y --> 1 S --> f(1, #4:List) Unifier 2234 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> f(#10:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 2235 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> f(#10:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 2236 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> f(#11:List, #2:Elt) Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 2237 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(1, #4:List) Unifier 2238 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 2239 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 2240 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> f(#10:List, #2:Elt) S --> f(j(#4:List, #5:List), #6:List) Unifier 2241 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt) S --> f(1, #4:List) Unifier 2242 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 2243 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> f(#10:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 2244 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> f(#11:List, #2:Elt) S --> f(j(#4:List, #5:List), #6:List) Unifier 2245 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, 1, #4:List) Unifier 2246 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, 1, #4:List) Unifier 2247 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, 1, #4:List) Unifier 2248 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, 1, #4:List) Unifier 2249 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 2250 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 2251 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 2252 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List), #11:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #2:Elt, #4:List, #5:List) Unifier 2253 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 2254 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 2255 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 2256 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List), #11:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #2:Elt, #4:List, #5:List) Unifier 2257 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, 1, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#10:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2258 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2259 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2260 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, j(#10:List, #11:List), #12:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#12:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2261 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1, #9:List) H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#9:List, #2:Elt, 1, #4:List) Unifier 2262 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #10:List) H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#10:List, #2:Elt, 1, #4:List) Unifier 2263 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #10:List) H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#10:List, #2:Elt, 1, #4:List) Unifier 2264 A --> j(#10:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List), #11:List) H --> 1 G --> 1 I --> #4:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#11:List, #2:Elt, 1, #4:List) Unifier 2265 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1, #10:List) H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 2266 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #11:List) H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#11:List, #2:Elt, #4:List, #5:List) Unifier 2267 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #11:List) H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#11:List, #2:Elt, #4:List, #5:List) Unifier 2268 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List), #12:List) H --> #4:List G --> 1 I --> #5:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#12:List, #2:Elt, #4:List, #5:List) Unifier 2269 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1, #10:List) H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 2270 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #11:List) H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#11:List, #2:Elt, #4:List, #5:List) Unifier 2271 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #11:List) H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#11:List, #2:Elt, #4:List, #5:List) Unifier 2272 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List), #12:List) H --> 1 G --> #4:List I --> #5:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#12:List, #2:Elt, #4:List, #5:List) Unifier 2273 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, 1, #11:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2274 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List, #12:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#12:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2275 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List, #12:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#12:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2276 A --> j(#12:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, j(#10:List, #11:List), #13:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#13:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2277 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 2278 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 2279 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, 1, #4:List) Unifier 2280 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List)) H --> 1 G --> 1 I --> #4:List U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, 1, #4:List) Unifier 2281 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2282 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2283 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2284 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List)) H --> #4:List G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2285 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2286 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2287 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2288 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List)) H --> 1 G --> #4:List I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2289 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, 1) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2290 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2291 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2292 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, j(#10:List, #11:List)) H --> #4:List G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2293 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1) H --> 1 G --> 1 I --> #4:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 2294 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 2295 A --> j(#9:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, 1, #4:List) Unifier 2296 A --> j(#10:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List)) H --> 1 G --> 1 I --> #4:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, 1, #4:List) Unifier 2297 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1) H --> #4:List G --> 1 I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2298 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2299 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2300 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List)) H --> #4:List G --> 1 I --> #5:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2301 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1) H --> 1 G --> #4:List I --> #5:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2302 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2303 A --> j(#10:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2304 A --> j(#11:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List)) H --> 1 G --> #4:List I --> #5:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2305 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, 1) H --> #4:List G --> #5:List I --> #6:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2306 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2307 A --> j(#11:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> j(#11:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> 1 Y --> #10:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2308 A --> j(#12:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> f(#9:List, j(#10:List, #11:List)) H --> #4:List G --> #5:List I --> #6:List U --> j(#12:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #9:List Z --> #10:List Y --> #11:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2309 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #4:List Z --> f(#2:Elt, 1, #8:List) Y --> 1 S --> #7:List Unifier 2310 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #5:List, #9:List) Y --> 1 S --> #8:List Unifier 2311 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #5:List, #9:List) Y --> 1 S --> #8:List Unifier 2312 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List), #10:List) Y --> 1 S --> #9:List Unifier 2313 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #4:List Z --> f(#2:Elt, 1, #9:List) Y --> 1 S --> #7:List Unifier 2314 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #5:List, #10:List) Y --> 1 S --> #8:List Unifier 2315 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #5:List, #10:List) Y --> 1 S --> #8:List Unifier 2316 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List), #11:List) Y --> 1 S --> #9:List Unifier 2317 A --> f(#5:List, #6:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #7:List) U --> f(#1:List, #2:Elt, #3:List) V --> #5:List W --> #6:List X --> #4:List Z --> 1 Y --> f(#2:Elt, 1, #8:List) S --> #7:List Unifier 2318 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #9:List) S --> #8:List Unifier 2319 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #8:List) U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #9:List) S --> #8:List Unifier 2320 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #9:List) U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List), #10:List) S --> #9:List Unifier 2321 A --> j(#8:List, f(#5:List, #6:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, #7:List) U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #5:List W --> #6:List X --> #4:List Z --> 1 Y --> f(#2:Elt, 1, #9:List) S --> #7:List Unifier 2322 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #10:List) S --> #8:List Unifier 2323 A --> j(#9:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, #8:List) U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #10:List) S --> #8:List Unifier 2324 A --> j(#10:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, #9:List) U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List), #11:List) S --> #9:List Unifier 2325 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> f(#9:List, #5:List) Unifier 2326 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #10:List) G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> f(#10:List, #5:List) Unifier 2327 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #9:List) G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> f(#9:List, #5:List) Unifier 2328 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, #10:List) G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> f(#10:List, #5:List) Unifier 2329 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #8:List) Y --> 1 S --> f(#9:List, #5:List) Unifier 2330 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #10:List) I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, #9:List) Y --> 1 S --> f(#10:List, #5:List) Unifier 2331 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #9:List) I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #8:List) S --> f(#9:List, #5:List) Unifier 2332 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, #10:List) I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #9:List) S --> f(#10:List, #5:List) Unifier 2333 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, 1) Y --> 1 S --> #5:List Unifier 2334 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 2335 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 2336 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List)) Y --> 1 S --> #7:List Unifier 2337 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> f(#2:Elt, 1) Y --> 1 S --> #5:List Unifier 2338 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 2339 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 2340 A --> j(#10:List, f(#8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #8:List W --> #9:List X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List)) Y --> 1 S --> #7:List Unifier 2341 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, 1) S --> #5:List Unifier 2342 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 2343 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 2344 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List)) S --> #7:List Unifier 2345 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> f(#2:Elt, 1) S --> #5:List Unifier 2346 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 2347 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 2348 A --> j(#10:List, f(#8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #8:List W --> #9:List X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List)) S --> #7:List Unifier 2349 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(1, #5:List) Unifier 2350 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 2351 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 2352 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(j(#5:List, #6:List), #7:List) Unifier 2353 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(1, #5:List) Unifier 2354 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 2355 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 2356 A --> j(#10:List, f(#8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #8:List W --> #9:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(j(#5:List, #6:List), #7:List) Unifier 2357 A --> f(#6:List, #7:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> f(#1:List, #2:Elt, #3:List) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(1, #5:List) Unifier 2358 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 2359 A --> f(#7:List, #8:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> f(#1:List, #2:Elt, #3:List) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 2360 A --> f(#8:List, #9:List) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> f(#1:List, #2:Elt, #3:List) V --> #8:List W --> #9:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(j(#5:List, #6:List), #7:List) Unifier 2361 A --> j(#8:List, f(#6:List, #7:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> j(#8:List, f(#1:List, #2:Elt, #3:List)) V --> #6:List W --> #7:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(1, #5:List) Unifier 2362 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 2363 A --> j(#9:List, f(#7:List, #8:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> j(#9:List, f(#1:List, #2:Elt, #3:List)) V --> #7:List W --> #8:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 2364 A --> j(#10:List, f(#8:List, #9:List)) B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> j(#10:List, f(#1:List, #2:Elt, #3:List)) V --> #8:List W --> #9:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(j(#5:List, #6:List), #7:List) Unifier 2365 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, 1, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> f(#3:List, #2:Elt, 1, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2366 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #4:List X --> f(#3:List, #2:Elt, 1, #7:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 2367 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #4:List X --> f(#3:List, #2:Elt, 1, #7:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 2368 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(#8:List, j(#5:List, #6:List), #7:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> f(#3:List, #2:Elt, 1, #8:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 2369 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, 1, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2370 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2371 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2372 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2373 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, 1, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2374 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2375 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2376 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2377 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, 1, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List), #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 2378 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List, #8:List) U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 2379 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List, #8:List) U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 2380 A --> 1 B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> 1 V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List), #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2381 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, 1, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2382 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #5:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1, #7:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 2383 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #5:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1, #7:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 2384 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, j(#5:List, #6:List), #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1, #8:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 2385 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, 1, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2386 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2387 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2388 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2389 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, 1, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2390 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2391 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2392 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2393 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, 1, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 2394 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #7:List, #8:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 2395 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #7:List, #8:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 2396 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2397 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, 1, #5:List) U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2398 A --> 1 B --> f(#4:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List, #6:List) U --> 1 V --> #4:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1, #7:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 2399 A --> 1 B --> f(#4:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #5:List, #6:List) U --> 1 V --> #4:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1, #7:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 2400 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#8:List, j(#5:List, #6:List), #7:List) U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1, #8:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 2401 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, 1, #6:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2402 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List, #7:List) U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2403 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #6:List, #7:List) U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2404 A --> 1 B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> 1 V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2405 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, 1, #6:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2406 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List, #7:List) U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2407 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #6:List, #7:List) U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2408 A --> 1 B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> 1 V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2409 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, 1, #7:List) U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List), #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 2410 A --> 1 B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List, #8:List) U --> 1 V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 2411 A --> 1 B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #7:List, #8:List) U --> 1 V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 2412 A --> 1 B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> 1 V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List), #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2413 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, 1, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2414 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #5:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1, #7:List) Z --> #5:List Y --> 1 S --> #6:List Unifier 2415 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #5:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1, #7:List) Z --> 1 Y --> #5:List S --> #6:List Unifier 2416 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, j(#5:List, #6:List), #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1, #8:List) Z --> #5:List Y --> #6:List S --> #7:List Unifier 2417 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, 1, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2418 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #6:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2419 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #6:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2420 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2421 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, 1, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2422 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #6:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2423 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #6:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2424 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2425 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, 1, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 2426 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #7:List, #8:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 2427 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #7:List, #8:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 2428 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2429 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> f(#3:List, #2:Elt, #6:List) Z --> f(#7:List, #8:List) Y --> 1 S --> #5:List Unifier 2430 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> f(#3:List, #2:Elt, #6:List) Z --> 1 Y --> f(#7:List, #8:List) S --> #5:List Unifier 2431 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> f(#8:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> f(#3:List, #2:Elt, #6:List) Z --> f(#7:List, #8:List) Y --> 1 S --> #5:List Unifier 2432 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> f(#8:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> f(#3:List, #2:Elt, #6:List) Z --> 1 Y --> f(#7:List, #8:List) S --> #5:List Unifier 2433 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #6:List) Z --> f(#7:List, #8:List) Y --> 1 S --> #5:List Unifier 2434 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> f(#7:List, #8:List) S --> #5:List Unifier 2435 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> f(#8:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #6:List) Z --> f(#7:List, #8:List) Y --> 1 S --> #5:List Unifier 2436 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> f(#8:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> f(#7:List, #8:List) S --> #5:List Unifier 2437 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #6:List) Z --> f(#7:List, #8:List) Y --> 1 S --> #5:List Unifier 2438 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #6:List) Z --> 1 Y --> f(#7:List, #8:List) S --> #5:List Unifier 2439 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> f(#8:List, #5:List) U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #6:List) Z --> f(#7:List, #8:List) Y --> 1 S --> #5:List Unifier 2440 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> f(#8:List, #5:List) U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #6:List) Z --> 1 Y --> f(#7:List, #8:List) S --> #5:List Unifier 2441 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #6:List) Z --> f(#7:List, #8:List) Y --> 1 S --> #5:List Unifier 2442 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> f(#8:List, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> f(#7:List, #8:List) S --> #5:List Unifier 2443 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> f(#8:List, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #6:List) Z --> f(#7:List, #8:List) Y --> 1 S --> #5:List Unifier 2444 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> f(#8:List, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> f(#7:List, #8:List) S --> #5:List Unifier 2445 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> f(#6:List, 1, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> f(#7:List, #4:List) Unifier 2446 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> f(#7:List, #6:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> f(#8:List, #4:List) Unifier 2447 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> f(#7:List, #6:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> f(#8:List, #4:List) Unifier 2448 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> f(#8:List, j(#6:List, #7:List), #9:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> f(#3:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> f(#9:List, #4:List) Unifier 2449 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> f(#6:List, 1, #7:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> f(#7:List, #4:List) Unifier 2450 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> f(#7:List, #6:List, #8:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> f(#8:List, #4:List) Unifier 2451 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> f(#7:List, #6:List, #8:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> f(#8:List, #4:List) Unifier 2452 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> 1 G --> f(#8:List, j(#6:List, #7:List), #9:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> f(#3:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> f(#9:List, #4:List) Unifier 2453 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, 1, #7:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> f(#7:List, #5:List) Unifier 2454 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #6:List, #8:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> f(#8:List, #5:List) Unifier 2455 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #6:List, #8:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> f(#8:List, #5:List) Unifier 2456 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, j(#6:List, #7:List), #9:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> f(#9:List, #5:List) Unifier 2457 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, 1, #7:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> f(#7:List, #5:List) Unifier 2458 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #6:List, #8:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> f(#8:List, #5:List) Unifier 2459 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #6:List, #8:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> f(#8:List, #5:List) Unifier 2460 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, j(#6:List, #7:List), #9:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> f(#9:List, #5:List) Unifier 2461 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, 1, #7:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #6:List) Z --> 1 Y --> 1 S --> f(#7:List, #4:List) Unifier 2462 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #6:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> #6:List Y --> 1 S --> f(#8:List, #4:List) Unifier 2463 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #6:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> 1 Y --> #6:List S --> f(#8:List, #4:List) Unifier 2464 A --> 1 B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, j(#6:List, #7:List), #9:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> #6:List Y --> #7:List S --> f(#9:List, #4:List) Unifier 2465 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, 1, #7:List) I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #6:List) Z --> 1 Y --> 1 S --> f(#7:List, #4:List) Unifier 2466 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #6:List, #8:List) I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> #6:List Y --> 1 S --> f(#8:List, #4:List) Unifier 2467 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #6:List, #8:List) I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> 1 Y --> #6:List S --> f(#8:List, #4:List) Unifier 2468 A --> 1 B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, j(#6:List, #7:List), #9:List) I --> #4:List U --> 1 V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> #6:List Y --> #7:List S --> f(#9:List, #4:List) Unifier 2469 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, 1, #7:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> f(#7:List, #5:List) Unifier 2470 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #6:List, #8:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> f(#8:List, #5:List) Unifier 2471 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #6:List, #8:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> f(#8:List, #5:List) Unifier 2472 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, j(#6:List, #7:List), #9:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> f(#9:List, #5:List) Unifier 2473 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, 1, #7:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> f(#7:List, #5:List) Unifier 2474 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #6:List, #8:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> f(#8:List, #5:List) Unifier 2475 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #6:List, #8:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> f(#8:List, #5:List) Unifier 2476 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, j(#6:List, #7:List), #9:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> f(#9:List, #5:List) Unifier 2477 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> f(#6:List, 1) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> #4:List Unifier 2478 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> f(#7:List, #6:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> #4:List Unifier 2479 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> f(#7:List, #6:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> #4:List Unifier 2480 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> f(#8:List, j(#6:List, #7:List)) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2481 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> 1 G --> f(#6:List, 1) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> #4:List Unifier 2482 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> f(#7:List, #6:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> #4:List Unifier 2483 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> f(#7:List, #6:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> #4:List Unifier 2484 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> f(#8:List, j(#6:List, #7:List)) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2485 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, 1) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2486 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #6:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> #5:List Unifier 2487 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #6:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> #5:List Unifier 2488 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, j(#6:List, #7:List)) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2489 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, 1) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2490 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #6:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> #5:List Unifier 2491 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #6:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> #5:List Unifier 2492 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, j(#6:List, #7:List)) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2493 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, 1) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #6:List) Z --> 1 Y --> 1 S --> #4:List Unifier 2494 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #6:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> #6:List Y --> 1 S --> #4:List Unifier 2495 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #6:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> 1 Y --> #6:List S --> #4:List Unifier 2496 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, j(#6:List, #7:List)) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2497 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, 1) I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #6:List) Z --> 1 Y --> 1 S --> #4:List Unifier 2498 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #6:List) I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> #6:List Y --> 1 S --> #4:List Unifier 2499 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #6:List) I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> 1 Y --> #6:List S --> #4:List Unifier 2500 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, j(#6:List, #7:List)) I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2501 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, 1) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2502 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #6:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> #5:List Unifier 2503 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #6:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> #5:List Unifier 2504 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, j(#6:List, #7:List)) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2505 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, 1) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #6:List) Z --> 1 Y --> 1 S --> #5:List Unifier 2506 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #6:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> #6:List Y --> 1 S --> #5:List Unifier 2507 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #6:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> #6:List S --> #5:List Unifier 2508 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, j(#6:List, #7:List)) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2509 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(1, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #6:List) W --> #4:List X --> f(#3:List, #2:Elt, 1) Z --> 1 Y --> 1 S --> #5:List Unifier 2510 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(#5:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> f(#3:List, #2:Elt, 1) Z --> #5:List Y --> 1 S --> #6:List Unifier 2511 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(#5:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> f(#3:List, #2:Elt, 1) Z --> 1 Y --> #5:List S --> #6:List Unifier 2512 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(j(#5:List, #6:List), #7:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #4:List X --> f(#3:List, #2:Elt, 1) Z --> #5:List Y --> #6:List S --> #7:List Unifier 2513 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(1, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2514 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(#6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2515 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(#6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2516 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(j(#6:List, #7:List), #8:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2517 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(1, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2518 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(#6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2519 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(#6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2520 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(j(#6:List, #7:List), #8:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, #4:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2521 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(1, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List)) Z --> 1 Y --> 1 S --> #7:List Unifier 2522 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#7:List, #8:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List)) Z --> #7:List Y --> 1 S --> #8:List Unifier 2523 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#7:List, #8:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List)) Z --> 1 Y --> #7:List S --> #8:List Unifier 2524 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(j(#7:List, #8:List), #9:List) U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List)) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2525 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(1, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> 1 S --> #5:List Unifier 2526 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#5:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1) Z --> #5:List Y --> 1 S --> #6:List Unifier 2527 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#5:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> #5:List S --> #6:List Unifier 2528 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(j(#5:List, #6:List), #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1) Z --> #5:List Y --> #6:List S --> #7:List Unifier 2529 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(1, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2530 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2531 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2532 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(j(#6:List, #7:List), #8:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2533 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(1, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2534 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2535 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#6:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2536 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(j(#6:List, #7:List), #8:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2537 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(1, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> 1 S --> #7:List Unifier 2538 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#7:List, #8:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #7:List Y --> 1 S --> #8:List Unifier 2539 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#7:List, #8:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> #7:List S --> #8:List Unifier 2540 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(j(#7:List, #8:List), #9:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2541 A --> 1 B --> f(#4:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(1, #5:List) U --> 1 V --> #4:List W --> f(#6:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1) Z --> 1 Y --> 1 S --> #5:List Unifier 2542 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#5:List, #6:List) U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1) Z --> #5:List Y --> 1 S --> #6:List Unifier 2543 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#5:List, #6:List) U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1) Z --> 1 Y --> #5:List S --> #6:List Unifier 2544 A --> 1 B --> f(#4:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(j(#5:List, #6:List), #7:List) U --> 1 V --> #4:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1) Z --> #5:List Y --> #6:List S --> #7:List Unifier 2545 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(1, #6:List) U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2546 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#6:List, #7:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2547 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#6:List, #7:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2548 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(j(#6:List, #7:List), #8:List) U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2549 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(1, #6:List) U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2550 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#6:List, #7:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2551 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#6:List, #7:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2552 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(j(#6:List, #7:List), #8:List) U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2553 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(1, #7:List) U --> 1 V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List)) Z --> 1 Y --> 1 S --> #7:List Unifier 2554 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#7:List, #8:List) U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List)) Z --> #7:List Y --> 1 S --> #8:List Unifier 2555 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#7:List, #8:List) U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List)) Z --> 1 Y --> #7:List S --> #8:List Unifier 2556 A --> 1 B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(j(#7:List, #8:List), #9:List) U --> 1 V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List)) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2557 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(1, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> 1 S --> #5:List Unifier 2558 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#5:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1) Z --> #5:List Y --> 1 S --> #6:List Unifier 2559 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#5:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> #5:List S --> #6:List Unifier 2560 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(j(#5:List, #6:List), #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1) Z --> #5:List Y --> #6:List S --> #7:List Unifier 2561 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(1, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2562 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#6:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2563 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#6:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2564 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(j(#6:List, #7:List), #8:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2565 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(1, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #6:List Unifier 2566 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#6:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 2567 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#6:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 2568 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(j(#6:List, #7:List), #8:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 2569 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(1, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> 1 S --> #7:List Unifier 2570 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#7:List, #8:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #7:List Y --> 1 S --> #8:List Unifier 2571 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#7:List, #8:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> #7:List S --> #8:List Unifier 2572 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(j(#7:List, #8:List), #9:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #7:List Y --> #8:List S --> #9:List Unifier 2573 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> f(#3:List, #2:Elt) Z --> f(1, #6:List) Y --> 1 S --> #5:List Unifier 2574 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> f(#4:List, #7:List) Y --> 1 S --> #6:List Unifier 2575 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> f(#4:List, #7:List) Y --> 1 S --> #6:List Unifier 2576 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> f(j(#4:List, #5:List), #8:List) Y --> 1 S --> #7:List Unifier 2577 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> f(1, #6:List) S --> #5:List Unifier 2578 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> f(#4:List, #7:List) S --> #6:List Unifier 2579 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> f(#4:List, #7:List) S --> #6:List Unifier 2580 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> f(j(#4:List, #5:List), #8:List) S --> #7:List Unifier 2581 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> f(1, #6:List) Y --> 1 S --> #5:List Unifier 2582 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> f(#5:List, #7:List) Y --> 1 S --> #6:List Unifier 2583 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> f(#5:List, #7:List) Y --> 1 S --> #6:List Unifier 2584 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> f(j(#5:List, #6:List), #8:List) Y --> 1 S --> #7:List Unifier 2585 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(1, #6:List) S --> #5:List Unifier 2586 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #7:List) S --> #6:List Unifier 2587 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #7:List) S --> #6:List Unifier 2588 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(j(#5:List, #6:List), #8:List) S --> #7:List Unifier 2589 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> f(1, #6:List) Y --> 1 S --> #5:List Unifier 2590 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> f(#4:List, #7:List) Y --> 1 S --> #6:List Unifier 2591 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #6:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> f(#4:List, #7:List) Y --> 1 S --> #6:List Unifier 2592 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #7:List) U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> f(j(#4:List, #5:List), #8:List) Y --> 1 S --> #7:List Unifier 2593 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> f(1, #6:List) S --> #5:List Unifier 2594 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> f(#4:List, #7:List) S --> #6:List Unifier 2595 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #6:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> f(#4:List, #7:List) S --> #6:List Unifier 2596 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #7:List) U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> f(j(#4:List, #5:List), #8:List) S --> #7:List Unifier 2597 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> f(1, #6:List) Y --> 1 S --> #5:List Unifier 2598 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> f(#5:List, #7:List) Y --> 1 S --> #6:List Unifier 2599 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> f(#5:List, #7:List) Y --> 1 S --> #6:List Unifier 2600 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> f(j(#5:List, #6:List), #8:List) Y --> 1 S --> #7:List Unifier 2601 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(1, #6:List) S --> #5:List Unifier 2602 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #7:List) S --> #6:List Unifier 2603 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #7:List) S --> #6:List Unifier 2604 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(j(#5:List, #6:List), #8:List) S --> #7:List Unifier 2605 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> f(1, #6:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#6:List, #4:List) Unifier 2606 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> #6:List Y --> 1 S --> f(#7:List, #4:List) Unifier 2607 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> #6:List S --> f(#7:List, #4:List) Unifier 2608 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> f(j(#6:List, #7:List), #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> #6:List Y --> #7:List S --> f(#8:List, #4:List) Unifier 2609 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> 1 G --> f(1, #6:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#6:List, #4:List) Unifier 2610 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> #6:List Y --> 1 S --> f(#7:List, #4:List) Unifier 2611 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> #6:List S --> f(#7:List, #4:List) Unifier 2612 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> f(j(#6:List, #7:List), #8:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> #6:List Y --> #7:List S --> f(#8:List, #4:List) Unifier 2613 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(1, #6:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#6:List, #5:List) Unifier 2614 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #6:List Y --> 1 S --> f(#7:List, #5:List) Unifier 2615 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #6:List S --> f(#7:List, #5:List) Unifier 2616 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(j(#6:List, #7:List), #8:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> f(#8:List, #5:List) Unifier 2617 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(1, #6:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#6:List, #5:List) Unifier 2618 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #6:List Y --> 1 S --> f(#7:List, #5:List) Unifier 2619 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #6:List S --> f(#7:List, #5:List) Unifier 2620 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(j(#6:List, #7:List), #8:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> f(#8:List, #5:List) Unifier 2621 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(1, #6:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> 1 S --> f(#6:List, #4:List) Unifier 2622 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #6:List Y --> 1 S --> f(#7:List, #4:List) Unifier 2623 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> #6:List S --> f(#7:List, #4:List) Unifier 2624 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(j(#6:List, #7:List), #8:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #6:List Y --> #7:List S --> f(#8:List, #4:List) Unifier 2625 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(1, #6:List) I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> 1 S --> f(#6:List, #4:List) Unifier 2626 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #6:List Y --> 1 S --> f(#7:List, #4:List) Unifier 2627 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> #6:List S --> f(#7:List, #4:List) Unifier 2628 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(j(#6:List, #7:List), #8:List) I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #6:List Y --> #7:List S --> f(#8:List, #4:List) Unifier 2629 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(1, #6:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#6:List, #5:List) Unifier 2630 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #6:List Y --> 1 S --> f(#7:List, #5:List) Unifier 2631 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> #6:List S --> f(#7:List, #5:List) Unifier 2632 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(j(#6:List, #7:List), #8:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> f(#8:List, #5:List) Unifier 2633 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(1, #6:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#6:List, #5:List) Unifier 2634 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #6:List Y --> 1 S --> f(#7:List, #5:List) Unifier 2635 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> #6:List S --> f(#7:List, #5:List) Unifier 2636 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(j(#6:List, #7:List), #8:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> f(#8:List, #5:List) Unifier 2637 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #6:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> 1 S --> #4:List Unifier 2638 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> #6:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> #6:List Y --> 1 S --> #4:List Unifier 2639 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> 1 G --> #6:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> #6:List Y --> 1 S --> #4:List Unifier 2640 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> f(#3:List, #2:Elt) Z --> j(#4:List, #5:List) Y --> 1 S --> #6:List Unifier 2641 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> #6:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> #6:List S --> #4:List Unifier 2642 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> j(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2643 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> #7:List G --> #6:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2644 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> j(#7:List, #9:List) G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> j(#4:List, #9:List) Y --> #7:List S --> #5:List Unifier 2645 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> 1 G --> #6:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> #6:List S --> #4:List Unifier 2646 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> #6:List G --> #7:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2647 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> j(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2648 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> #4:List G --> j(#7:List, #9:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> j(#4:List, #9:List) Y --> #7:List S --> #5:List Unifier 2649 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> j(#4:List, #5:List) S --> #6:List Unifier 2650 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> j(#7:List, #9:List) G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> j(#4:List, #9:List) S --> #5:List Unifier 2651 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> #4:List G --> j(#7:List, #9:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> j(#4:List, #9:List) S --> #5:List Unifier 2652 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> j(#7:List, #9:List) G --> j(#8:List, #10:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #6:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> j(#7:List, #8:List) Y --> j(#9:List, #10:List) S --> #4:List Unifier 2653 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 2654 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #6:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #6:List Y --> 1 S --> #5:List Unifier 2655 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #6:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #6:List Y --> 1 S --> #5:List Unifier 2656 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #6:List) Y --> 1 S --> #7:List Unifier 2657 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #6:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #6:List S --> #5:List Unifier 2658 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2659 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #7:List G --> #6:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2660 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#7:List, #8:List) G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #8:List) Y --> #7:List S --> #6:List Unifier 2661 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #6:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #6:List S --> #5:List Unifier 2662 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #6:List G --> #7:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2663 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> j(#6:List, #7:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2664 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#7:List, #8:List) I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #8:List) Y --> #7:List S --> #6:List Unifier 2665 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> j(#5:List, #6:List) S --> #7:List Unifier 2666 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#7:List, #8:List) G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> j(#5:List, #8:List) S --> #6:List Unifier 2667 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#7:List, #8:List) I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> j(#5:List, #8:List) S --> #6:List Unifier 2668 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#6:List, #8:List) G --> j(#7:List, #9:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> j(#6:List, #7:List) Y --> j(#8:List, #9:List) S --> #5:List Unifier 2669 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#6:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> 1 S --> #4:List Unifier 2670 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #6:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #6:List Y --> 1 S --> #4:List Unifier 2671 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #6:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #6:List Y --> 1 S --> #4:List Unifier 2672 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> j(#4:List, #5:List) Y --> 1 S --> #6:List Unifier 2673 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #6:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> #6:List S --> #4:List Unifier 2674 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> j(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2675 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #7:List G --> #6:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2676 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> j(#7:List, #9:List) G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> j(#4:List, #9:List) Y --> #7:List S --> #5:List Unifier 2677 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #6:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> #6:List S --> #4:List Unifier 2678 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #6:List G --> #7:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2679 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> j(#6:List, #7:List) I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #6:List Y --> #7:List S --> #4:List Unifier 2680 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> j(#7:List, #9:List) I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> j(#4:List, #9:List) Y --> #7:List S --> #5:List Unifier 2681 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> j(#4:List, #5:List) S --> #6:List Unifier 2682 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> j(#7:List, #9:List) G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> j(#4:List, #9:List) S --> #5:List Unifier 2683 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> j(#7:List, #9:List) I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> j(#4:List, #9:List) S --> #5:List Unifier 2684 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> j(#7:List, #9:List) G --> j(#8:List, #10:List) I --> #4:List U --> 1 V --> #5:List W --> f(#6:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> j(#7:List, #8:List) Y --> j(#9:List, #10:List) S --> #4:List Unifier 2685 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 2686 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #6:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #6:List Y --> 1 S --> #5:List Unifier 2687 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #6:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #6:List Y --> 1 S --> #5:List Unifier 2688 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> j(#5:List, #6:List) Y --> 1 S --> #7:List Unifier 2689 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #6:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> #6:List S --> #5:List Unifier 2690 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2691 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #7:List G --> #6:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2692 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#7:List, #8:List) G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> j(#5:List, #8:List) Y --> #7:List S --> #6:List Unifier 2693 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #6:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> #6:List S --> #5:List Unifier 2694 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #6:List G --> #7:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2695 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> j(#6:List, #7:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #6:List Y --> #7:List S --> #5:List Unifier 2696 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#7:List, #8:List) I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> j(#5:List, #8:List) Y --> #7:List S --> #6:List Unifier 2697 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> j(#5:List, #6:List) S --> #7:List Unifier 2698 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#7:List, #8:List) G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> j(#5:List, #8:List) S --> #6:List Unifier 2699 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#7:List, #8:List) I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> j(#5:List, #8:List) S --> #6:List Unifier 2700 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#6:List, #8:List) G --> j(#7:List, #9:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> j(#6:List, #7:List) Y --> j(#8:List, #9:List) S --> #5:List Unifier 2701 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #3:List) D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #3:List X --> #4:List Z --> f(#6:List, #2:Elt, 1, #7:List) Y --> 1 S --> #5:List Unifier 2702 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> f(#8:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> f(#7:List, #2:Elt, #3:List, #8:List) Y --> 1 S --> #6:List Unifier 2703 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> f(#8:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> f(#7:List, #2:Elt, #3:List, #8:List) Y --> 1 S --> #6:List Unifier 2704 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> f(#9:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> f(#8:List, #2:Elt, j(#3:List, #4:List), #9:List) Y --> 1 S --> #7:List Unifier 2705 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #3:List) D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #3:List X --> #4:List Z --> 1 Y --> f(#6:List, #2:Elt, 1, #7:List) S --> #5:List Unifier 2706 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> f(#8:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#7:List, #2:Elt, #3:List, #8:List) S --> #6:List Unifier 2707 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> f(#8:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#7:List, #2:Elt, #3:List, #8:List) S --> #6:List Unifier 2708 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> f(#9:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, j(#3:List, #4:List), #9:List) S --> #7:List Unifier 2709 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#6:List, #2:Elt, 1, #7:List) Y --> 1 S --> #5:List Unifier 2710 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> f(#7:List, #2:Elt, #4:List, #8:List) Y --> 1 S --> #6:List Unifier 2711 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> f(#7:List, #2:Elt, #4:List, #8:List) Y --> 1 S --> #6:List Unifier 2712 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#8:List, #2:Elt, j(#4:List, #5:List), #9:List) Y --> 1 S --> #7:List Unifier 2713 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#6:List, #2:Elt, 1, #7:List) S --> #5:List Unifier 2714 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> f(#7:List, #2:Elt, #4:List, #8:List) S --> #6:List Unifier 2715 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> f(#7:List, #2:Elt, #4:List, #8:List) S --> #6:List Unifier 2716 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, j(#4:List, #5:List), #9:List) S --> #7:List Unifier 2717 A --> 1 B --> f(#3:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> #3:List W --> f(#8:List, #1:Elt, #2:List) X --> #4:List Z --> f(#6:List, #1:Elt, 1, #7:List) Y --> 1 S --> #5:List Unifier 2718 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> f(#8:List, #6:List) U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> f(#7:List, #1:Elt, #3:List, #8:List) Y --> 1 S --> #6:List Unifier 2719 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> f(#8:List, #6:List) U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> f(#7:List, #1:Elt, #3:List, #8:List) Y --> 1 S --> #6:List Unifier 2720 A --> 1 B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> f(#9:List, #7:List) U --> 1 V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> f(#8:List, #1:Elt, j(#3:List, #4:List), #9:List) Y --> 1 S --> #7:List Unifier 2721 A --> 1 B --> f(#3:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> #3:List W --> f(#8:List, #1:Elt, #2:List) X --> #4:List Z --> 1 Y --> f(#6:List, #1:Elt, 1, #7:List) S --> #5:List Unifier 2722 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> #3:List G --> 1 I --> f(#8:List, #6:List) U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #3:List, #8:List) S --> #6:List Unifier 2723 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> #3:List I --> f(#8:List, #6:List) U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, #3:List, #8:List) S --> #6:List Unifier 2724 A --> 1 B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> #4:List I --> f(#9:List, #7:List) U --> 1 V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, j(#3:List, #4:List), #9:List) S --> #7:List Unifier 2725 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#6:List, #2:Elt, 1, #7:List) Y --> 1 S --> #5:List Unifier 2726 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> f(#7:List, #2:Elt, #4:List, #8:List) Y --> 1 S --> #6:List Unifier 2727 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> f(#7:List, #2:Elt, #4:List, #8:List) Y --> 1 S --> #6:List Unifier 2728 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#8:List, #2:Elt, j(#4:List, #5:List), #9:List) Y --> 1 S --> #7:List Unifier 2729 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#4:List, #6:List) H --> 1 G --> 1 I --> f(#7:List, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#6:List, #2:Elt, 1, #7:List) S --> #5:List Unifier 2730 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> #4:List G --> 1 I --> f(#8:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> f(#7:List, #2:Elt, #4:List, #8:List) S --> #6:List Unifier 2731 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> 1 G --> #4:List I --> f(#8:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> f(#7:List, #2:Elt, #4:List, #8:List) S --> #6:List Unifier 2732 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> #4:List G --> #5:List I --> f(#9:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, j(#4:List, #5:List), #9:List) S --> #7:List Unifier 2733 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, #6:List) H --> f(#7:List, #8:List) G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> f(#6:List, #2:Elt, #7:List) Y --> 1 S --> f(#8:List, #3:List) Unifier 2734 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, #6:List) H --> f(#7:List, #8:List) G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt, #7:List) S --> f(#8:List, #3:List) Unifier 2735 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, #6:List) H --> 1 G --> f(#7:List, #8:List) I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> f(#6:List, #2:Elt, #7:List) Y --> 1 S --> f(#8:List, #3:List) Unifier 2736 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, #6:List) H --> 1 G --> f(#7:List, #8:List) I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt, #7:List) S --> f(#8:List, #3:List) Unifier 2737 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> f(#6:List, #2:Elt, #7:List) Y --> 1 S --> f(#8:List, #4:List) Unifier 2738 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt, #7:List) S --> f(#8:List, #4:List) Unifier 2739 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> f(#6:List, #2:Elt, #7:List) Y --> 1 S --> f(#8:List, #4:List) Unifier 2740 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt, #7:List) S --> f(#8:List, #4:List) Unifier 2741 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List) H --> f(#7:List, #8:List) G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> f(#6:List, #1:Elt, #7:List) Y --> 1 S --> f(#8:List, #3:List) Unifier 2742 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List) H --> f(#7:List, #8:List) G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> f(#6:List, #1:Elt, #7:List) S --> f(#8:List, #3:List) Unifier 2743 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List) H --> 1 G --> f(#7:List, #8:List) I --> #3:List U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> f(#6:List, #1:Elt, #7:List) Y --> 1 S --> f(#8:List, #3:List) Unifier 2744 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List) H --> 1 G --> f(#7:List, #8:List) I --> #3:List U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> f(#6:List, #1:Elt, #7:List) S --> f(#8:List, #3:List) Unifier 2745 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> f(#6:List, #2:Elt, #7:List) Y --> 1 S --> f(#8:List, #4:List) Unifier 2746 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt, #7:List) S --> f(#8:List, #4:List) Unifier 2747 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> f(#6:List, #2:Elt, #7:List) Y --> 1 S --> f(#8:List, #4:List) Unifier 2748 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt, #7:List) S --> f(#8:List, #4:List) Unifier 2749 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> #5:List Z --> f(#6:List, #2:Elt, 1) Y --> 1 S --> #3:List Unifier 2750 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> f(#7:List, #2:Elt, #3:List) Y --> 1 S --> #4:List Unifier 2751 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> f(#7:List, #2:Elt, #3:List) Y --> 1 S --> #4:List Unifier 2752 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt, j(#3:List, #4:List)) Y --> 1 S --> #5:List Unifier 2753 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt, 1) S --> #3:List Unifier 2754 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #3:List) S --> #4:List Unifier 2755 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #3:List) S --> #4:List Unifier 2756 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, j(#3:List, #4:List)) S --> #5:List Unifier 2757 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> f(#6:List, #2:Elt, 1) Y --> 1 S --> #4:List Unifier 2758 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#7:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 2759 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#7:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 2760 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> f(#8:List, #2:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 2761 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt, 1) S --> #4:List Unifier 2762 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #4:List) S --> #5:List Unifier 2763 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #4:List) S --> #5:List Unifier 2764 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 2765 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> #5:List Z --> f(#6:List, #1:Elt, 1) Y --> 1 S --> #3:List Unifier 2766 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> f(#7:List, #1:Elt, #3:List) Y --> 1 S --> #4:List Unifier 2767 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> f(#7:List, #1:Elt, #3:List) Y --> 1 S --> #4:List Unifier 2768 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> f(#8:List, #1:Elt, j(#3:List, #4:List)) Y --> 1 S --> #5:List Unifier 2769 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> f(#6:List, #1:Elt, 1) S --> #3:List Unifier 2770 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt, #3:List) S --> #4:List Unifier 2771 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt, #3:List) S --> #4:List Unifier 2772 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt, j(#3:List, #4:List)) S --> #5:List Unifier 2773 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> f(#6:List, #2:Elt, 1) Y --> 1 S --> #4:List Unifier 2774 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#7:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 2775 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#7:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 2776 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> f(#8:List, #2:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 2777 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt, 1) S --> #4:List Unifier 2778 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #4:List) S --> #5:List Unifier 2779 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #4:List) S --> #5:List Unifier 2780 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 2781 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> #5:List Z --> f(#6:List, #2:Elt) Y --> 1 S --> f(1, #3:List) Unifier 2782 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> f(#7:List, #2:Elt) Y --> 1 S --> f(#3:List, #4:List) Unifier 2783 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> f(#7:List, #2:Elt) Y --> 1 S --> f(#3:List, #4:List) Unifier 2784 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(j(#3:List, #4:List), #5:List) Unifier 2785 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt) S --> f(1, #3:List) Unifier 2786 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt) S --> f(#3:List, #4:List) Unifier 2787 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt) S --> f(#3:List, #4:List) Unifier 2788 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(j(#3:List, #4:List), #5:List) Unifier 2789 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> f(#6:List, #2:Elt) Y --> 1 S --> f(1, #4:List) Unifier 2790 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#7:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 2791 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#7:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 2792 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 2793 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt) S --> f(1, #4:List) Unifier 2794 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 2795 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 2796 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(j(#4:List, #5:List), #6:List) Unifier 2797 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> #5:List Z --> f(#6:List, #1:Elt) Y --> 1 S --> f(1, #3:List) Unifier 2798 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> f(#3:List, #4:List) Unifier 2799 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> f(#3:List, #4:List) Unifier 2800 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> f(j(#3:List, #4:List), #5:List) Unifier 2801 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> f(#6:List, #1:Elt) S --> f(1, #3:List) Unifier 2802 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> f(#3:List, #4:List) Unifier 2803 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> f(#3:List, #4:List) Unifier 2804 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> f(j(#3:List, #4:List), #5:List) Unifier 2805 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> f(#6:List, #2:Elt) Y --> 1 S --> f(1, #4:List) Unifier 2806 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#7:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 2807 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#7:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 2808 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 2809 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> f(#6:List, #2:Elt) S --> f(1, #4:List) Unifier 2810 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 2811 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 2812 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(j(#4:List, #5:List), #6:List) Unifier 2813 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> f(#5:List, 1, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> #5:List Z --> 1 Y --> 1 S --> f(#6:List, #2:Elt, 1, #3:List) Unifier 2814 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #4:List) D --> f(#5:List, #6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #4:List X --> #5:List Z --> #6:List Y --> 1 S --> f(#7:List, #2:Elt, 1, #3:List) Unifier 2815 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #4:List) D --> f(#5:List, #6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #4:List X --> #5:List Z --> 1 Y --> #6:List S --> f(#7:List, #2:Elt, 1, #3:List) Unifier 2816 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, j(#6:List, #7:List), #8:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> #6:List Y --> #7:List S --> f(#8:List, #2:Elt, 1, #3:List) Unifier 2817 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, 1, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #2:Elt, #3:List, #4:List) Unifier 2818 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> f(#6:List, #7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #2:Elt, #3:List, #4:List) Unifier 2819 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> f(#6:List, #7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #2:Elt, #3:List, #4:List) Unifier 2820 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #2:Elt, #3:List, #4:List) Unifier 2821 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, 1, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #2:Elt, #3:List, #4:List) Unifier 2822 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> f(#6:List, #7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #2:Elt, #3:List, #4:List) Unifier 2823 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> f(#6:List, #7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #2:Elt, #3:List, #4:List) Unifier 2824 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #2:Elt, #3:List, #4:List) Unifier 2825 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, 1, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, j(#3:List, #4:List), #5:List) Unifier 2826 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> f(#7:List, #8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) Unifier 2827 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> f(#7:List, #8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) Unifier 2828 A --> 1 B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, j(#3:List, #4:List), #5:List) Unifier 2829 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, 1, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> 1 S --> f(#6:List, #2:Elt, 1, #4:List) Unifier 2830 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> #6:List Y --> 1 S --> f(#7:List, #2:Elt, 1, #4:List) Unifier 2831 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> #6:List S --> f(#7:List, #2:Elt, 1, #4:List) Unifier 2832 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, j(#6:List, #7:List), #8:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> #6:List Y --> #7:List S --> f(#8:List, #2:Elt, 1, #4:List) Unifier 2833 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #2:Elt, #4:List, #5:List) Unifier 2834 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 2835 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 2836 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 2837 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #2:Elt, #4:List, #5:List) Unifier 2838 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 2839 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 2840 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 2841 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2842 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2843 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2844 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2845 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, 1, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#6:List, #1:Elt, 1, #3:List) Unifier 2846 A --> 1 B --> f(#4:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#8:List, #1:Elt, #2:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#7:List, #1:Elt, 1, #3:List) Unifier 2847 A --> 1 B --> f(#4:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#8:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#7:List, #1:Elt, 1, #3:List) Unifier 2848 A --> 1 B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, j(#6:List, #7:List), #8:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#8:List, #1:Elt, 1, #3:List) Unifier 2849 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, 1, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #3:List, #4:List) Unifier 2850 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #3:List, #4:List) Unifier 2851 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #3:List, #4:List) Unifier 2852 A --> 1 B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #3:List, #4:List) Unifier 2853 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, 1, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, #3:List, #4:List) Unifier 2854 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, #3:List, #4:List) Unifier 2855 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, #3:List, #4:List) Unifier 2856 A --> 1 B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, #3:List, #4:List) Unifier 2857 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, 1, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, j(#3:List, #4:List), #5:List) Unifier 2858 A --> 1 B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) Unifier 2859 A --> 1 B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) Unifier 2860 A --> 1 B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, j(#3:List, #4:List), #5:List) Unifier 2861 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, 1, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#6:List, #2:Elt, 1, #4:List) Unifier 2862 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#7:List, #2:Elt, 1, #4:List) Unifier 2863 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#7:List, #2:Elt, 1, #4:List) Unifier 2864 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, j(#6:List, #7:List), #8:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#8:List, #2:Elt, 1, #4:List) Unifier 2865 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #2:Elt, #4:List, #5:List) Unifier 2866 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 2867 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 2868 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 2869 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #2:Elt, #4:List, #5:List) Unifier 2870 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 2871 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 2872 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 2873 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2874 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2875 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2876 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 2877 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #4:List) D --> f(#5:List, 1) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #6:List) W --> #4:List X --> #5:List Z --> 1 Y --> 1 S --> f(#2:Elt, 1, #3:List) Unifier 2878 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> #5:List Z --> #6:List Y --> 1 S --> f(#2:Elt, 1, #3:List) Unifier 2879 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> #5:List Z --> 1 Y --> #6:List S --> f(#2:Elt, 1, #3:List) Unifier 2880 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #4:List) D --> f(#5:List, j(#6:List, #7:List)) H --> 1 G --> 1 I --> #3:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #4:List X --> #5:List Z --> #6:List Y --> #7:List S --> f(#2:Elt, 1, #3:List) Unifier 2881 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> f(#6:List, 1) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#2:Elt, #3:List, #4:List) Unifier 2882 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#2:Elt, #3:List, #4:List) Unifier 2883 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#2:Elt, #3:List, #4:List) Unifier 2884 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> f(#6:List, j(#7:List, #8:List)) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#2:Elt, #3:List, #4:List) Unifier 2885 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> f(#6:List, 1) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#2:Elt, #3:List, #4:List) Unifier 2886 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#2:Elt, #3:List, #4:List) Unifier 2887 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#2:Elt, #3:List, #4:List) Unifier 2888 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> f(#6:List, j(#7:List, #8:List)) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#2:Elt, #3:List, #4:List) Unifier 2889 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> f(#7:List, 1) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, j(#3:List, #4:List), #5:List) Unifier 2890 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, j(#3:List, #4:List), #5:List) Unifier 2891 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, j(#3:List, #4:List), #5:List) Unifier 2892 A --> 1 B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> f(#7:List, j(#8:List, #9:List)) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, j(#3:List, #4:List), #5:List) Unifier 2893 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, 1) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 2894 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> #6:List Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 2895 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> #6:List S --> f(#2:Elt, 1, #4:List) Unifier 2896 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, j(#6:List, #7:List)) H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> #6:List Y --> #7:List S --> f(#2:Elt, 1, #4:List) Unifier 2897 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2898 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2899 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2900 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List)) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2901 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2902 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2903 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2904 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List)) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2905 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2906 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2907 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2908 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List)) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2909 A --> 1 B --> f(#4:List, #6:List) E --> #1:Elt C --> #2:List D --> f(#5:List, 1) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#6:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#1:Elt, 1, #3:List) Unifier 2910 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#1:Elt, 1, #3:List) Unifier 2911 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#1:Elt, 1, #3:List) Unifier 2912 A --> 1 B --> f(#4:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#5:List, j(#6:List, #7:List)) H --> 1 G --> 1 I --> #3:List U --> 1 V --> #4:List W --> f(#8:List, #1:Elt, #2:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#1:Elt, 1, #3:List) Unifier 2913 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#6:List, 1) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #3:List, #4:List) Unifier 2914 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #3:List, #4:List) Unifier 2915 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #3:List, #4:List) Unifier 2916 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, j(#7:List, #8:List)) H --> #3:List G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #3:List, #4:List) Unifier 2917 A --> 1 B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#6:List, 1) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, #3:List, #4:List) Unifier 2918 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, #3:List, #4:List) Unifier 2919 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, #3:List, #4:List) Unifier 2920 A --> 1 B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, j(#7:List, #8:List)) H --> 1 G --> #3:List I --> #4:List U --> 1 V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, #3:List, #4:List) Unifier 2921 A --> 1 B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#7:List, 1) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, j(#3:List, #4:List), #5:List) Unifier 2922 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, j(#3:List, #4:List), #5:List) Unifier 2923 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, j(#3:List, #4:List), #5:List) Unifier 2924 A --> 1 B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, j(#8:List, #9:List)) H --> #3:List G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, j(#3:List, #4:List), #5:List) Unifier 2925 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, 1) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 2926 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> #6:List Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 2927 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #6:List) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> #6:List S --> f(#2:Elt, 1, #4:List) Unifier 2928 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, j(#6:List, #7:List)) H --> 1 G --> 1 I --> #4:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> #6:List Y --> #7:List S --> f(#2:Elt, 1, #4:List) Unifier 2929 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2930 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2931 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2932 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List)) H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2933 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2934 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 2935 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2936 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List)) H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#2:Elt, #4:List, #5:List) Unifier 2937 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2938 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2939 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2940 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List)) H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 2941 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> #3:List Z --> f(#2:Elt, 1, #6:List) Y --> 1 S --> #5:List Unifier 2942 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #3:List Z --> f(#2:Elt, #4:List, #7:List) Y --> 1 S --> #6:List Unifier 2943 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #3:List Z --> f(#2:Elt, #4:List, #7:List) Y --> 1 S --> #6:List Unifier 2944 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #3:List Z --> f(#2:Elt, j(#4:List, #5:List), #8:List) Y --> 1 S --> #7:List Unifier 2945 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #4:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #4:List X --> #3:List Z --> 1 Y --> f(#2:Elt, 1, #6:List) S --> #5:List Unifier 2946 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #4:List, #7:List) S --> #6:List Unifier 2947 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #4:List, #7:List) S --> #6:List Unifier 2948 A --> 1 B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #3:List Z --> 1 Y --> f(#2:Elt, j(#4:List, #5:List), #8:List) S --> #7:List Unifier 2949 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, 1, #6:List) Y --> 1 S --> #5:List Unifier 2950 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #5:List, #7:List) Y --> 1 S --> #6:List Unifier 2951 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #5:List, #7:List) Y --> 1 S --> #6:List Unifier 2952 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List), #8:List) Y --> 1 S --> #7:List Unifier 2953 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, 1, #6:List) S --> #5:List Unifier 2954 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #7:List) S --> #6:List Unifier 2955 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #6:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #7:List) S --> #6:List Unifier 2956 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #7:List) U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List), #8:List) S --> #7:List Unifier 2957 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, 1, #6:List) Y --> 1 S --> #5:List Unifier 2958 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #4:List, #7:List) Y --> 1 S --> #6:List Unifier 2959 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #6:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #4:List, #7:List) Y --> 1 S --> #6:List Unifier 2960 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #7:List) U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, j(#4:List, #5:List), #8:List) Y --> 1 S --> #7:List Unifier 2961 A --> 1 B --> f(#4:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> #4:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, 1, #6:List) S --> #5:List Unifier 2962 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #4:List, #7:List) S --> #6:List Unifier 2963 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #6:List) U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #4:List, #7:List) S --> #6:List Unifier 2964 A --> 1 B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #7:List) U --> 1 V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, j(#4:List, #5:List), #8:List) S --> #7:List Unifier 2965 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, 1, #6:List) Y --> 1 S --> #5:List Unifier 2966 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #5:List, #7:List) Y --> 1 S --> #6:List Unifier 2967 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #5:List, #7:List) Y --> 1 S --> #6:List Unifier 2968 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List), #8:List) Y --> 1 S --> #7:List Unifier 2969 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #5:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, 1, #6:List) S --> #5:List Unifier 2970 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #7:List) S --> #6:List Unifier 2971 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #6:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #7:List) S --> #6:List Unifier 2972 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #7:List) U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List), #8:List) S --> #7:List Unifier 2973 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #3:List Z --> f(#2:Elt, #6:List) Y --> 1 S --> f(#7:List, #4:List) Unifier 2974 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #6:List) S --> f(#7:List, #4:List) Unifier 2975 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #3:List Z --> f(#2:Elt, #6:List) Y --> 1 S --> f(#7:List, #4:List) Unifier 2976 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #6:List) S --> f(#7:List, #4:List) Unifier 2977 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #6:List) Y --> 1 S --> f(#7:List, #5:List) Unifier 2978 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #6:List) S --> f(#7:List, #5:List) Unifier 2979 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #6:List) Y --> 1 S --> f(#7:List, #5:List) Unifier 2980 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #6:List) S --> f(#7:List, #5:List) Unifier 2981 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #6:List) Y --> 1 S --> f(#7:List, #4:List) Unifier 2982 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#6:List, #7:List) G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #6:List) S --> f(#7:List, #4:List) Unifier 2983 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #6:List) Y --> 1 S --> f(#7:List, #4:List) Unifier 2984 A --> 1 B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#6:List, #7:List) I --> #4:List U --> 1 V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #6:List) S --> f(#7:List, #4:List) Unifier 2985 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #6:List) Y --> 1 S --> f(#7:List, #5:List) Unifier 2986 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#6:List, #7:List) G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #6:List) S --> f(#7:List, #5:List) Unifier 2987 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #6:List) Y --> 1 S --> f(#7:List, #5:List) Unifier 2988 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#6:List, #7:List) I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #6:List) S --> f(#7:List, #5:List) Unifier 2989 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #6:List) W --> #5:List X --> #3:List Z --> f(#2:Elt, 1) Y --> 1 S --> #4:List Unifier 2990 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> f(#2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 2991 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> f(#2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 2992 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> f(#2:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 2993 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #6:List) W --> #5:List X --> #3:List Z --> 1 Y --> f(#2:Elt, 1) S --> #4:List Unifier 2994 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #4:List) S --> #5:List Unifier 2995 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #4:List) S --> #5:List Unifier 2996 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> 1 Y --> f(#2:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 2997 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, 1) Y --> 1 S --> #5:List Unifier 2998 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 2999 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 3000 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List)) Y --> 1 S --> #7:List Unifier 3001 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, 1) S --> #5:List Unifier 3002 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 3003 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 3004 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List)) S --> #7:List Unifier 3005 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#6:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, 1) Y --> 1 S --> #4:List Unifier 3006 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #4:List) Y --> 1 S --> #5:List Unifier 3007 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #4:List) Y --> 1 S --> #5:List Unifier 3008 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 3009 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#6:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, 1) S --> #4:List Unifier 3010 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #4:List) S --> #5:List Unifier 3011 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #4:List) S --> #5:List Unifier 3012 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 3013 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, 1) Y --> 1 S --> #5:List Unifier 3014 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 3015 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 3016 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List)) Y --> 1 S --> #7:List Unifier 3017 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, 1) S --> #5:List Unifier 3018 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 3019 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 3020 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List)) S --> #7:List Unifier 3021 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #6:List) W --> #5:List X --> #3:List Z --> #2:Elt Y --> 1 S --> f(1, #4:List) Unifier 3022 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> #2:Elt Y --> 1 S --> f(#4:List, #5:List) Unifier 3023 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> #2:Elt Y --> 1 S --> f(#4:List, #5:List) Unifier 3024 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> #2:Elt Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 3025 A --> 1 B --> #1:List E --> #2:Elt C --> f(#6:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> f(#1:List, #2:Elt, #6:List) W --> #5:List X --> #3:List Z --> 1 Y --> #2:Elt S --> f(1, #4:List) Unifier 3026 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> 1 Y --> #2:Elt S --> f(#4:List, #5:List) Unifier 3027 A --> 1 B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> 1 Y --> #2:Elt S --> f(#4:List, #5:List) Unifier 3028 A --> 1 B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> 1 Y --> #2:Elt S --> f(j(#4:List, #5:List), #6:List) Unifier 3029 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(1, #5:List) Unifier 3030 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 3031 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 3032 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(j(#5:List, #6:List), #7:List) Unifier 3033 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(1, #5:List) Unifier 3034 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 3035 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 3036 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(j(#5:List, #6:List), #7:List) Unifier 3037 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#6:List, #1:Elt, #2:List) X --> #3:List Z --> #1:Elt Y --> 1 S --> f(1, #4:List) Unifier 3038 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> #1:Elt Y --> 1 S --> f(#4:List, #5:List) Unifier 3039 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> #1:Elt Y --> 1 S --> f(#4:List, #5:List) Unifier 3040 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> #1:Elt Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 3041 A --> 1 B --> f(#5:List, #6:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> 1 V --> #5:List W --> f(#6:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> #1:Elt S --> f(1, #4:List) Unifier 3042 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> #1:Elt S --> f(#4:List, #5:List) Unifier 3043 A --> 1 B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> 1 V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> #1:Elt S --> f(#4:List, #5:List) Unifier 3044 A --> 1 B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> 1 V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> #1:Elt S --> f(j(#4:List, #5:List), #6:List) Unifier 3045 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> #2:Elt Y --> 1 S --> f(1, #5:List) Unifier 3046 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 3047 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 3048 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> #2:Elt Y --> 1 S --> f(j(#5:List, #6:List), #7:List) Unifier 3049 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> #2:Elt S --> f(1, #5:List) Unifier 3050 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 3051 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 3052 A --> 1 B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> 1 V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> #2:Elt S --> f(j(#5:List, #6:List), #7:List) Unifier 3053 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, 1, #6:List) U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, 1, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 3054 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #6:List, #7:List) U --> #4:List V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, 1, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 3055 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #6:List, #7:List) U --> #4:List V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, 1, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 3056 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> f(#3:List, #2:Elt, 1, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 3057 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, 1, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3058 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #7:List, #8:List) U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3059 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #7:List, #8:List) U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3060 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> #5:List V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3061 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, 1, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3062 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #7:List, #8:List) U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3063 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #7:List, #8:List) U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3064 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> #5:List V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3065 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, 1, #8:List) U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List), #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 3066 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #8:List, #9:List) U --> #6:List V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List), #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 3067 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #8:List, #9:List) U --> #6:List V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List), #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 3068 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#12:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#11:List, j(#8:List, #9:List), #10:List) U --> #6:List V --> f(#1:List, #2:Elt, #12:List) W --> #7:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List), #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 3069 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, 1, #6:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 3070 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #6:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 3071 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #6:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 3072 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 3073 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, 1, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3074 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #7:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3075 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #7:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3076 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3077 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, 1, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3078 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #7:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3079 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #7:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3080 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3081 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, 1, #8:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 3082 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #8:List, #9:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 3083 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #8:List, #9:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 3084 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, j(#8:List, #9:List), #10:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 3085 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, 1, #6:List) U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 3086 A --> #4:List B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #6:List, #7:List) U --> #4:List V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 3087 A --> #4:List B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#8:List, #6:List, #7:List) U --> #4:List V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 3088 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 3089 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, 1, #7:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3090 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #7:List, #8:List) U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3091 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#9:List, #7:List, #8:List) U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3092 A --> #5:List B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> #5:List V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3093 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, 1, #7:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3094 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #7:List, #8:List) U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3095 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#9:List, #7:List, #8:List) U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3096 A --> #5:List B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> #5:List V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3097 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, 1, #8:List) U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List), #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 3098 A --> #6:List B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #8:List, #9:List) U --> #6:List V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List), #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 3099 A --> #6:List B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#10:List, #8:List, #9:List) U --> #6:List V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List), #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 3100 A --> #6:List B --> f(#7:List, #12:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#11:List, j(#8:List, #9:List), #10:List) U --> #6:List V --> #7:List W --> f(#12:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List), #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 3101 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, 1, #6:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1, #7:List) Z --> 1 Y --> 1 S --> #6:List Unifier 3102 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #6:List, #7:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1, #8:List) Z --> #6:List Y --> 1 S --> #7:List Unifier 3103 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#8:List, #6:List, #7:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1, #8:List) Z --> 1 Y --> #6:List S --> #7:List Unifier 3104 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#9:List, j(#6:List, #7:List), #8:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1, #9:List) Z --> #6:List Y --> #7:List S --> #8:List Unifier 3105 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, 1, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3106 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #7:List, #8:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3107 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#9:List, #7:List, #8:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3108 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3109 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, 1, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #8:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3110 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #7:List, #8:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3111 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#9:List, #7:List, #8:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #9:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3112 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#10:List, j(#7:List, #8:List), #9:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List, #10:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3113 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, 1, #8:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #9:List) Z --> 1 Y --> 1 S --> #8:List Unifier 3114 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #8:List, #9:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #10:List) Z --> #8:List Y --> 1 S --> #9:List Unifier 3115 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#10:List, #8:List, #9:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #10:List) Z --> 1 Y --> #8:List S --> #9:List Unifier 3116 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#11:List, j(#8:List, #9:List), #10:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List), #11:List) Z --> #8:List Y --> #9:List S --> #10:List Unifier 3117 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> f(#9:List, #6:List) U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> f(#8:List, #9:List) Y --> 1 S --> #6:List Unifier 3118 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> f(#9:List, #6:List) U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> 1 Y --> f(#8:List, #9:List) S --> #6:List Unifier 3119 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> f(#9:List, #6:List) U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> f(#8:List, #9:List) Y --> 1 S --> #6:List Unifier 3120 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> f(#9:List, #6:List) U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> f(#3:List, #2:Elt, #7:List) Z --> 1 Y --> f(#8:List, #9:List) S --> #6:List Unifier 3121 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> f(#8:List, #9:List) Y --> 1 S --> #6:List Unifier 3122 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> f(#8:List, #9:List) S --> #6:List Unifier 3123 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> f(#9:List, #6:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> f(#8:List, #9:List) Y --> 1 S --> #6:List Unifier 3124 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> f(#9:List, #6:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> f(#8:List, #9:List) S --> #6:List Unifier 3125 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> f(#9:List, #6:List) U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> f(#8:List, #9:List) Y --> 1 S --> #6:List Unifier 3126 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> f(#9:List, #6:List) U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> 1 Y --> f(#8:List, #9:List) S --> #6:List Unifier 3127 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> f(#9:List, #6:List) U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> f(#8:List, #9:List) Y --> 1 S --> #6:List Unifier 3128 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> f(#9:List, #6:List) U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> 1 Y --> f(#8:List, #9:List) S --> #6:List Unifier 3129 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> f(#8:List, #9:List) Y --> 1 S --> #6:List Unifier 3130 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> f(#9:List, #6:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> f(#8:List, #9:List) S --> #6:List Unifier 3131 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> f(#9:List, #6:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> f(#8:List, #9:List) Y --> 1 S --> #6:List Unifier 3132 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> f(#9:List, #6:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> f(#8:List, #9:List) S --> #6:List Unifier 3133 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> f(#7:List, 1, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> f(#8:List, #4:List) Unifier 3134 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> f(#8:List, #7:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> f(#9:List, #4:List) Unifier 3135 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> f(#8:List, #7:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> f(#9:List, #4:List) Unifier 3136 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> f(#9:List, j(#7:List, #8:List), #10:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> f(#3:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> f(#10:List, #4:List) Unifier 3137 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, 1, #8:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> f(#8:List, #4:List) Unifier 3138 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> f(#8:List, #7:List, #9:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> f(#9:List, #4:List) Unifier 3139 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> f(#8:List, #7:List, #9:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> f(#9:List, #4:List) Unifier 3140 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> #3:List H --> 1 G --> f(#9:List, j(#7:List, #8:List), #10:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> f(#3:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> f(#10:List, #4:List) Unifier 3141 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, 1, #8:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> f(#8:List, #5:List) Unifier 3142 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #7:List, #9:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> f(#9:List, #5:List) Unifier 3143 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #7:List, #9:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> f(#9:List, #5:List) Unifier 3144 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, j(#7:List, #8:List), #10:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> f(#10:List, #5:List) Unifier 3145 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, 1, #8:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> f(#8:List, #5:List) Unifier 3146 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #7:List, #9:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> f(#9:List, #5:List) Unifier 3147 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #7:List, #9:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> f(#9:List, #5:List) Unifier 3148 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, j(#7:List, #8:List), #10:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> f(#10:List, #5:List) Unifier 3149 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, 1, #8:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> 1 Y --> 1 S --> f(#8:List, #4:List) Unifier 3150 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, #7:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> #7:List Y --> 1 S --> f(#9:List, #4:List) Unifier 3151 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, #7:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> 1 Y --> #7:List S --> f(#9:List, #4:List) Unifier 3152 A --> #5:List B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#9:List, j(#7:List, #8:List), #10:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #9:List) Z --> #7:List Y --> #8:List S --> f(#10:List, #4:List) Unifier 3153 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, 1, #8:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> 1 Y --> 1 S --> f(#8:List, #4:List) Unifier 3154 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, #7:List, #9:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> #7:List Y --> 1 S --> f(#9:List, #4:List) Unifier 3155 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, #7:List, #9:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> 1 Y --> #7:List S --> f(#9:List, #4:List) Unifier 3156 A --> #5:List B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#9:List, j(#7:List, #8:List), #10:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #9:List) Z --> #7:List Y --> #8:List S --> f(#10:List, #4:List) Unifier 3157 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, 1, #8:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> f(#8:List, #5:List) Unifier 3158 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #7:List, #9:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> f(#9:List, #5:List) Unifier 3159 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #7:List, #9:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> f(#9:List, #5:List) Unifier 3160 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, j(#7:List, #8:List), #10:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> f(#10:List, #5:List) Unifier 3161 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, 1, #8:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> f(#8:List, #5:List) Unifier 3162 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #7:List, #9:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> f(#9:List, #5:List) Unifier 3163 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #7:List, #9:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> f(#9:List, #5:List) Unifier 3164 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, j(#7:List, #8:List), #10:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> f(#10:List, #5:List) Unifier 3165 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> f(#7:List, 1) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #4:List Unifier 3166 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> f(#8:List, #7:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> #4:List Unifier 3167 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> f(#8:List, #7:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> #4:List Unifier 3168 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> f(#9:List, j(#7:List, #8:List)) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3169 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, 1) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #4:List Unifier 3170 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> f(#8:List, #7:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> #4:List Unifier 3171 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> f(#8:List, #7:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> #4:List Unifier 3172 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> f(#9:List, j(#7:List, #8:List)) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3173 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, 1) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #5:List Unifier 3174 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #7:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> #5:List Unifier 3175 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #7:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> #5:List Unifier 3176 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, j(#7:List, #8:List)) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3177 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, 1) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #5:List Unifier 3178 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #7:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> #5:List Unifier 3179 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #7:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> #5:List Unifier 3180 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, j(#7:List, #8:List)) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3181 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, 1) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> 1 Y --> 1 S --> #4:List Unifier 3182 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, #7:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> #7:List Y --> 1 S --> #4:List Unifier 3183 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#8:List, #7:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> 1 Y --> #7:List S --> #4:List Unifier 3184 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#9:List, j(#7:List, #8:List)) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #9:List) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3185 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, 1) I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #7:List) Z --> 1 Y --> 1 S --> #4:List Unifier 3186 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, #7:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> #7:List Y --> 1 S --> #4:List Unifier 3187 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#8:List, #7:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #8:List) Z --> 1 Y --> #7:List S --> #4:List Unifier 3188 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#9:List, j(#7:List, #8:List)) I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #9:List) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3189 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, 1) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #5:List Unifier 3190 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #7:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> #5:List Unifier 3191 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#8:List, #7:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> #5:List Unifier 3192 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#9:List, j(#7:List, #8:List)) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3193 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, 1) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #7:List) Z --> 1 Y --> 1 S --> #5:List Unifier 3194 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #7:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> #7:List Y --> 1 S --> #5:List Unifier 3195 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#8:List, #7:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #8:List) Z --> 1 Y --> #7:List S --> #5:List Unifier 3196 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#9:List, j(#7:List, #8:List)) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #9:List) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3197 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(1, #6:List) U --> #4:List V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> f(#3:List, #2:Elt, 1) Z --> 1 Y --> 1 S --> #6:List Unifier 3198 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #7:List) U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, 1) Z --> #6:List Y --> 1 S --> #7:List Unifier 3199 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #7:List) U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt, 1) Z --> 1 Y --> #6:List S --> #7:List Unifier 3200 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(j(#6:List, #7:List), #8:List) U --> #4:List V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> f(#3:List, #2:Elt, 1) Z --> #6:List Y --> #7:List S --> #8:List Unifier 3201 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(1, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3202 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #8:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3203 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #8:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3204 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(j(#7:List, #8:List), #9:List) U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3205 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(1, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3206 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #8:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3207 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #8:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3208 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(j(#7:List, #8:List), #9:List) U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt, #4:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3209 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(1, #8:List) U --> #6:List V --> f(#1:List, #2:Elt, #9:List) W --> #7:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List)) Z --> 1 Y --> 1 S --> #8:List Unifier 3210 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #9:List) U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List)) Z --> #8:List Y --> 1 S --> #9:List Unifier 3211 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #9:List) U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List)) Z --> 1 Y --> #8:List S --> #9:List Unifier 3212 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(j(#8:List, #9:List), #10:List) U --> #6:List V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> f(#3:List, #2:Elt, j(#4:List, #5:List)) Z --> #8:List Y --> #9:List S --> #10:List Unifier 3213 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(1, #6:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> 1 S --> #6:List Unifier 3214 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1) Z --> #6:List Y --> 1 S --> #7:List Unifier 3215 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> #6:List S --> #7:List Unifier 3216 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(j(#6:List, #7:List), #8:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, 1) Z --> #6:List Y --> #7:List S --> #8:List Unifier 3217 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(1, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3218 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3219 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3220 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(j(#7:List, #8:List), #9:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3221 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(1, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3222 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3223 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3224 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(j(#7:List, #8:List), #9:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, #5:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3225 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(1, #8:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> 1 S --> #8:List Unifier 3226 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #9:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #8:List Y --> 1 S --> #9:List Unifier 3227 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #9:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> #8:List S --> #9:List Unifier 3228 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(j(#8:List, #9:List), #10:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #8:List Y --> #9:List S --> #10:List Unifier 3229 A --> #4:List B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(1, #6:List) U --> #4:List V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1) Z --> 1 Y --> 1 S --> #6:List Unifier 3230 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #7:List) U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1) Z --> #6:List Y --> 1 S --> #7:List Unifier 3231 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#6:List, #7:List) U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1) Z --> 1 Y --> #6:List S --> #7:List Unifier 3232 A --> #4:List B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(j(#6:List, #7:List), #8:List) U --> #4:List V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, 1) Z --> #6:List Y --> #7:List S --> #8:List Unifier 3233 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(1, #7:List) U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3234 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #8:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3235 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#7:List, #8:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3236 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(j(#7:List, #8:List), #9:List) U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3237 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(1, #7:List) U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3238 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #8:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3239 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#7:List, #8:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3240 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(j(#7:List, #8:List), #9:List) U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, #4:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3241 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(1, #8:List) U --> #6:List V --> #7:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List)) Z --> 1 Y --> 1 S --> #8:List Unifier 3242 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #9:List) U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List)) Z --> #8:List Y --> 1 S --> #9:List Unifier 3243 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#8:List, #9:List) U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List)) Z --> 1 Y --> #8:List S --> #9:List Unifier 3244 A --> #6:List B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(j(#8:List, #9:List), #10:List) U --> #6:List V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt, j(#4:List, #5:List)) Z --> #8:List Y --> #9:List S --> #10:List Unifier 3245 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(1, #6:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> 1 S --> #6:List Unifier 3246 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #7:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1) Z --> #6:List Y --> 1 S --> #7:List Unifier 3247 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#6:List, #7:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1) Z --> 1 Y --> #6:List S --> #7:List Unifier 3248 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(j(#6:List, #7:List), #8:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, 1) Z --> #6:List Y --> #7:List S --> #8:List Unifier 3249 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(1, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3250 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #8:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3251 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#7:List, #8:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3252 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(j(#7:List, #8:List), #9:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3253 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(1, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> 1 S --> #7:List Unifier 3254 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #8:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> #7:List Y --> 1 S --> #8:List Unifier 3255 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#7:List, #8:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> 1 Y --> #7:List S --> #8:List Unifier 3256 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(j(#7:List, #8:List), #9:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, #5:List) Z --> #7:List Y --> #8:List S --> #9:List Unifier 3257 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(1, #8:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> 1 S --> #8:List Unifier 3258 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #9:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #8:List Y --> 1 S --> #9:List Unifier 3259 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#8:List, #9:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> 1 Y --> #8:List S --> #9:List Unifier 3260 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(j(#8:List, #9:List), #10:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt, j(#5:List, #6:List)) Z --> #8:List Y --> #9:List S --> #10:List Unifier 3261 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> f(1, #7:List) Y --> 1 S --> #6:List Unifier 3262 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> f(#4:List, #8:List) Y --> 1 S --> #7:List Unifier 3263 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> f(#4:List, #8:List) Y --> 1 S --> #7:List Unifier 3264 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> f(#3:List, #2:Elt) Z --> f(j(#4:List, #5:List), #9:List) Y --> 1 S --> #8:List Unifier 3265 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> f(1, #7:List) S --> #6:List Unifier 3266 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> f(#4:List, #8:List) S --> #7:List Unifier 3267 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> f(#4:List, #8:List) S --> #7:List Unifier 3268 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> f(j(#4:List, #5:List), #9:List) S --> #8:List Unifier 3269 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> f(1, #7:List) Y --> 1 S --> #6:List Unifier 3270 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> f(#5:List, #8:List) Y --> 1 S --> #7:List Unifier 3271 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> f(#5:List, #8:List) Y --> 1 S --> #7:List Unifier 3272 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #8:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> f(j(#5:List, #6:List), #9:List) Y --> 1 S --> #8:List Unifier 3273 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(1, #7:List) S --> #6:List Unifier 3274 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #8:List) S --> #7:List Unifier 3275 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #8:List) S --> #7:List Unifier 3276 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #8:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(j(#5:List, #6:List), #9:List) S --> #8:List Unifier 3277 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> f(1, #7:List) Y --> 1 S --> #6:List Unifier 3278 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #7:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> f(#4:List, #8:List) Y --> 1 S --> #7:List Unifier 3279 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #7:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> f(#4:List, #8:List) Y --> 1 S --> #7:List Unifier 3280 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #8:List) U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> f(j(#4:List, #5:List), #9:List) Y --> 1 S --> #8:List Unifier 3281 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> f(1, #7:List) S --> #6:List Unifier 3282 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #7:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> f(#4:List, #8:List) S --> #7:List Unifier 3283 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #7:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> f(#4:List, #8:List) S --> #7:List Unifier 3284 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #8:List) U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> f(j(#4:List, #5:List), #9:List) S --> #8:List Unifier 3285 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> f(1, #7:List) Y --> 1 S --> #6:List Unifier 3286 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> f(#5:List, #8:List) Y --> 1 S --> #7:List Unifier 3287 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> f(#5:List, #8:List) Y --> 1 S --> #7:List Unifier 3288 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #8:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> f(j(#5:List, #6:List), #9:List) Y --> 1 S --> #8:List Unifier 3289 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(1, #7:List) S --> #6:List Unifier 3290 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #8:List) S --> #7:List Unifier 3291 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(#5:List, #8:List) S --> #7:List Unifier 3292 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #8:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> f(j(#5:List, #6:List), #9:List) S --> #8:List Unifier 3293 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> f(1, #7:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#7:List, #4:List) Unifier 3294 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> 1 S --> f(#8:List, #4:List) Unifier 3295 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> #7:List S --> f(#8:List, #4:List) Unifier 3296 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> f(j(#7:List, #8:List), #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> #8:List S --> f(#9:List, #4:List) Unifier 3297 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> 1 G --> f(1, #7:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#7:List, #4:List) Unifier 3298 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> 1 S --> f(#8:List, #4:List) Unifier 3299 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> #7:List S --> f(#8:List, #4:List) Unifier 3300 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> #3:List H --> 1 G --> f(j(#7:List, #8:List), #9:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> #8:List S --> f(#9:List, #4:List) Unifier 3301 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(1, #7:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#7:List, #5:List) Unifier 3302 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> 1 S --> f(#8:List, #5:List) Unifier 3303 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #7:List S --> f(#8:List, #5:List) Unifier 3304 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(j(#7:List, #8:List), #9:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> f(#9:List, #5:List) Unifier 3305 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(1, #7:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#7:List, #5:List) Unifier 3306 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> 1 S --> f(#8:List, #5:List) Unifier 3307 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #7:List S --> f(#8:List, #5:List) Unifier 3308 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(j(#7:List, #8:List), #9:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> f(#9:List, #5:List) Unifier 3309 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(1, #7:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> 1 S --> f(#7:List, #4:List) Unifier 3310 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> 1 S --> f(#8:List, #4:List) Unifier 3311 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> #7:List S --> f(#8:List, #4:List) Unifier 3312 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(j(#7:List, #8:List), #9:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> #8:List S --> f(#9:List, #4:List) Unifier 3313 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(1, #7:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> 1 S --> f(#7:List, #4:List) Unifier 3314 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> 1 S --> f(#8:List, #4:List) Unifier 3315 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> #7:List S --> f(#8:List, #4:List) Unifier 3316 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(j(#7:List, #8:List), #9:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> #8:List S --> f(#9:List, #4:List) Unifier 3317 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(1, #7:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#7:List, #5:List) Unifier 3318 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> 1 S --> f(#8:List, #5:List) Unifier 3319 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> #7:List S --> f(#8:List, #5:List) Unifier 3320 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(j(#7:List, #8:List), #9:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> f(#9:List, #5:List) Unifier 3321 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(1, #7:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> f(#7:List, #5:List) Unifier 3322 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> 1 S --> f(#8:List, #5:List) Unifier 3323 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> #7:List S --> f(#8:List, #5:List) Unifier 3324 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(j(#7:List, #8:List), #9:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> f(#9:List, #5:List) Unifier 3325 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> 1 S --> #4:List Unifier 3326 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> #7:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> 1 S --> #4:List Unifier 3327 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> 1 G --> #7:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> 1 S --> #4:List Unifier 3328 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt, #9:List) W --> #8:List X --> f(#3:List, #2:Elt) Z --> j(#4:List, #5:List) Y --> 1 S --> #6:List Unifier 3329 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> #7:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> #7:List S --> #4:List Unifier 3330 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> j(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3331 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #8:List G --> #7:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3332 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> j(#8:List, #10:List) G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #9:List) W --> #7:List X --> f(#3:List, #2:Elt) Z --> j(#4:List, #10:List) Y --> #8:List S --> #5:List Unifier 3333 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> #3:List H --> 1 G --> #7:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> #7:List S --> #4:List Unifier 3334 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #7:List G --> #8:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3335 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> j(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3336 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> #4:List G --> j(#8:List, #10:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #9:List) W --> #7:List X --> f(#3:List, #2:Elt) Z --> j(#4:List, #10:List) Y --> #8:List S --> #5:List Unifier 3337 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt, #9:List) W --> #8:List X --> f(#3:List, #2:Elt) Z --> 1 Y --> j(#4:List, #5:List) S --> #6:List Unifier 3338 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> j(#8:List, #10:List) G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #9:List) W --> #7:List X --> f(#3:List, #2:Elt) Z --> #8:List Y --> j(#4:List, #10:List) S --> #5:List Unifier 3339 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> #3:List H --> #4:List G --> j(#8:List, #10:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #9:List) W --> #7:List X --> f(#3:List, #2:Elt) Z --> #8:List Y --> j(#4:List, #10:List) S --> #5:List Unifier 3340 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> j(#8:List, #10:List) G --> j(#9:List, #11:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> f(#3:List, #2:Elt) Z --> j(#8:List, #9:List) Y --> j(#10:List, #11:List) S --> #4:List Unifier 3341 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 3342 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #7:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> 1 S --> #5:List Unifier 3343 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #7:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> 1 S --> #5:List Unifier 3344 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #6:List) Y --> 1 S --> #7:List Unifier 3345 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #7:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #7:List S --> #5:List Unifier 3346 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3347 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> #7:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3348 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#8:List, #9:List) G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #9:List) Y --> #8:List S --> #6:List Unifier 3349 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #7:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> #7:List S --> #5:List Unifier 3350 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #7:List G --> #8:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3351 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> j(#7:List, #8:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3352 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#8:List, #9:List) I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> j(#5:List, #9:List) Y --> #8:List S --> #6:List Unifier 3353 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> 1 Y --> j(#5:List, #6:List) S --> #7:List Unifier 3354 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#8:List, #9:List) G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> j(#5:List, #9:List) S --> #6:List Unifier 3355 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#8:List, #9:List) I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> #8:List Y --> j(#5:List, #9:List) S --> #6:List Unifier 3356 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#7:List, #9:List) G --> j(#8:List, #10:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> f(#4:List, #2:Elt) Z --> j(#7:List, #8:List) Y --> j(#9:List, #10:List) S --> #5:List Unifier 3357 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> 1 S --> #4:List Unifier 3358 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #7:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> 1 S --> #4:List Unifier 3359 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #7:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> 1 S --> #4:List Unifier 3360 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #8:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> j(#4:List, #5:List) Y --> 1 S --> #6:List Unifier 3361 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #7:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> #7:List S --> #4:List Unifier 3362 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> j(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3363 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #8:List G --> #7:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3364 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> j(#8:List, #10:List) G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> j(#4:List, #10:List) Y --> #8:List S --> #5:List Unifier 3365 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #7:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> #7:List S --> #4:List Unifier 3366 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #7:List G --> #8:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3367 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> j(#7:List, #8:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #7:List Y --> #8:List S --> #4:List Unifier 3368 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> j(#8:List, #10:List) I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> j(#4:List, #10:List) Y --> #8:List S --> #5:List Unifier 3369 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #8:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> 1 Y --> j(#4:List, #5:List) S --> #6:List Unifier 3370 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> j(#8:List, #10:List) G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #8:List Y --> j(#4:List, #10:List) S --> #5:List Unifier 3371 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> j(#8:List, #10:List) I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> #8:List Y --> j(#4:List, #10:List) S --> #5:List Unifier 3372 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> j(#8:List, #10:List) G --> j(#9:List, #11:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> f(#3:List, #1:Elt) Z --> j(#8:List, #9:List) Y --> j(#10:List, #11:List) S --> #4:List Unifier 3373 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> 1 S --> #5:List Unifier 3374 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #7:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> 1 S --> #5:List Unifier 3375 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #7:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> 1 S --> #5:List Unifier 3376 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> j(#5:List, #6:List) Y --> 1 S --> #7:List Unifier 3377 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #7:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> #7:List S --> #5:List Unifier 3378 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3379 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #8:List G --> #7:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3380 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#8:List, #9:List) G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> j(#5:List, #9:List) Y --> #8:List S --> #6:List Unifier 3381 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #7:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> #7:List S --> #5:List Unifier 3382 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #7:List G --> #8:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3383 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> j(#7:List, #8:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #7:List Y --> #8:List S --> #5:List Unifier 3384 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#8:List, #9:List) I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> j(#5:List, #9:List) Y --> #8:List S --> #6:List Unifier 3385 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> 1 Y --> j(#5:List, #6:List) S --> #7:List Unifier 3386 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#8:List, #9:List) G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #8:List Y --> j(#5:List, #9:List) S --> #6:List Unifier 3387 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> j(#8:List, #9:List) I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> #8:List Y --> j(#5:List, #9:List) S --> #6:List Unifier 3388 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> j(#7:List, #9:List) G --> j(#8:List, #10:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> f(#4:List, #2:Elt) Z --> j(#7:List, #8:List) Y --> j(#9:List, #10:List) S --> #5:List Unifier 3389 A --> #3:List B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> f(#8:List, #6:List) U --> #3:List V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> f(#7:List, #2:Elt, 1, #8:List) Y --> 1 S --> #6:List Unifier 3390 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> f(#9:List, #7:List) U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> f(#8:List, #2:Elt, #3:List, #9:List) Y --> 1 S --> #7:List Unifier 3391 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> f(#9:List, #7:List) U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> f(#8:List, #2:Elt, #3:List, #9:List) Y --> 1 S --> #7:List Unifier 3392 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> f(#10:List, #8:List) U --> #5:List V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> f(#9:List, #2:Elt, j(#3:List, #4:List), #10:List) Y --> 1 S --> #8:List Unifier 3393 A --> #3:List B --> #1:List E --> #2:Elt C --> f(#9:List, #4:List) D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> f(#8:List, #6:List) U --> #3:List V --> f(#1:List, #2:Elt, #9:List) W --> #4:List X --> #5:List Z --> 1 Y --> f(#7:List, #2:Elt, 1, #8:List) S --> #6:List Unifier 3394 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> f(#9:List, #7:List) U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, #3:List, #9:List) S --> #7:List Unifier 3395 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> f(#9:List, #7:List) U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, #3:List, #9:List) S --> #7:List Unifier 3396 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> f(#10:List, #8:List) U --> #5:List V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt, j(#3:List, #4:List), #10:List) S --> #8:List Unifier 3397 A --> #4:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> f(#8:List, #6:List) U --> #4:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> f(#7:List, #2:Elt, 1, #8:List) Y --> 1 S --> #6:List Unifier 3398 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> #4:List G --> 1 I --> f(#9:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#8:List, #2:Elt, #4:List, #9:List) Y --> 1 S --> #7:List Unifier 3399 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> 1 G --> #4:List I --> f(#9:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#8:List, #2:Elt, #4:List, #9:List) Y --> 1 S --> #7:List Unifier 3400 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> #4:List G --> #5:List I --> f(#10:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> f(#9:List, #2:Elt, j(#4:List, #5:List), #10:List) Y --> 1 S --> #8:List Unifier 3401 A --> #4:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> f(#8:List, #6:List) U --> #4:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #5:List Z --> 1 Y --> f(#7:List, #2:Elt, 1, #8:List) S --> #6:List Unifier 3402 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> #4:List G --> 1 I --> f(#9:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, #4:List, #9:List) S --> #7:List Unifier 3403 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> 1 G --> #4:List I --> f(#9:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, #4:List, #9:List) S --> #7:List Unifier 3404 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> #4:List G --> #5:List I --> f(#10:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt, j(#4:List, #5:List), #10:List) S --> #8:List Unifier 3405 A --> #3:List B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> f(#8:List, #6:List) U --> #3:List V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> f(#7:List, #1:Elt, 1, #8:List) Y --> 1 S --> #6:List Unifier 3406 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> f(#9:List, #7:List) U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> f(#8:List, #1:Elt, #3:List, #9:List) Y --> 1 S --> #7:List Unifier 3407 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> f(#9:List, #7:List) U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> f(#8:List, #1:Elt, #3:List, #9:List) Y --> 1 S --> #7:List Unifier 3408 A --> #5:List B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> f(#10:List, #8:List) U --> #5:List V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> f(#9:List, #1:Elt, j(#3:List, #4:List), #10:List) Y --> 1 S --> #8:List Unifier 3409 A --> #3:List B --> f(#4:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> f(#8:List, #6:List) U --> #3:List V --> #4:List W --> f(#9:List, #1:Elt, #2:List) X --> #5:List Z --> 1 Y --> f(#7:List, #1:Elt, 1, #8:List) S --> #6:List Unifier 3410 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> #3:List G --> 1 I --> f(#9:List, #7:List) U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #3:List, #9:List) S --> #7:List Unifier 3411 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #8:List) H --> 1 G --> #3:List I --> f(#9:List, #7:List) U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#8:List, #1:Elt, #3:List, #9:List) S --> #7:List Unifier 3412 A --> #5:List B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #9:List) H --> #3:List G --> #4:List I --> f(#10:List, #8:List) U --> #5:List V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> f(#9:List, #1:Elt, j(#3:List, #4:List), #10:List) S --> #8:List Unifier 3413 A --> #4:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> f(#8:List, #6:List) U --> #4:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> f(#7:List, #2:Elt, 1, #8:List) Y --> 1 S --> #6:List Unifier 3414 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> #4:List G --> 1 I --> f(#9:List, #7:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#8:List, #2:Elt, #4:List, #9:List) Y --> 1 S --> #7:List Unifier 3415 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> 1 G --> #4:List I --> f(#9:List, #7:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#8:List, #2:Elt, #4:List, #9:List) Y --> 1 S --> #7:List Unifier 3416 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> #4:List G --> #5:List I --> f(#10:List, #8:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> f(#9:List, #2:Elt, j(#4:List, #5:List), #10:List) Y --> 1 S --> #8:List Unifier 3417 A --> #4:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#5:List, #7:List) H --> 1 G --> 1 I --> f(#8:List, #6:List) U --> #4:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #5:List Z --> 1 Y --> f(#7:List, #2:Elt, 1, #8:List) S --> #6:List Unifier 3418 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> #4:List G --> 1 I --> f(#9:List, #7:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, #4:List, #9:List) S --> #7:List Unifier 3419 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #8:List) H --> 1 G --> #4:List I --> f(#9:List, #7:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#8:List, #2:Elt, #4:List, #9:List) S --> #7:List Unifier 3420 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #9:List) H --> #4:List G --> #5:List I --> f(#10:List, #8:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> f(#9:List, #2:Elt, j(#4:List, #5:List), #10:List) S --> #8:List Unifier 3421 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, #7:List) H --> f(#8:List, #9:List) G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> f(#7:List, #2:Elt, #8:List) Y --> 1 S --> f(#9:List, #3:List) Unifier 3422 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, #7:List) H --> f(#8:List, #9:List) G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #8:List) S --> f(#9:List, #3:List) Unifier 3423 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> f(#8:List, #9:List) I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> f(#7:List, #2:Elt, #8:List) Y --> 1 S --> f(#9:List, #3:List) Unifier 3424 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> f(#8:List, #9:List) I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #8:List) S --> f(#9:List, #3:List) Unifier 3425 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#7:List, #2:Elt, #8:List) Y --> 1 S --> f(#9:List, #4:List) Unifier 3426 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #8:List) S --> f(#9:List, #4:List) Unifier 3427 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#7:List, #2:Elt, #8:List) Y --> 1 S --> f(#9:List, #4:List) Unifier 3428 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #8:List) S --> f(#9:List, #4:List) Unifier 3429 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> f(#8:List, #9:List) G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> f(#9:List, #3:List) Unifier 3430 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> f(#8:List, #9:List) G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> f(#9:List, #3:List) Unifier 3431 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> f(#8:List, #9:List) I --> #3:List U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> f(#7:List, #1:Elt, #8:List) Y --> 1 S --> f(#9:List, #3:List) Unifier 3432 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> f(#8:List, #9:List) I --> #3:List U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt, #8:List) S --> f(#9:List, #3:List) Unifier 3433 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#7:List, #2:Elt, #8:List) Y --> 1 S --> f(#9:List, #4:List) Unifier 3434 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> f(#8:List, #9:List) G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #8:List) S --> f(#9:List, #4:List) Unifier 3435 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#7:List, #2:Elt, #8:List) Y --> 1 S --> f(#9:List, #4:List) Unifier 3436 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> f(#8:List, #9:List) I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, #8:List) S --> f(#9:List, #4:List) Unifier 3437 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> f(#7:List, #2:Elt, 1) Y --> 1 S --> #3:List Unifier 3438 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt, #3:List) Y --> 1 S --> #4:List Unifier 3439 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt, #3:List) Y --> 1 S --> #4:List Unifier 3440 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #8:List Z --> f(#9:List, #2:Elt, j(#3:List, #4:List)) Y --> 1 S --> #5:List Unifier 3441 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, 1) S --> #3:List Unifier 3442 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, #3:List) S --> #4:List Unifier 3443 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, #3:List) S --> #4:List Unifier 3444 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt, j(#3:List, #4:List)) S --> #5:List Unifier 3445 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#7:List, #2:Elt, 1) Y --> 1 S --> #4:List Unifier 3446 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> f(#8:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 3447 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> f(#8:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 3448 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> f(#9:List, #2:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 3449 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, 1) S --> #4:List Unifier 3450 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, #4:List) S --> #5:List Unifier 3451 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, #4:List) S --> #5:List Unifier 3452 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 3453 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> f(#7:List, #1:Elt, 1) Y --> 1 S --> #3:List Unifier 3454 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> f(#8:List, #1:Elt, #3:List) Y --> 1 S --> #4:List Unifier 3455 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> f(#8:List, #1:Elt, #3:List) Y --> 1 S --> #4:List Unifier 3456 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #8:List Z --> f(#9:List, #1:Elt, j(#3:List, #4:List)) Y --> 1 S --> #5:List Unifier 3457 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt, 1) S --> #3:List Unifier 3458 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt, #3:List) S --> #4:List Unifier 3459 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt, #3:List) S --> #4:List Unifier 3460 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> f(#9:List, #1:Elt, j(#3:List, #4:List)) S --> #5:List Unifier 3461 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#7:List, #2:Elt, 1) Y --> 1 S --> #4:List Unifier 3462 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> f(#8:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 3463 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> f(#8:List, #2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 3464 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> f(#9:List, #2:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 3465 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt, 1) S --> #4:List Unifier 3466 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, #4:List) S --> #5:List Unifier 3467 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt, #4:List) S --> #5:List Unifier 3468 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 3469 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> f(#7:List, #2:Elt) Y --> 1 S --> f(1, #3:List) Unifier 3470 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(#3:List, #4:List) Unifier 3471 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(#3:List, #4:List) Unifier 3472 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #8:List Z --> f(#9:List, #2:Elt) Y --> 1 S --> f(j(#3:List, #4:List), #5:List) Unifier 3473 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt) S --> f(1, #3:List) Unifier 3474 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(#3:List, #4:List) Unifier 3475 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(#3:List, #4:List) Unifier 3476 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt) S --> f(j(#3:List, #4:List), #5:List) Unifier 3477 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> f(#7:List, #2:Elt) Y --> 1 S --> f(1, #4:List) Unifier 3478 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 3479 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 3480 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> f(#9:List, #2:Elt) Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 3481 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt) S --> f(1, #4:List) Unifier 3482 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 3483 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 3484 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt) S --> f(j(#4:List, #5:List), #6:List) Unifier 3485 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> f(#7:List, #1:Elt) Y --> 1 S --> f(1, #3:List) Unifier 3486 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> f(#3:List, #4:List) Unifier 3487 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> f(#8:List, #1:Elt) Y --> 1 S --> f(#3:List, #4:List) Unifier 3488 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #8:List Z --> f(#9:List, #1:Elt) Y --> 1 S --> f(j(#3:List, #4:List), #5:List) Unifier 3489 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> f(#7:List, #1:Elt) S --> f(1, #3:List) Unifier 3490 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> f(#3:List, #4:List) Unifier 3491 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> f(#8:List, #1:Elt) S --> f(#3:List, #4:List) Unifier 3492 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> f(#9:List, #1:Elt) S --> f(j(#3:List, #4:List), #5:List) Unifier 3493 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> f(#7:List, #2:Elt) Y --> 1 S --> f(1, #4:List) Unifier 3494 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 3495 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> f(#8:List, #2:Elt) Y --> 1 S --> f(#4:List, #5:List) Unifier 3496 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> f(#9:List, #2:Elt) Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 3497 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> f(#7:List, #2:Elt) S --> f(1, #4:List) Unifier 3498 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 3499 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> f(#8:List, #2:Elt) S --> f(#4:List, #5:List) Unifier 3500 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> f(#9:List, #2:Elt) S --> f(j(#4:List, #5:List), #6:List) Unifier 3501 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, 1, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #2:Elt, 1, #3:List) Unifier 3502 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> f(#6:List, #7:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #2:Elt, 1, #3:List) Unifier 3503 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> f(#6:List, #7:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #2:Elt, 1, #3:List) Unifier 3504 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#10:List, #5:List) D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #10:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #2:Elt, 1, #3:List) Unifier 3505 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, 1, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, #3:List, #4:List) Unifier 3506 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> f(#7:List, #8:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, #3:List, #4:List) Unifier 3507 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> f(#7:List, #8:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, #3:List, #4:List) Unifier 3508 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, #3:List, #4:List) Unifier 3509 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, 1, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, #3:List, #4:List) Unifier 3510 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> f(#7:List, #8:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, #3:List, #4:List) Unifier 3511 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> f(#7:List, #8:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, #3:List, #4:List) Unifier 3512 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#11:List, #6:List) D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #11:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, #3:List, #4:List) Unifier 3513 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> f(#8:List, 1, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #2:Elt, j(#3:List, #4:List), #5:List) Unifier 3514 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> f(#8:List, #9:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #2:Elt, j(#3:List, #4:List), #5:List) Unifier 3515 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> f(#8:List, #9:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #2:Elt, j(#3:List, #4:List), #5:List) Unifier 3516 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#12:List, #7:List) D --> f(#8:List, j(#9:List, #10:List), #11:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #12:List) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #2:Elt, j(#3:List, #4:List), #5:List) Unifier 3517 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #2:Elt, 1, #4:List) Unifier 3518 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #2:Elt, 1, #4:List) Unifier 3519 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #2:Elt, 1, #4:List) Unifier 3520 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #2:Elt, 1, #4:List) Unifier 3521 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 3522 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 3523 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 3524 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 3525 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 3526 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 3527 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 3528 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 3529 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 3530 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 3531 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 3532 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List), #11:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 3533 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, 1, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #1:Elt, 1, #3:List) Unifier 3534 A --> #4:List B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #1:Elt, 1, #3:List) Unifier 3535 A --> #4:List B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #1:Elt, 1, #3:List) Unifier 3536 A --> #4:List B --> f(#5:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#10:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #1:Elt, 1, #3:List) Unifier 3537 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, 1, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #3:List, #4:List) Unifier 3538 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #3:List, #4:List) Unifier 3539 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List, #9:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #3:List, #4:List) Unifier 3540 A --> #5:List B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #3:List, #4:List) Unifier 3541 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, 1, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #1:Elt, #3:List, #4:List) Unifier 3542 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #1:Elt, #3:List, #4:List) Unifier 3543 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List, #9:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #1:Elt, #3:List, #4:List) Unifier 3544 A --> #5:List B --> f(#6:List, #11:List) E --> #1:Elt C --> #2:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#11:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #1:Elt, #3:List, #4:List) Unifier 3545 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#8:List, 1, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #1:Elt, j(#3:List, #4:List), #5:List) Unifier 3546 A --> #6:List B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> f(#8:List, #9:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #1:Elt, j(#3:List, #4:List), #5:List) Unifier 3547 A --> #6:List B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> f(#8:List, #9:List, #10:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #1:Elt, j(#3:List, #4:List), #5:List) Unifier 3548 A --> #6:List B --> f(#7:List, #12:List) E --> #1:Elt C --> #2:List D --> f(#8:List, j(#9:List, #10:List), #11:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#12:List, #1:Elt, #2:List) X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #1:Elt, j(#3:List, #4:List), #5:List) Unifier 3549 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#7:List, #2:Elt, 1, #4:List) Unifier 3550 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#8:List, #2:Elt, 1, #4:List) Unifier 3551 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List, #8:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#8:List, #2:Elt, 1, #4:List) Unifier 3552 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List), #9:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#9:List, #2:Elt, 1, #4:List) Unifier 3553 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 3554 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 3555 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 3556 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 3557 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#8:List, #2:Elt, #4:List, #5:List) Unifier 3558 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 3559 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List, #9:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#9:List, #2:Elt, #4:List, #5:List) Unifier 3560 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List), #10:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#10:List, #2:Elt, #4:List, #5:List) Unifier 3561 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> 1 S --> f(#9:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 3562 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> #9:List Y --> 1 S --> f(#10:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 3563 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List, #10:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> #9:List S --> f(#10:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 3564 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List), #11:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> #9:List Y --> #10:List S --> f(#11:List, #2:Elt, j(#4:List, #5:List), #6:List) Unifier 3565 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#7:List, #5:List) D --> f(#6:List, 1) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #7:List) W --> #5:List X --> #6:List Z --> 1 Y --> 1 S --> f(#2:Elt, 1, #3:List) Unifier 3566 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#2:Elt, 1, #3:List) Unifier 3567 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#2:Elt, 1, #3:List) Unifier 3568 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#9:List, #5:List) D --> f(#6:List, j(#7:List, #8:List)) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> f(#1:List, #2:Elt, #9:List) W --> #5:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#2:Elt, 1, #3:List) Unifier 3569 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> f(#7:List, 1) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, #3:List, #4:List) Unifier 3570 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, #3:List, #4:List) Unifier 3571 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, #3:List, #4:List) Unifier 3572 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> f(#7:List, j(#8:List, #9:List)) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, #3:List, #4:List) Unifier 3573 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#8:List, #6:List) D --> f(#7:List, 1) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #8:List) W --> #6:List X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, #3:List, #4:List) Unifier 3574 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, #3:List, #4:List) Unifier 3575 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, #3:List, #4:List) Unifier 3576 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#10:List, #6:List) D --> f(#7:List, j(#8:List, #9:List)) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #10:List) W --> #6:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, #3:List, #4:List) Unifier 3577 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#9:List, #7:List) D --> f(#8:List, 1) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #9:List) W --> #7:List X --> #8:List Z --> 1 Y --> 1 S --> f(#2:Elt, j(#3:List, #4:List), #5:List) Unifier 3578 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#2:Elt, j(#3:List, #4:List), #5:List) Unifier 3579 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#2:Elt, j(#3:List, #4:List), #5:List) Unifier 3580 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#11:List, #7:List) D --> f(#8:List, j(#9:List, #10:List)) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #11:List) W --> #7:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#2:Elt, j(#3:List, #4:List), #5:List) Unifier 3581 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 3582 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 3583 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> 1 Y --> #7:List S --> f(#2:Elt, 1, #4:List) Unifier 3584 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List)) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #6:List Z --> #7:List Y --> #8:List S --> f(#2:Elt, 1, #4:List) Unifier 3585 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 3586 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 3587 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, #4:List, #5:List) Unifier 3588 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List)) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, #4:List, #5:List) Unifier 3589 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 3590 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 3591 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, #4:List, #5:List) Unifier 3592 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List)) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, #4:List, #5:List) Unifier 3593 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 3594 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> #9:List Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 3595 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> 1 Y --> #9:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 3596 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List)) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #8:List Z --> #9:List Y --> #10:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 3597 A --> #4:List B --> f(#5:List, #7:List) E --> #1:Elt C --> #2:List D --> f(#6:List, 1) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#7:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#1:Elt, 1, #3:List) Unifier 3598 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#1:Elt, 1, #3:List) Unifier 3599 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#1:Elt, 1, #3:List) Unifier 3600 A --> #4:List B --> f(#5:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#6:List, j(#7:List, #8:List)) H --> 1 G --> 1 I --> #3:List U --> #4:List V --> #5:List W --> f(#9:List, #1:Elt, #2:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#1:Elt, 1, #3:List) Unifier 3601 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#7:List, 1) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #3:List, #4:List) Unifier 3602 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #3:List, #4:List) Unifier 3603 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #3:List, #4:List) Unifier 3604 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, j(#8:List, #9:List)) H --> #3:List G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #3:List, #4:List) Unifier 3605 A --> #5:List B --> f(#6:List, #8:List) E --> #1:Elt C --> #2:List D --> f(#7:List, 1) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#8:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#1:Elt, #3:List, #4:List) Unifier 3606 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#1:Elt, #3:List, #4:List) Unifier 3607 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#7:List, #8:List) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#1:Elt, #3:List, #4:List) Unifier 3608 A --> #5:List B --> f(#6:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#7:List, j(#8:List, #9:List)) H --> 1 G --> #3:List I --> #4:List U --> #5:List V --> #6:List W --> f(#10:List, #1:Elt, #2:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#1:Elt, #3:List, #4:List) Unifier 3609 A --> #6:List B --> f(#7:List, #9:List) E --> #1:Elt C --> #2:List D --> f(#8:List, 1) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#9:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> 1 S --> f(#1:Elt, j(#3:List, #4:List), #5:List) Unifier 3610 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #8:List Z --> #9:List Y --> 1 S --> f(#1:Elt, j(#3:List, #4:List), #5:List) Unifier 3611 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> f(#8:List, #9:List) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #8:List Z --> 1 Y --> #9:List S --> f(#1:Elt, j(#3:List, #4:List), #5:List) Unifier 3612 A --> #6:List B --> f(#7:List, #11:List) E --> #1:Elt C --> #2:List D --> f(#8:List, j(#9:List, #10:List)) H --> #3:List G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#11:List, #1:Elt, #2:List) X --> #8:List Z --> #9:List Y --> #10:List S --> f(#1:Elt, j(#3:List, #4:List), #5:List) Unifier 3613 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, 1) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 3614 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> 1 S --> f(#2:Elt, 1, #4:List) Unifier 3615 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, #7:List) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> 1 Y --> #7:List S --> f(#2:Elt, 1, #4:List) Unifier 3616 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#6:List, j(#7:List, #8:List)) H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #6:List Z --> #7:List Y --> #8:List S --> f(#2:Elt, 1, #4:List) Unifier 3617 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 3618 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 3619 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, #4:List, #5:List) Unifier 3620 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List)) H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, #4:List, #5:List) Unifier 3621 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, 1) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 3622 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> 1 S --> f(#2:Elt, #4:List, #5:List) Unifier 3623 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, #8:List) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> 1 Y --> #8:List S --> f(#2:Elt, #4:List, #5:List) Unifier 3624 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#7:List, j(#8:List, #9:List)) H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #7:List Z --> #8:List Y --> #9:List S --> f(#2:Elt, #4:List, #5:List) Unifier 3625 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, 1) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 3626 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> #9:List Y --> 1 S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 3627 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, #9:List) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> 1 Y --> #9:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 3628 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> f(#8:List, j(#9:List, #10:List)) H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #8:List Z --> #9:List Y --> #10:List S --> f(#2:Elt, j(#4:List, #5:List), #6:List) Unifier 3629 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #3:List Z --> f(#2:Elt, 1, #7:List) Y --> 1 S --> #6:List Unifier 3630 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #3:List Z --> f(#2:Elt, #4:List, #8:List) Y --> 1 S --> #7:List Unifier 3631 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #3:List Z --> f(#2:Elt, #4:List, #8:List) Y --> 1 S --> #7:List Unifier 3632 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #3:List Z --> f(#2:Elt, j(#4:List, #5:List), #9:List) Y --> 1 S --> #8:List Unifier 3633 A --> #4:List B --> #1:List E --> #2:Elt C --> f(#8:List, #5:List) D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #4:List V --> f(#1:List, #2:Elt, #8:List) W --> #5:List X --> #3:List Z --> 1 Y --> f(#2:Elt, 1, #7:List) S --> #6:List Unifier 3634 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #4:List, #8:List) S --> #7:List Unifier 3635 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #7:List) U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #4:List, #8:List) S --> #7:List Unifier 3636 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#10:List, #7:List) D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #8:List) U --> #6:List V --> f(#1:List, #2:Elt, #10:List) W --> #7:List X --> #3:List Z --> 1 Y --> f(#2:Elt, j(#4:List, #5:List), #9:List) S --> #8:List Unifier 3637 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, 1, #7:List) Y --> 1 S --> #6:List Unifier 3638 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #5:List, #8:List) Y --> 1 S --> #7:List Unifier 3639 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #5:List, #8:List) Y --> 1 S --> #7:List Unifier 3640 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #8:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List), #9:List) Y --> 1 S --> #8:List Unifier 3641 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #5:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, 1, #7:List) S --> #6:List Unifier 3642 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #8:List) S --> #7:List Unifier 3643 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #7:List) U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #8:List) S --> #7:List Unifier 3644 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #8:List) U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List), #9:List) S --> #8:List Unifier 3645 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, 1, #7:List) Y --> 1 S --> #6:List Unifier 3646 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #7:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #4:List, #8:List) Y --> 1 S --> #7:List Unifier 3647 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #7:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #4:List, #8:List) Y --> 1 S --> #7:List Unifier 3648 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #8:List) U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, j(#4:List, #5:List), #9:List) Y --> 1 S --> #8:List Unifier 3649 A --> #4:List B --> f(#5:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #4:List V --> #5:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, 1, #7:List) S --> #6:List Unifier 3650 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> f(#8:List, #7:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #4:List, #8:List) S --> #7:List Unifier 3651 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> f(#8:List, #7:List) U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #4:List, #8:List) S --> #7:List Unifier 3652 A --> #6:List B --> f(#7:List, #10:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> f(#9:List, #8:List) U --> #6:List V --> #7:List W --> f(#10:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, j(#4:List, #5:List), #9:List) S --> #8:List Unifier 3653 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, 1, #7:List) Y --> 1 S --> #6:List Unifier 3654 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #5:List, #8:List) Y --> 1 S --> #7:List Unifier 3655 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #5:List, #8:List) Y --> 1 S --> #7:List Unifier 3656 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #8:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List), #9:List) Y --> 1 S --> #8:List Unifier 3657 A --> #5:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> f(#7:List, #6:List) U --> #5:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, 1, #7:List) S --> #6:List Unifier 3658 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> f(#8:List, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #8:List) S --> #7:List Unifier 3659 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> f(#8:List, #7:List) U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List, #8:List) S --> #7:List Unifier 3660 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> f(#9:List, #8:List) U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List), #9:List) S --> #8:List Unifier 3661 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #3:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> f(#8:List, #4:List) Unifier 3662 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> f(#8:List, #4:List) Unifier 3663 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #3:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> f(#8:List, #4:List) Unifier 3664 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#9:List, #6:List) D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #9:List) W --> #6:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> f(#8:List, #4:List) Unifier 3665 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> f(#8:List, #5:List) Unifier 3666 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> f(#8:List, #5:List) Unifier 3667 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> f(#8:List, #5:List) Unifier 3668 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> f(#8:List, #5:List) Unifier 3669 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #7:List) Y --> 1 S --> f(#8:List, #4:List) Unifier 3670 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> f(#7:List, #8:List) G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #7:List) S --> f(#8:List, #4:List) Unifier 3671 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #7:List) Y --> 1 S --> f(#8:List, #4:List) Unifier 3672 A --> #5:List B --> f(#6:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> f(#7:List, #8:List) I --> #4:List U --> #5:List V --> #6:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #7:List) S --> f(#8:List, #4:List) Unifier 3673 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> f(#8:List, #5:List) Unifier 3674 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> f(#7:List, #8:List) G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> f(#8:List, #5:List) Unifier 3675 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #7:List) Y --> 1 S --> f(#8:List, #5:List) Unifier 3676 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> f(#7:List, #8:List) I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #7:List) S --> f(#8:List, #5:List) Unifier 3677 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> f(#2:Elt, 1) Y --> 1 S --> #4:List Unifier 3678 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> f(#2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 3679 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> f(#2:Elt, #4:List) Y --> 1 S --> #5:List Unifier 3680 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt, #9:List) W --> #8:List X --> #3:List Z --> f(#2:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 3681 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> 1 Y --> f(#2:Elt, 1) S --> #4:List Unifier 3682 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #4:List) S --> #5:List Unifier 3683 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> 1 Y --> f(#2:Elt, #4:List) S --> #5:List Unifier 3684 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt, #9:List) W --> #8:List X --> #3:List Z --> 1 Y --> f(#2:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 3685 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, 1) Y --> 1 S --> #5:List Unifier 3686 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 3687 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 3688 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List)) Y --> 1 S --> #7:List Unifier 3689 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, 1) S --> #5:List Unifier 3690 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 3691 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 3692 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List)) S --> #7:List Unifier 3693 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, 1) Y --> 1 S --> #4:List Unifier 3694 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #4:List) Y --> 1 S --> #5:List Unifier 3695 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, #4:List) Y --> 1 S --> #5:List Unifier 3696 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #8:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> f(#1:Elt, j(#4:List, #5:List)) Y --> 1 S --> #6:List Unifier 3697 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, 1) S --> #4:List Unifier 3698 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #4:List) S --> #5:List Unifier 3699 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, #4:List) S --> #5:List Unifier 3700 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #8:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> f(#1:Elt, j(#4:List, #5:List)) S --> #6:List Unifier 3701 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, 1) Y --> 1 S --> #5:List Unifier 3702 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 3703 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, #5:List) Y --> 1 S --> #6:List Unifier 3704 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> f(#2:Elt, j(#5:List, #6:List)) Y --> 1 S --> #7:List Unifier 3705 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, 1) S --> #5:List Unifier 3706 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 3707 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, #5:List) S --> #6:List Unifier 3708 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> f(#2:Elt, j(#5:List, #6:List)) S --> #7:List Unifier 3709 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> #2:Elt Y --> 1 S --> f(1, #4:List) Unifier 3710 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> #2:Elt Y --> 1 S --> f(#4:List, #5:List) Unifier 3711 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> #2:Elt Y --> 1 S --> f(#4:List, #5:List) Unifier 3712 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt, #9:List) W --> #8:List X --> #3:List Z --> #2:Elt Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 3713 A --> #5:List B --> #1:List E --> #2:Elt C --> f(#7:List, #6:List) D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> f(#1:List, #2:Elt, #7:List) W --> #6:List X --> #3:List Z --> 1 Y --> #2:Elt S --> f(1, #4:List) Unifier 3714 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> 1 Y --> #2:Elt S --> f(#4:List, #5:List) Unifier 3715 A --> #6:List B --> #1:List E --> #2:Elt C --> f(#8:List, #7:List) D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt, #8:List) W --> #7:List X --> #3:List Z --> 1 Y --> #2:Elt S --> f(#4:List, #5:List) Unifier 3716 A --> #7:List B --> #1:List E --> #2:Elt C --> f(#9:List, #8:List) D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt, #9:List) W --> #8:List X --> #3:List Z --> 1 Y --> #2:Elt S --> f(j(#4:List, #5:List), #6:List) Unifier 3717 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(1, #5:List) Unifier 3718 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 3719 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 3720 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> #2:Elt Y --> 1 S --> f(j(#5:List, #6:List), #7:List) Unifier 3721 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(1, #5:List) Unifier 3722 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 3723 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 3724 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> f(#1:List, #2:Elt) W --> #3:List X --> #4:List Z --> 1 Y --> #2:Elt S --> f(j(#5:List, #6:List), #7:List) Unifier 3725 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> #1:Elt Y --> 1 S --> f(1, #4:List) Unifier 3726 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> #1:Elt Y --> 1 S --> f(#4:List, #5:List) Unifier 3727 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> #1:Elt Y --> 1 S --> f(#4:List, #5:List) Unifier 3728 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #8:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> #1:Elt Y --> 1 S --> f(j(#4:List, #5:List), #6:List) Unifier 3729 A --> #5:List B --> f(#6:List, #7:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> 1 I --> #4:List U --> #5:List V --> #6:List W --> f(#7:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> #1:Elt S --> f(1, #4:List) Unifier 3730 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> 1 I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> #1:Elt S --> f(#4:List, #5:List) Unifier 3731 A --> #6:List B --> f(#7:List, #8:List) E --> #1:Elt C --> #2:List D --> #3:List H --> 1 G --> #4:List I --> #5:List U --> #6:List V --> #7:List W --> f(#8:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> #1:Elt S --> f(#4:List, #5:List) Unifier 3732 A --> #7:List B --> f(#8:List, #9:List) E --> #1:Elt C --> #2:List D --> #3:List H --> #4:List G --> #5:List I --> #6:List U --> #7:List V --> #8:List W --> f(#9:List, #1:Elt, #2:List) X --> #3:List Z --> 1 Y --> #1:Elt S --> f(j(#4:List, #5:List), #6:List) Unifier 3733 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> #2:Elt Y --> 1 S --> f(1, #5:List) Unifier 3734 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 3735 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> #2:Elt Y --> 1 S --> f(#5:List, #6:List) Unifier 3736 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> #2:Elt Y --> 1 S --> f(j(#5:List, #6:List), #7:List) Unifier 3737 A --> #6:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> 1 I --> #5:List U --> #6:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> #2:Elt S --> f(1, #5:List) Unifier 3738 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> 1 I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 3739 A --> #7:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> 1 G --> #5:List I --> #6:List U --> #7:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> #2:Elt S --> f(#5:List, #6:List) Unifier 3740 A --> #8:List B --> #1:List E --> #2:Elt C --> #3:List D --> #4:List H --> #5:List G --> #6:List I --> #7:List U --> #8:List V --> #1:List W --> f(#2:Elt, #3:List) X --> #4:List Z --> 1 Y --> #2:Elt S --> f(j(#5:List, #6:List), #7:List) ========================================== unify in FOO : P P =? Q Q R R H . No unifier. ========================================== unify in FOO : P P Q =? Q R R H . No unifier. ========================================== unify in FOO : P P =? Q Q G G H . No unifier. ========================================== unify in FOO : P P Q =? Q G G H . No unifier. ========================================== unify in FOO : P P =? Q Q R H R . No unifier. ========================================== unify in FOO : P P Q =? Q R H R . No unifier. ========================================== unify in FOO : P P =? Q Q G H G . No unifier. ========================================== unify in FOO : P P Q =? Q G H G . No unifier. ========================================== unify in FOO : P P =? Q Q G S S . No unifier. ========================================== unify in FOO : P P Q =? Q G S S . No unifier. ========================================== unify in FOO : P P =? Q Q G H H . No unifier. ========================================== unify in FOO : P P Q =? Q G H H . No unifier. ========================================== unify in FOO : P P =? Q Q G H I . No unifier. ========================================== unify in FOO : P P Q =? Q G H I . No unifier. ========================================== unify in FOO : P P =? Q G Q S S . No unifier. ========================================== unify in FOO : P P Q =? G Q S S . No unifier. ========================================== unify in FOO : P P =? F R R S S . No unifier. ========================================== unify in FOO : P P F =? R R S S . No unifier. ========================================== unify in FOO : P Q P =? Q R R H . No unifier. ========================================== unify in FOO : P Q P =? Q G G H . No unifier. ========================================== unify in FOO : P Q P =? Q R H R . No unifier. ========================================== unify in FOO : P Q P =? Q G H G . No unifier. ========================================== unify in FOO : P Q P =? Q G S S . No unifier. ========================================== unify in FOO : P Q P =? Q G H H . No unifier. ========================================== unify in FOO : P Q P =? Q G H I . No unifier. ========================================== unify in FOO : P Q P =? G Q S S . No unifier. ========================================== unify in FOO : P F P =? R R S S . No unifier. ========================================== unify in FOO : P Q Q =? R P R H . No unifier. ========================================== unify in FOO : P Q Q =? G P G H . No unifier. ========================================== unify in FOO : P Q Q =? R P H R . No unifier. ========================================== unify in FOO : P Q Q =? G P H G . No unifier. ========================================== unify in FOO : P Q Q =? G P S S . No unifier. ========================================== unify in FOO : P Q Q =? G P H H . No unifier. ========================================== unify in FOO : P Q Q =? G P H I . No unifier. ========================================== unify in FOO : P Q Q =? R R P H . No unifier. ========================================== unify in FOO : P Q Q =? G G P H . No unifier. ========================================== unify in FOO : P Q Q =? R R H P . No unifier. ========================================== unify in FOO : P Q Q =? G G H P . No unifier. ========================================== unify in FOO : E Q Q =? R R S S . No unifier. ========================================== unify in FOO : P Q Q =? R H P R . No unifier. ========================================== unify in FOO : P Q Q =? G H P G . No unifier. ========================================== unify in FOO : P Q Q =? G S P S . No unifier. ========================================== unify in FOO : P Q Q =? G H P H . No unifier. ========================================== unify in FOO : P Q Q =? G H P I . No unifier. ========================================== unify in FOO : P Q Q =? R H R P . No unifier. ========================================== unify in FOO : P Q Q =? G H G P . No unifier. ========================================== unify in FOO : P Q Q =? G S S P . No unifier. ========================================== unify in FOO : P Q Q =? G H H P . No unifier. ========================================== unify in FOO : P Q Q =? G H I P . No unifier. ========================================== unify in FOO : P Q R R =? H H Q I I . Unifier 1 P --> #2:Elt #2:Elt Q --> #1:Foo R --> #3:Elt H --> #2:Elt I --> #3:Elt ========================================== unify in FOO : P Q R R =? H H Q I J . Unifier 1 P --> #2:Elt #2:Elt Q --> #1:Foo R --> #3:Elt H --> #2:Elt I --> #3:Elt J --> #3:Elt ========================================== unify in FOO : P Q R R =? H I Q H I . Unifier 1 P --> #2:Elt #2:Elt Q --> #1:Foo R --> #2:Elt H --> #2:Elt I --> #2:Elt ========================================== unify in FOO : P Q R R =? H I Q H J . Unifier 1 P --> #2:Elt #3:Elt Q --> #1:Foo R --> #2:Elt H --> #2:Elt I --> #3:Elt J --> #2:Elt ========================================== unify in FOO : P Q R R =? H I Q I H . Unifier 1 P --> #2:Elt #2:Elt Q --> #1:Foo R --> #2:Elt H --> #2:Elt I --> #2:Elt ========================================== unify in FOO : P Q R R =? H I Q I J . Unifier 1 P --> #2:Elt #3:Elt Q --> #1:Foo R --> #3:Elt H --> #2:Elt I --> #3:Elt J --> #3:Elt ========================================== unify in FOO : P Q R R =? H I Q J H . Unifier 1 P --> #2:Elt #3:Elt Q --> #1:Foo R --> #2:Elt H --> #2:Elt I --> #3:Elt J --> #2:Elt ========================================== unify in FOO : P Q R R =? H I Q J I . Unifier 1 P --> #2:Elt #3:Elt Q --> #1:Foo R --> #3:Elt H --> #2:Elt I --> #3:Elt J --> #3:Elt ========================================== unify in FOO : P Q R R =? H I Q J J . Unifier 1 P --> #2:Elt #3:Elt Q --> #1:Foo R --> #4:Elt H --> #2:Elt I --> #3:Elt J --> #4:Elt ========================================== unify in FOO : P Q R R =? H I Q J K . Unifier 1 P --> #2:Elt #3:Elt Q --> #1:Foo R --> #4:Elt H --> #2:Elt I --> #3:Elt J --> #4:Elt K --> #4:Elt ========================================== unify in FOO : a Q =? Q c . No unifier. ========================================== unify in FOO : P b =? c P . No unifier. ========================================== unify in FOO : a a Q =? Q c c . No unifier. ========================================== unify in FOO : a a Q =? Q c S . No unifier. ========================================== unify in FOO : a a Q =? Q R d . No unifier. ========================================== unify in FOO : P P =? Q Q c d . No unifier. ========================================== unify in FOO : P P Q =? Q c d . No unifier. ========================================== unify in FOO : a a Q =? Q c d . No unifier. ========================================== unify in FOO : a a Q =? R Q d . No unifier. ========================================== unify in FOO : P P Q =? c Q d . No unifier. ========================================== unify in FOO : P P =? b R R d . No unifier. ========================================== unify in FOO : P P =? Q c d Q . No unifier. ========================================== unify in FOO : P P b =? R d R . No unifier. ========================================== unify in FOO : P P =? b c S S . No unifier. ========================================== unify in FOO : a Q a =? Q c c . No unifier. ========================================== unify in FOO : a Q a =? Q c S . No unifier. ========================================== unify in FOO : a Q a =? Q R d . No unifier. ========================================== unify in FOO : P Q P =? Q c d . No unifier. ========================================== unify in FOO : a Q a =? Q c d . No unifier. ========================================== unify in FOO : P b P =? R R d . No unifier. ========================================== unify in FOO : a Q a =? R d Q . No unifier. ========================================== unify in FOO : P Q P =? c d Q . No unifier. ========================================== unify in FOO : P b P =? c S S . No unifier. ========================================== unify in FOO : P b b =? c P c . No unifier. ========================================== unify in FOO : P b b =? c P S . No unifier. ========================================== unify in FOO : P b b =? R P d . No unifier. ========================================== unify in FOO : P Q Q =? c P d . No unifier. ========================================== unify in FOO : P b b =? c P d . No unifier. ========================================== unify in FOO : P b b =? c c P . No unifier. ========================================== unify in FOO : P b b =? c S P . No unifier. ========================================== unify in FOO : P b b =? R d P . No unifier. ========================================== unify in FOO : P Q Q =? c d P . No unifier. ========================================== unify in FOO : P b b =? c d P . No unifier. ========================================== unify in FOO : a Q Q =? R d R . No unifier. ========================================== unify in FOO : P b R =? P R d . No unifier. ========================================== unify in FOO : a b R =? a R d . No unifier. ========================================== unify in FOO : P Q c =? P d Q . No unifier. ========================================== unify in FOO : a Q c =? a d Q . No unifier. ========================================== unify in FOO : P Q c =? Q P d . No unifier. ========================================== unify in FOO : a Q c =? Q a d . No unifier. ========================================== unify in FOO : P b c =? b P d . No unifier. ========================================== unify in FOO : a Q c =? Q c a . No unifier. ========================================== unify in FOO : a Q c =? Q c S . No unifier. ========================================== unify in FOO : a Q R =? Q R d . No unifier. ========================================== unify in FOO : P b R =? b R d . No unifier. ========================================== unify in FOO : P Q c =? Q c d . No unifier. ========================================== unify in FOO : a Q c =? Q c d . No unifier. ========================================== unify in FOO : a Q c =? Q S a . No unifier. ========================================== unify in FOO : a Q R =? Q d a . No unifier. ========================================== unify in FOO : P Q c =? Q d P . No unifier. ========================================== unify in FOO : a Q c =? Q d a . No unifier. ========================================== unify in FOO : P b c =? b d P . No unifier. ========================================== unify in FOO : a Q R =? Q d R . No unifier. ========================================== unify in FOO : a Q c =? Q d c . No unifier. ========================================== unify in FOO : a Q c =? Q S S . No unifier. ========================================== unify in FOO : a Q R =? Q d d . No unifier. ========================================== unify in FOO : P Q c =? Q d d . No unifier. ========================================== unify in FOO : a Q c =? Q d d . No unifier. ========================================== unify in FOO : a Q R =? Q d T . No unifier. ========================================== unify in FOO : a Q c =? Q d T . No unifier. ========================================== unify in FOO : P Q c =? Q S e . No unifier. ========================================== unify in FOO : a Q c =? Q S e . No unifier. ========================================== unify in FOO : a Q R =? Q d e . No unifier. ========================================== unify in FOO : P Q c =? Q d e . No unifier. ========================================== unify in FOO : a Q c =? Q d e . No unifier. ========================================== unify in FOO : P b c =? c P b . No unifier. ========================================== unify in FOO : P b c =? c P S . No unifier. ========================================== unify in FOO : P b R =? R P d . No unifier. ========================================== unify in FOO : a b R =? R a d . No unifier. ========================================== unify in FOO : P Q c =? c P d . No unifier. ========================================== unify in FOO : P b c =? c P d . No unifier. ========================================== unify in FOO : a Q R =? R Q d . No unifier. ========================================== unify in FOO : a b R =? R b d . No unifier. ========================================== unify in FOO : P b R =? R d P . No unifier. ========================================== unify in FOO : a b R =? R d a . No unifier. ========================================== unify in FOO : P b c =? c d P . No unifier. ========================================== unify in FOO : a Q R =? R d Q . No unifier. ========================================== unify in FOO : a b R =? R d b . No unifier. ========================================== unify in FOO : P Q c =? c d Q . No unifier. ========================================== unify in FOO : a b R =? R S S . No unifier. ========================================== unify in FOO : a Q R =? R d d . No unifier. ========================================== unify in FOO : P b R =? R d d . No unifier. ========================================== unify in FOO : a b R =? R d d . No unifier. ========================================== unify in FOO : a b R =? R d T . No unifier. ========================================== unify in FOO : a b R =? R S e . No unifier. ========================================== unify in FOO : a Q R =? R d e . No unifier. ========================================== unify in FOO : P b R =? R d e . No unifier. ========================================== unify in FOO : a b R =? R d e . No unifier. ========================================== unify in FOO : a Q c =? S a Q . No unifier. ========================================== unify in FOO : P b c =? S P b . No unifier. ========================================== unify in FOO : P b R =? d P b . No unifier. ========================================== unify in FOO : P Q c =? d P Q . No unifier. ========================================== unify in FOO : P b c =? d P b . No unifier. ========================================== unify in FOO : P b R =? d P R . No unifier. ========================================== unify in FOO : P b c =? d P c . No unifier. ========================================== unify in FOO : P b c =? S P S . No unifier. ========================================== unify in FOO : P b R =? d P d . No unifier. ========================================== unify in FOO : P Q c =? d P d . No unifier. ========================================== unify in FOO : P b c =? d P d . No unifier. ========================================== unify in FOO : P b R =? d P T . No unifier. ========================================== unify in FOO : P b c =? d P T . No unifier. ========================================== unify in FOO : P Q c =? S P e . No unifier. ========================================== unify in FOO : P b c =? S P e . No unifier. ========================================== unify in FOO : P b R =? d P e . No unifier. ========================================== unify in FOO : P Q c =? d P e . No unifier. ========================================== unify in FOO : P b c =? d P e . No unifier. ========================================== unify in FOO : P Q c =? d Q P . No unifier. ========================================== unify in FOO : P b c =? d b P . No unifier. ========================================== unify in FOO : a b R =? S R a . No unifier. ========================================== unify in FOO : P b R =? d R P . No unifier. ========================================== unify in FOO : P b c =? d c P . No unifier. ========================================== unify in FOO : a b R =? S R S . No unifier. ========================================== unify in FOO : P b R =? d R d . No unifier. ========================================== unify in FOO : P b R =? S R e . No unifier. ========================================== unify in FOO : a b R =? S R e . No unifier. ========================================== unify in FOO : P b R =? d R e . No unifier. ========================================== unify in FOO : P b c =? S S P . No unifier. ========================================== unify in FOO : P b R =? d d P . No unifier. ========================================== unify in FOO : P Q c =? d d P . No unifier. ========================================== unify in FOO : P b c =? d d P . No unifier. ========================================== unify in FOO : a Q c =? S S Q . No unifier. ========================================== unify in FOO : P Q c =? d d Q . No unifier. ========================================== unify in FOO : P b c =? d T P . No unifier. ========================================== unify in FOO : P b c =? S e P . No unifier. ========================================== unify in FOO : P b R =? d e P . No unifier. ========================================== unify in FOO : P Q c =? d e P . No unifier. ========================================== unify in FOO : P b c =? d e P . No unifier. ========================================== unify in FOO : P Q c =? S e Q . No unifier. ========================================== unify in FOO : a Q c =? S e Q . No unifier. ========================================== unify in FOO : P Q c =? d e Q . No unifier. ========================================== unify in FOO : P P =? Q Q R R d . No unifier. ========================================== unify in FOO : P P Q =? Q R R d . No unifier. ========================================== unify in FOO : P P =? Q Q c c d . No unifier. ========================================== unify in FOO : P P Q =? Q c c d . No unifier. ========================================== unify in FOO : P P =? Q Q R d R . No unifier. ========================================== unify in FOO : P P Q =? Q R d R . No unifier. ========================================== unify in FOO : P P =? Q Q c d c . No unifier. ========================================== unify in FOO : P P Q =? Q c d c . No unifier. ========================================== unify in FOO : P P =? Q Q c S S . No unifier. ========================================== unify in FOO : P P Q =? Q c S S . No unifier. ========================================== unify in FOO : P P =? Q Q c d d . No unifier. ========================================== unify in FOO : P P Q =? Q c d d . No unifier. ========================================== unify in FOO : P P =? Q Q c d e . No unifier. ========================================== unify in FOO : P P Q =? Q c d e . No unifier. ========================================== unify in FOO : P P =? Q c Q S S . No unifier. ========================================== unify in FOO : P P Q =? c Q S S . No unifier. ========================================== unify in FOO : P P =? b R R S S . No unifier. ========================================== unify in FOO : P P b =? R R S S . No unifier. ========================================== unify in FOO : P P b =? R R S e . No unifier. ========================================== unify in FOO : P P b =? R S R e . No unifier. ========================================== unify in FOO : P P b =? R S S e . No unifier. ========================================== unify in FOO : P Q P =? Q R R d . No unifier. ========================================== unify in FOO : P Q P =? Q c c d . No unifier. ========================================== unify in FOO : P Q P =? Q R d R . No unifier. ========================================== unify in FOO : P Q P =? Q c d c . No unifier. ========================================== unify in FOO : P Q P =? Q c S S . No unifier. ========================================== unify in FOO : P Q P =? Q c d d . No unifier. ========================================== unify in FOO : P Q P =? Q c d e . No unifier. ========================================== unify in FOO : P Q P =? c Q S S . No unifier. ========================================== unify in FOO : P b P =? R R S S . No unifier. ========================================== unify in FOO : P Q Q =? R P R d . No unifier. ========================================== unify in FOO : P Q Q =? c P c d . No unifier. ========================================== unify in FOO : P Q Q =? R P d R . No unifier. ========================================== unify in FOO : P Q Q =? c P d c . No unifier. ========================================== unify in FOO : P Q Q =? c P S S . No unifier. ========================================== unify in FOO : P Q Q =? c P d d . No unifier. ========================================== unify in FOO : P Q Q =? c P d e . No unifier. ========================================== unify in FOO : P Q Q =? R R P d . No unifier. ========================================== unify in FOO : P Q Q =? c c P d . No unifier. ========================================== unify in FOO : P Q Q =? R R d P . No unifier. ========================================== unify in FOO : P Q Q =? c c d P . No unifier. ========================================== unify in FOO : a Q Q =? R R S S . No unifier. ========================================== unify in FOO : P Q Q =? R d P R . No unifier. ========================================== unify in FOO : P Q Q =? c d P c . No unifier. ========================================== unify in FOO : P Q Q =? c S P S . No unifier. ========================================== unify in FOO : P Q Q =? c d P d . No unifier. ========================================== unify in FOO : P Q Q =? c d P e . No unifier. ========================================== unify in FOO : P Q Q =? R d R P . No unifier. ========================================== unify in FOO : P Q Q =? c d c P . No unifier. ========================================== unify in FOO : P Q Q =? c S S P . No unifier. ========================================== unify in FOO : P Q Q =? c d d P . No unifier. ========================================== unify in FOO : P Q Q =? c d e P . No unifier. ========================================== unify in FOO : P b R =? b R d d . No unifier. ========================================== unify in FOO : P Q c =? Q c d d . No unifier. ========================================== unify in FOO : P Q c =? Q c S e . No unifier. ========================================== unify in FOO : P b R =? b R d e . No unifier. ========================================== unify in FOO : P Q c =? Q c d e . No unifier. ========================================== unify in FOO : a Q R =? Q d a d . No unifier. ========================================== unify in FOO : a Q R =? Q d a T . No unifier. ========================================== unify in FOO : a Q R =? Q d a e . No unifier. ========================================== unify in FOO : P b R =? b d R d . No unifier. ========================================== unify in FOO : P Q c =? Q d c d . No unifier. ========================================== unify in FOO : P b R =? b S R e . No unifier. ========================================== unify in FOO : P Q c =? Q S c e . No unifier. ========================================== unify in FOO : P b R =? b d R e . No unifier. ========================================== unify in FOO : P Q c =? Q d c e . No unifier. ========================================== unify in FOO : a Q R =? Q d d a . No unifier. ========================================== unify in FOO : a Q R =? Q d d T . No unifier. ========================================== unify in FOO : P Q c =? Q S S e . No unifier. ========================================== unify in FOO : a Q R =? Q d d e . No unifier. ========================================== unify in FOO : P Q c =? Q d d e . No unifier. ========================================== unify in FOO : a Q R =? Q d T a . No unifier. ========================================== unify in FOO : a Q R =? Q d e a . No unifier. ========================================== unify in FOO : a Q R =? Q d T d . No unifier. ========================================== unify in FOO : P Q c =? Q d T d . No unifier. ========================================== unify in FOO : a Q R =? Q d e d . No unifier. ========================================== unify in FOO : P Q c =? Q d e d . No unifier. ========================================== unify in FOO : a Q R =? Q d T T . No unifier. ========================================== unify in FOO : P Q c =? Q S e e . No unifier. ========================================== unify in FOO : a Q R =? Q d e e . No unifier. ========================================== unify in FOO : P Q c =? Q d e e . No unifier. ========================================== unify in FOO : a Q R =? Q d T U . No unifier. ========================================== unify in FOO : a Q R =? Q d e U . No unifier. ========================================== unify in FOO : P Q c =? Q S T f . No unifier. ========================================== unify in FOO : a Q R =? Q d T f . No unifier. ========================================== unify in FOO : P Q c =? Q d T f . No unifier. ========================================== unify in FOO : P Q c =? Q S e f . No unifier. ========================================== unify in FOO : a Q R =? Q d e f . No unifier. ========================================== unify in FOO : P Q c =? Q d e f . No unifier. ========================================== unify in FOO : P Q c =? c P d d . No unifier. ========================================== unify in FOO : P Q c =? c P S e . No unifier. ========================================== unify in FOO : P Q c =? c P d e . No unifier. ========================================== unify in FOO : P Q c =? c Q d d . No unifier. ========================================== unify in FOO : P Q c =? c Q S e . No unifier. ========================================== unify in FOO : P Q c =? c Q d e . No unifier. ========================================== unify in FOO : P Q c =? c d P d . No unifier. ========================================== unify in FOO : P Q c =? c S P e . No unifier. ========================================== unify in FOO : P Q c =? c d P e . No unifier. ========================================== unify in FOO : P Q c =? c d d Q . No unifier. ========================================== unify in FOO : a Q R =? R d d e . No unifier. ========================================== unify in FOO : P b R =? R d d e . No unifier. ========================================== unify in FOO : P Q c =? c S e Q . No unifier. ========================================== unify in FOO : P Q c =? c d e Q . No unifier. ========================================== unify in FOO : a Q R =? R d e d . No unifier. ========================================== unify in FOO : P b R =? R d e d . No unifier. ========================================== unify in FOO : a Q R =? R d e e . No unifier. ========================================== unify in FOO : P b R =? R d e e . No unifier. ========================================== unify in FOO : a Q R =? R d e f . No unifier. ========================================== unify in FOO : P b R =? R d e f . No unifier. ========================================== unify in FOO : P b R =? d P b d . No unifier. ========================================== unify in FOO : P b R =? d P b T . No unifier. ========================================== unify in FOO : P b R =? d P b e . No unifier. ========================================== unify in FOO : P Q c =? d P c d . No unifier. ========================================== unify in FOO : P Q c =? S P c e . No unifier. ========================================== unify in FOO : P Q c =? d P c e . No unifier. ========================================== unify in FOO : P b R =? d P d b . No unifier. ========================================== unify in FOO : P b R =? d P d T . No unifier. ========================================== unify in FOO : P Q c =? S P S e . No unifier. ========================================== unify in FOO : P b R =? d P d e . No unifier. ========================================== unify in FOO : P Q c =? d P d e . No unifier. ========================================== unify in FOO : P b R =? d P T b . No unifier. ========================================== unify in FOO : P b R =? d P e b . No unifier. ========================================== unify in FOO : P b R =? d P T d . No unifier. ========================================== unify in FOO : P Q c =? d P T d . No unifier. ========================================== unify in FOO : P b R =? d P e d . No unifier. ========================================== unify in FOO : P Q c =? d P e d . No unifier. ========================================== unify in FOO : P b R =? d P T T . No unifier. ========================================== unify in FOO : P Q c =? S P e e . No unifier. ========================================== unify in FOO : P b R =? d P e e . No unifier. ========================================== unify in FOO : P Q c =? d P e e . No unifier. ========================================== unify in FOO : P b R =? d P T U . No unifier. ========================================== unify in FOO : P b R =? d P e U . No unifier. ========================================== unify in FOO : P Q c =? S P T f . No unifier. ========================================== unify in FOO : P b R =? d P T f . No unifier. ========================================== unify in FOO : P Q c =? d P T f . No unifier. ========================================== unify in FOO : P Q c =? S P e f . No unifier. ========================================== unify in FOO : P b R =? d P e f . No unifier. ========================================== unify in FOO : P Q c =? d P e f . No unifier. ========================================== unify in FOO : P b R =? d b R d . No unifier. ========================================== unify in FOO : P Q c =? d Q c d . No unifier. ========================================== unify in FOO : P b R =? S b R e . No unifier. ========================================== unify in FOO : P Q c =? S Q c e . No unifier. ========================================== unify in FOO : P b R =? d b R e . No unifier. ========================================== unify in FOO : P Q c =? d Q c e . No unifier. ========================================== unify in FOO : P Q c =? S Q S e . No unifier. ========================================== unify in FOO : P Q c =? d Q d e . No unifier. ========================================== unify in FOO : P Q c =? d Q T d . No unifier. ========================================== unify in FOO : P Q c =? d Q e d . No unifier. ========================================== unify in FOO : P Q c =? S Q e e . No unifier. ========================================== unify in FOO : P Q c =? d Q e e . No unifier. ========================================== unify in FOO : P Q c =? S Q T f . No unifier. ========================================== unify in FOO : P Q c =? d Q T f . No unifier. ========================================== unify in FOO : P Q c =? S Q e f . No unifier. ========================================== unify in FOO : P Q c =? d Q e f . No unifier. ========================================== unify in FOO : P Q c =? d c P d . No unifier. ========================================== unify in FOO : P Q c =? S c P e . No unifier. ========================================== unify in FOO : P Q c =? d c P e . No unifier. ========================================== unify in FOO : P Q c =? d c d Q . No unifier. ========================================== unify in FOO : P b R =? d R d e . No unifier. ========================================== unify in FOO : P Q c =? S c e Q . No unifier. ========================================== unify in FOO : P Q c =? d c e Q . No unifier. ========================================== unify in FOO : P b R =? d R e d . No unifier. ========================================== unify in FOO : P b R =? S R e e . No unifier. ========================================== unify in FOO : P b R =? d R e e . No unifier. ========================================== unify in FOO : P b R =? S R e f . No unifier. ========================================== unify in FOO : P b R =? d R e f . No unifier. ========================================== unify in FOO : P b R =? d d P b . No unifier. ========================================== unify in FOO : P b R =? d d P T . No unifier. ========================================== unify in FOO : P Q c =? S S P e . No unifier. ========================================== unify in FOO : P b R =? d d P e . No unifier. ========================================== unify in FOO : P Q c =? d d P e . No unifier. ========================================== unify in FOO : P b R =? S S R e . No unifier. ========================================== unify in FOO : P b R =? d d R e . No unifier. ========================================== unify in FOO : P b R =? d d e P . No unifier. ========================================== unify in FOO : P Q c =? d d e P . No unifier. ========================================== unify in FOO : P Q c =? S S e Q . No unifier. ========================================== unify in FOO : P Q c =? d d e Q . No unifier. ========================================== unify in FOO : P b R =? d e P b . No unifier. ========================================== unify in FOO : P Q c =? d T P d . No unifier. ========================================== unify in FOO : P b R =? d e P d . No unifier. ========================================== unify in FOO : P Q c =? d e P d . No unifier. ========================================== unify in FOO : P Q c =? S e P e . No unifier. ========================================== unify in FOO : P b R =? d e P e . No unifier. ========================================== unify in FOO : P Q c =? d e P e . No unifier. ========================================== unify in FOO : P b R =? d e P U . No unifier. ========================================== unify in FOO : P Q c =? S T P f . No unifier. ========================================== unify in FOO : P Q c =? d T P f . No unifier. ========================================== unify in FOO : P Q c =? S e P f . No unifier. ========================================== unify in FOO : P b R =? d e P f . No unifier. ========================================== unify in FOO : P Q c =? d e P f . No unifier. ========================================== unify in FOO : P b R =? d T R d . No unifier. ========================================== unify in FOO : P b R =? d e R d . No unifier. ========================================== unify in FOO : P b R =? S e R e . No unifier. ========================================== unify in FOO : P b R =? d e R e . No unifier. ========================================== unify in FOO : P b R =? S T R f . No unifier. ========================================== unify in FOO : P b R =? d T R f . No unifier. ========================================== unify in FOO : P b R =? S e R f . No unifier. ========================================== unify in FOO : P b R =? d e R f . No unifier. ========================================== unify in FOO : P b R =? d e d P . No unifier. ========================================== unify in FOO : P Q c =? d e d P . No unifier. ========================================== unify in FOO : P Q c =? d T d Q . No unifier. ========================================== unify in FOO : P Q c =? d e d Q . No unifier. ========================================== unify in FOO : P b R =? d e e P . No unifier. ========================================== unify in FOO : P Q c =? d e e P . No unifier. ========================================== unify in FOO : P Q c =? S e e Q . No unifier. ========================================== unify in FOO : P Q c =? d e e Q . No unifier. ========================================== unify in FOO : P b R =? d e f P . No unifier. ========================================== unify in FOO : P Q c =? d e f P . No unifier. ========================================== unify in FOO : P Q c =? S T f Q . No unifier. ========================================== unify in FOO : P Q c =? d T f Q . No unifier. ========================================== unify in FOO : P Q c =? S e f Q . No unifier. ========================================== unify in FOO : P Q c =? d e f Q . No unifier. ========================================== unify in FOO : P Q R R =? d d Q e e . Unifier 1 P --> d d Q --> #1:Foo R --> e ========================================== unify in FOO : P Q R R =? d e Q f f . Unifier 1 P --> d e Q --> #1:Foo R --> f ========================================== unify in FOO : P b R S =? e b R e f . Unifier 1 P --> e R --> #1:Foo S --> e f ========================================== unify in FOO : P Q c S =? e Q c e f . Unifier 1 P --> e Q --> #1:Foo S --> e f ========================================== unify in FOO : P b R S =? e b R f e . Unifier 1 P --> e R --> #1:Foo S --> f e ========================================== unify in FOO : P Q c S =? e Q c f e . Unifier 1 P --> e Q --> #1:Foo S --> f e ========================================== unify in FOO : P b R S =? e b R f f . Unifier 1 P --> e R --> #1:Foo S --> f f ========================================== unify in FOO : P Q c S =? e Q c f f . Unifier 1 P --> e Q --> #1:Foo S --> f f ========================================== unify in FOO : P b R S =? e b R f g . Unifier 1 P --> e R --> #1:Foo S --> f g ========================================== unify in FOO : P Q c S =? e Q c f g . Unifier 1 P --> e Q --> #1:Foo S --> f g ========================================== unify in FOO : P Q c S =? e e Q c f . Unifier 1 P --> e e Q --> #1:Foo S --> f ========================================== unify in FOO : P Q c S =? e f Q c e . Unifier 1 P --> e f Q --> #1:Foo S --> e ========================================== unify in FOO : P Q c S =? e f Q c f . Unifier 1 P --> e f Q --> #1:Foo S --> f ========================================== unify in FOO : P Q c S =? e f Q c g . Unifier 1 P --> e f Q --> #1:Foo S --> g ========================================== unify in FOO : X X =? Y a Y . No unifier. ========================================== unify in FOO : X X =? E Y a b Y E . No unifier. ========================================== unify in FOO : X X =? Y Y . Unifier 1 X --> #1:Foo Y --> #1:Foo ========================================== unify in FOO : X X =? Y a Y a . Unifier 1 X --> #1:Foo a Y --> #1:Foo ========================================== unify in FOO : X X =? E Y F E Y F . Unifier 1 X --> #1:Elt #2:Foo #3:Elt E --> #1:Elt Y --> #2:Foo F --> #3:Elt ========================================== unify in FOO : X X =? E Y a b Y F . No unifier. ========================================== unify in FOO : X X =? E Y F b Y E . No unifier. ========================================== unify in FOO : X X =? E Y b b Y E . No unifier. ========================================== unify in FOO : X Y =? Y X . Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. Unifier 1 X --> #1:Foo Y --> #1:Foo Warning: Some unifiers may have been missed due to incomplete unification algorithm(s). ========================================== unify in FOO : X Y X =? Z Z . Unifier 1 X --> #1:Foo Y --> #2:Foo #1:Foo #1:Foo #2:Foo Z --> #1:Foo #2:Foo #1:Foo Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. Unifier 2 X --> #1:Foo Y --> #1:Foo #1:Foo Z --> #1:Foo #1:Foo Warning: Some unifiers may have been missed due to incomplete unification algorithm(s). ========================================== unify in FOO : X X =? Y a a Y . Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. Unifier 1 X --> a a Y --> a Warning: Some unifiers may have been missed due to incomplete unification algorithm(s). ========================================== unify in FOO : X Y =? Y X . Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. Unifier 1 X --> #1:Foo Y --> #1:Foo Warning: Some unifiers may have been missed due to incomplete unification algorithm(s). ========================================== unify in FOO : X X X =? Y Y Y Y . Unifier 1 X --> #1:Foo #1:Foo #1:Foo #1:Foo Y --> #1:Foo #1:Foo #1:Foo ========================================== unify in FOO : X Y =? Y X /\ X X X =? Y Y Y Y . Unifier 1 X --> #1:Foo #1:Foo #1:Foo #1:Foo Y --> #1:Foo #1:Foo #1:Foo ========================================== unify in FOO : X X X =? Y Y Y Y /\ X Y =? Y X . Unifier 1 X --> #1:Foo #1:Foo #1:Foo #1:Foo Y --> #1:Foo #1:Foo #1:Foo ========================================== unify in FOO : X X =? Y Y Y . Unifier 1 X --> #1:Foo #1:Foo #1:Foo Y --> #1:Foo #1:Foo ========================================== unify in FOO : X Y X =? Y X Y . Unifier 1 X --> #1:Foo Y --> #1:Foo ========================================== unify in FOO : X X X =? Y Y Y Y . Unifier 1 X --> #1:Foo #1:Foo #1:Foo #1:Foo Y --> #1:Foo #1:Foo #1:Foo ========================================== unify in FOO : X Y X =? Y Y Y Y . Unifier 1 X --> #1:Foo #1:Foo #1:Foo Y --> #1:Foo #1:Foo Bye. Maude-Maude3.5.1/tests/Misc/assocUnification0000775000175000017510000000037415036121435020350 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/assocUnification.maude -no-banner -no-advise \ > assocUnification.out 2>&1 diff $srcdir/assocUnification.expected assocUnification.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/Makefile.am0000775000175000017510000000533215036121435017157 0ustar nileshnileshTESTS = \ directoryTest \ fileTest \ timeTest \ view \ parameterizedView \ mapToParameterTheory \ badView \ dekker \ commands \ debug \ renaming \ dataStructures \ parameterization \ unification \ unification2 \ unification3 \ attributes \ diophantine \ variantUnification \ filteredVariantUnification \ variantNarrowing \ meseguerFiniteVariant \ variantMatching \ CU_Unification \ assocUnification \ AU_Unification \ AU_IrredUnification \ AU_and_A_UnificationEdgeCases \ sreduce \ smtTest \ narrow \ narrow2 \ continue \ parse \ bubble \ rot13 \ pconst \ pconst2 \ pconst3 \ pconst4 \ parameterizedConstant \ pconst5 \ initialEqualityPredicate MAUDE_FILES = \ directoryTest.maude \ fileTest.maude \ timeTest.maude \ view.maude \ parameterizedView.maude \ mapToParameterTheory.maude \ badView.maude \ dekker.maude \ commands.maude \ debug.maude \ renaming.maude \ dataStructures.maude \ parameterization.maude \ unification.maude \ unification2.maude \ unification3.maude \ attributes.maude \ diophantine.maude \ variantUnification.maude \ filteredVariantUnification.maude \ variantNarrowing.maude \ meseguerFiniteVariant.maude \ variantMatching.maude \ CU_Unification.maude \ assocUnification.maude \ AU_Unification.maude \ AU_IrredUnification.maude \ AU_and_A_UnificationEdgeCases.maude \ sreduce.maude \ smtTest.maude \ narrow.maude \ narrow2.maude \ continue.maude \ parse.maude \ bubble.maude \ rot13.maude \ pconst.maude \ pconst2.maude \ pconst3.maude \ pconst4.maude \ parameterizedConstant.maude \ pconst5.maude \ initialEqualityPredicate.maude RESULT_FILES = \ directoryTest.expected \ fileTest.expected \ timeTest.expected \ view.expected \ parameterizedView.expected \ mapToParameterTheory.expected \ badView.expected \ dekker.expected \ commands.expected \ debug.expected \ renaming.expected \ dataStructures.expected \ parameterization.expected \ unification.expected \ unification2.expected \ unification3.expected \ attributes.expected \ diophantine.expected \ variantUnification.expected \ filteredVariantUnification.expected \ variantNarrowing.expected \ meseguerFiniteVariant.expected \ variantMatching.expected \ CU_Unification.expected \ assocUnification.expected \ AU_Unification.expected \ AU_IrredUnification.expected \ AU_and_A_UnificationEdgeCases.expected \ sreduce.expected \ smtTest.expected \ narrow.expected \ narrow2.expected \ continue.expected \ parse.expected \ bubble.expected \ rot13.expected \ pconst.expected \ pconst2.expected \ pconst3.expected \ pconst4.expected \ parameterizedConstant.expected \ pconst5.expected \ initialEqualityPredicate.expected EXTRA_DIST = $(TESTS) $(MAUDE_FILES) $(RESULT_FILES) Maude-Maude3.5.1/tests/Misc/CU_Unification.maude0000664000175000017510000000230015036121435020764 0ustar nileshnileshset show timing off . *** Ul theory fmod FOO is sort Foo . op f : Foo Foo -> Foo [left id: 1f] . op 1f : -> Foo . vars U V W X Y Z : Foo . endfm unify f(X, Y) =? f(U, V) . variant unify f(X, Y) =? f(U, V) . unify f(X, Y) =? X . variant unify f(X, Y) =? X . unify f(X, Y) =? Y . variant unify f(X, Y) =? Y . *** Ur theory fmod FOO2 is sort Foo . op f : Foo Foo -> Foo [right id: 1f] . op 1f : -> Foo . vars U V W X Y Z : Foo . endfm unify f(X, Y) =? f(U, V) . variant unify f(X, Y) =? f(U, V) . unify f(X, Y) =? X . variant unify f(X, Y) =? X . unify f(X, Y) =? Y . variant unify f(X, Y) =? Y . *** U theory fmod FOO3 is sort Foo . op f : Foo Foo -> Foo [id: 1f] . op 1f : -> Foo . vars U V W X Y Z : Foo . endfm unify f(X, Y) =? f(U, V) . variant unify f(X, Y) =? f(U, V) . unify f(X, Y) =? X . variant unify f(X, Y) =? X . unify f(X, Y) =? Y . variant unify f(X, Y) =? Y . *** CU theory fmod FOO4 is sort Foo . op f : Foo Foo -> Foo [comm id: 1f] . op 1f : -> Foo . vars U V W X Y Z : Foo . endfm unify f(X, Y) =? f(U, V) . variant unify f(X, Y) =? f(U, V) . unify f(X, Y) =? X . variant unify f(X, Y) =? X . unify f(X, Y) =? Y . variant unify f(X, Y) =? Y . Maude-Maude3.5.1/tests/Misc/CU_Unification.expected0000664000175000017510000001475615036121435021514 0ustar nileshnilesh========================================== unify in FOO : f(X, Y) =? f(U, V) . Unifier 1 X --> #1:Foo Y --> #2:Foo U --> #1:Foo V --> #2:Foo Unifier 2 X --> 1f Y --> #1:Foo U --> 1f V --> #1:Foo Unifier 3 X --> 1f Y --> f(#1:Foo, #2:Foo) U --> #1:Foo V --> #2:Foo Unifier 4 X --> 1f Y --> #1:Foo U --> 1f V --> #1:Foo Unifier 5 X --> #1:Foo Y --> #2:Foo U --> 1f V --> f(#1:Foo, #2:Foo) ========================================== variant unify in FOO : f(X, Y) =? f(U, V) . Unifier 1 rewrites: 0 X --> %1:Foo Y --> %2:Foo U --> %1:Foo V --> %2:Foo Unifier 2 rewrites: 0 X --> 1f Y --> f(%1:Foo, %2:Foo) U --> %1:Foo V --> %2:Foo Unifier 3 rewrites: 0 X --> %1:Foo Y --> %2:Foo U --> 1f V --> f(%1:Foo, %2:Foo) No more unifiers. rewrites: 0 ========================================== unify in FOO : f(X, Y) =? X . Unifier 1 X --> 1f Y --> 1f ========================================== variant unify in FOO : f(X, Y) =? X . Unifier 1 rewrites: 0 X --> 1f Y --> 1f No more unifiers. rewrites: 0 ========================================== unify in FOO : f(X, Y) =? Y . Unifier 1 X --> 1f Y --> #1:Foo ========================================== variant unify in FOO : f(X, Y) =? Y . Unifier 1 rewrites: 0 X --> 1f Y --> %1:Foo No more unifiers. rewrites: 0 ========================================== unify in FOO2 : f(X, Y) =? f(U, V) . Unifier 1 X --> #1:Foo Y --> #2:Foo U --> #1:Foo V --> #2:Foo Unifier 2 X --> #1:Foo Y --> 1f U --> #1:Foo V --> 1f Unifier 3 X --> f(#1:Foo, #2:Foo) Y --> 1f U --> #1:Foo V --> #2:Foo Unifier 4 X --> #1:Foo Y --> 1f U --> #1:Foo V --> 1f Unifier 5 X --> #1:Foo Y --> #2:Foo U --> f(#1:Foo, #2:Foo) V --> 1f ========================================== variant unify in FOO2 : f(X, Y) =? f(U, V) . Unifier 1 rewrites: 0 X --> %1:Foo Y --> %2:Foo U --> %1:Foo V --> %2:Foo Unifier 2 rewrites: 0 X --> f(%1:Foo, %2:Foo) Y --> 1f U --> %1:Foo V --> %2:Foo Unifier 3 rewrites: 0 X --> %1:Foo Y --> %2:Foo U --> f(%1:Foo, %2:Foo) V --> 1f No more unifiers. rewrites: 0 ========================================== unify in FOO2 : f(X, Y) =? X . Unifier 1 X --> #1:Foo Y --> 1f ========================================== variant unify in FOO2 : f(X, Y) =? X . Unifier 1 rewrites: 0 X --> %1:Foo Y --> 1f No more unifiers. rewrites: 0 ========================================== unify in FOO2 : f(X, Y) =? Y . Unifier 1 X --> 1f Y --> 1f ========================================== variant unify in FOO2 : f(X, Y) =? Y . Unifier 1 rewrites: 0 X --> 1f Y --> 1f No more unifiers. rewrites: 0 ========================================== unify in FOO3 : f(X, Y) =? f(U, V) . Unifier 1 X --> #1:Foo Y --> #2:Foo U --> #1:Foo V --> #2:Foo Unifier 2 X --> 1f Y --> #1:Foo U --> 1f V --> #1:Foo Unifier 3 X --> 1f Y --> #1:Foo U --> #1:Foo V --> 1f Unifier 4 X --> 1f Y --> f(#1:Foo, #2:Foo) U --> #1:Foo V --> #2:Foo Unifier 5 X --> #1:Foo Y --> 1f U --> 1f V --> #1:Foo Unifier 6 X --> #1:Foo Y --> 1f U --> #1:Foo V --> 1f Unifier 7 X --> f(#1:Foo, #2:Foo) Y --> 1f U --> #1:Foo V --> #2:Foo Unifier 8 X --> 1f Y --> #1:Foo U --> 1f V --> #1:Foo Unifier 9 X --> #1:Foo Y --> 1f U --> 1f V --> #1:Foo Unifier 10 X --> #1:Foo Y --> #2:Foo U --> 1f V --> f(#1:Foo, #2:Foo) Unifier 11 X --> 1f Y --> #1:Foo U --> #1:Foo V --> 1f Unifier 12 X --> #1:Foo Y --> 1f U --> #1:Foo V --> 1f Unifier 13 X --> #1:Foo Y --> #2:Foo U --> f(#1:Foo, #2:Foo) V --> 1f ========================================== variant unify in FOO3 : f(X, Y) =? f(U, V) . Unifier 1 rewrites: 0 X --> %1:Foo Y --> %2:Foo U --> %1:Foo V --> %2:Foo Unifier 2 rewrites: 0 X --> 1f Y --> f(%1:Foo, %2:Foo) U --> %1:Foo V --> %2:Foo Unifier 3 rewrites: 0 X --> f(%1:Foo, %2:Foo) Y --> 1f U --> %1:Foo V --> %2:Foo Unifier 4 rewrites: 0 X --> %1:Foo Y --> %2:Foo U --> 1f V --> f(%1:Foo, %2:Foo) Unifier 5 rewrites: 0 X --> %1:Foo Y --> %2:Foo U --> f(%1:Foo, %2:Foo) V --> 1f No more unifiers. rewrites: 0 ========================================== unify in FOO3 : f(X, Y) =? X . Unifier 1 X --> 1f Y --> 1f Unifier 2 X --> #1:Foo Y --> 1f ========================================== variant unify in FOO3 : f(X, Y) =? X . Unifier 1 rewrites: 0 X --> %1:Foo Y --> 1f No more unifiers. rewrites: 0 ========================================== unify in FOO3 : f(X, Y) =? Y . Unifier 1 X --> 1f Y --> #1:Foo Unifier 2 X --> 1f Y --> 1f ========================================== variant unify in FOO3 : f(X, Y) =? Y . Unifier 1 rewrites: 0 X --> 1f Y --> %1:Foo No more unifiers. rewrites: 0 ========================================== unify in FOO4 : f(X, Y) =? f(U, V) . Unifier 1 X --> #1:Foo Y --> #2:Foo V --> #1:Foo U --> #2:Foo Unifier 2 X --> #2:Foo Y --> #1:Foo V --> #1:Foo U --> #2:Foo Unifier 3 X --> 1f Y --> #1:Foo V --> 1f U --> #1:Foo Unifier 4 X --> 1f Y --> #1:Foo V --> #1:Foo U --> 1f Unifier 5 X --> 1f Y --> f(#1:Foo, #2:Foo) V --> #1:Foo U --> #2:Foo Unifier 6 X --> #1:Foo Y --> 1f V --> 1f U --> #1:Foo Unifier 7 X --> #1:Foo Y --> 1f V --> #1:Foo U --> 1f Unifier 8 X --> f(#1:Foo, #2:Foo) Y --> 1f V --> #1:Foo U --> #2:Foo Unifier 9 X --> 1f Y --> #1:Foo V --> 1f U --> #1:Foo Unifier 10 X --> #1:Foo Y --> 1f V --> 1f U --> #1:Foo Unifier 11 X --> #1:Foo Y --> #2:Foo V --> 1f U --> f(#1:Foo, #2:Foo) Unifier 12 X --> 1f Y --> #1:Foo V --> #1:Foo U --> 1f Unifier 13 X --> #1:Foo Y --> 1f V --> #1:Foo U --> 1f Unifier 14 X --> #1:Foo Y --> #2:Foo V --> f(#1:Foo, #2:Foo) U --> 1f ========================================== variant unify in FOO4 : f(X, Y) =? f(U, V) . Unifier 1 rewrites: 0 X --> %1:Foo Y --> %2:Foo V --> %1:Foo U --> %2:Foo Unifier 2 rewrites: 0 X --> %2:Foo Y --> %1:Foo V --> %1:Foo U --> %2:Foo Unifier 3 rewrites: 0 X --> 1f Y --> f(%1:Foo, %2:Foo) V --> %1:Foo U --> %2:Foo Unifier 4 rewrites: 0 X --> f(%1:Foo, %2:Foo) Y --> 1f V --> %1:Foo U --> %2:Foo Unifier 5 rewrites: 0 X --> %1:Foo Y --> %2:Foo V --> 1f U --> f(%1:Foo, %2:Foo) Unifier 6 rewrites: 0 X --> %1:Foo Y --> %2:Foo V --> f(%1:Foo, %2:Foo) U --> 1f No more unifiers. rewrites: 0 ========================================== unify in FOO4 : f(X, Y) =? X . Unifier 1 X --> 1f Y --> 1f Unifier 2 X --> #1:Foo Y --> 1f ========================================== variant unify in FOO4 : f(X, Y) =? X . Unifier 1 rewrites: 0 X --> %1:Foo Y --> 1f No more unifiers. rewrites: 0 ========================================== unify in FOO4 : f(X, Y) =? Y . Unifier 1 X --> 1f Y --> #1:Foo Unifier 2 X --> 1f Y --> 1f ========================================== variant unify in FOO4 : f(X, Y) =? Y . Unifier 1 rewrites: 0 X --> 1f Y --> %1:Foo No more unifiers. rewrites: 0 Bye. Maude-Maude3.5.1/tests/Misc/CU_Unification0000775000175000017510000000036415036121435017705 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/CU_Unification.maude -no-banner -no-advise \ > CU_Unification.out 2>&1 diff $srcdir/CU_Unification.expected CU_Unification.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/AU_and_A_UnificationEdgeCases.maude0000664000175000017510000000474215036121435023624 0ustar nileshnilesh*** *** Tests for edge cases of associative-identity and *** associative unification algorithms. *** set show timing off . ***( 1/26/21 This example shows that replacing a constrained variable P with unconstrained variables A B leads to unnecessary incompleteness in versions before Alpha133. ) fmod ASSOC-LIST is sorts Elt Pair List . subsort Elt Pair < List . op __ : List List -> List [assoc] . op __ : Elt Elt -> Pair [assoc] . op rev : List -> List . vars A B C X Y Z : List . vars P Q R : Pair . vars E F G : Elt . endfm unify P =? A B /\ X P =? P Y . ***( 1/27/21 This example show that the imperfect splitting of upperbound on T to give upperbounds of 2, 1, 1 on A, B, C is then tightened to 1, 1, 1 in the post hoc PigPug::tightenConstraints() pass. A corner case that shows that constraint tightening is possible and might be useful in a system of equations. 5/26/21 We now rely on WordLevel::checkAssignmentNormalCase() in the next WordLevel to do the same tightening on variables that haven't been eliminated. ) fmod ASSOC-LIST is sorts Elt Pair Triple List . subsort Elt < Pair < Triple < List . op __ : List List -> List [assoc] . op __ : Elt Elt -> Pair [assoc] . op __ : Elt Pair -> Triple [assoc] . op __ : Pair Elt -> Triple [assoc] . op rev : List -> List . vars A B C X Y Z : List . vars P Q R : Pair . vars E F G : Elt . vars S T U V : Triple . endfm unify T X =? A B C Y . ***( 2/18/21 Demonstrate Alpha133 optimization that avoids identity assignments, and two cases where a sort-decreasing identity axiom foils the optimization. ) fmod FOO is sort Foo . ops 1 a : -> Foo . op __ : Foo Foo -> Foo [assoc id: 1] . vars W X Y Z : Foo . endfm unify W =? Y Z . irred unify W =? Y Z . fmod FOO2 is sorts Lo Hi . subsort Lo < Hi . op 1 : -> Lo . op __ : Hi Hi -> Hi [assoc id: 1] . vars W X Y Z : Lo . endfm unify W =? Y Z . irred unify W =? Y Z . fmod FOO3 is sorts Lo Hi . subsort Lo < Hi . op 1 : -> Hi . op __ : Hi Hi -> Hi [assoc id: 1] . op __ : Lo Lo -> Lo [ditto] . vars W X : Lo . vars Y Z : Hi . endfm unify W =? Y Z . irred unify W =? Y Z . ***( 2/18/21 Demonstrate Alpha133 optimization that avoids equality steps in PigPug and a case where a following equation foils the optimization. ) fmod FOO is sort Foo . ops 1 a : -> Foo . op __ : Foo Foo -> Foo [assoc id: 1] . vars W X Y Z : Foo . endfm unify W X =? Y Z . irred unify W =? Y Z . unify W X =? Y Z /\ W X =? a a . irred unify W X =? Y Z /\ W X =? a a . Maude-Maude3.5.1/tests/Misc/AU_and_A_UnificationEdgeCases.expected0000664000175000017510000000736615036121435024337 0ustar nileshnilesh========================================== unify in ASSOC-LIST : P =? A B /\ X P =? P Y . Unifier 1 P --> #1:Elt #2:Elt A --> #1:Elt B --> #2:Elt X --> #1:Elt #2:Elt #3:List Y --> #3:List #1:Elt #2:Elt Unifier 2 P --> #1:Elt #2:Elt A --> #1:Elt B --> #2:Elt X --> #1:Elt #2:Elt Y --> #1:Elt #2:Elt Unifier 3 P --> #1:Elt #1:Elt A --> #1:Elt B --> #1:Elt X --> #1:Elt Y --> #1:Elt ========================================== unify in ASSOC-LIST : T X =? A B C Y . Unifier 1 T --> #1:Elt #2:Elt #4:Elt X --> #5:List #3:List A --> #1:Elt B --> #2:Elt C --> #4:Elt #5:List Y --> #3:List Unifier 2 T --> #2:Elt #3:Elt #4:Elt X --> #1:List A --> #2:Elt B --> #3:Elt C --> #4:Elt Y --> #1:List Unifier 3 T --> #1:Elt #4:Pair X --> #5:List #2:List #3:List A --> #1:Elt B --> #4:Pair #5:List C --> #2:List Y --> #3:List Unifier 4 T --> #1:Pair #4:Elt X --> #5:List #2:List #3:List A --> #1:Pair B --> #4:Elt #5:List C --> #2:List Y --> #3:List Unifier 5 T --> #1:Elt #2:Pair X --> #3:List #4:List A --> #1:Elt B --> #2:Pair C --> #3:List Y --> #4:List Unifier 6 T --> #1:Pair #2:Elt X --> #3:List #4:List A --> #1:Pair B --> #2:Elt C --> #3:List Y --> #4:List Unifier 7 T --> #1:Triple X --> #5:List #2:List #3:List #4:List A --> #1:Triple #5:List B --> #2:List C --> #3:List Y --> #4:List Unifier 8 T --> #1:Triple X --> #2:List #3:List #4:List A --> #1:Triple B --> #2:List C --> #3:List Y --> #4:List ========================================== unify in FOO : W =? Y Z . Unifier 1 W --> #1:Foo #2:Foo Y --> #1:Foo Z --> #2:Foo ========================================== irredundant unify in FOO : W =? Y Z . Unifier 1 W --> #1:Foo #2:Foo Y --> #1:Foo Z --> #2:Foo ========================================== unify in FOO2 : W =? Y Z . Unifier 1 W --> #1:Lo Y --> 1 Z --> #1:Lo Unifier 2 W --> #1:Lo Y --> #1:Lo Z --> 1 Unifier 3 W --> 1 Y --> 1 Z --> 1 ========================================== irredundant unify in FOO2 : W =? Y Z . Unifier 1 W --> #1:Lo Y --> 1 Z --> #1:Lo Unifier 2 W --> #1:Lo Y --> #1:Lo Z --> 1 ========================================== unify in FOO3 : W =? Y Z . Unifier 1 W --> #1:Lo #2:Lo Y --> #1:Lo Z --> #2:Lo Unifier 2 W --> #1:Lo Y --> 1 Z --> #1:Lo Unifier 3 W --> #1:Lo Y --> #1:Lo Z --> 1 ========================================== irredundant unify in FOO3 : W =? Y Z . Unifier 1 W --> #1:Lo #2:Lo Y --> #1:Lo Z --> #2:Lo Unifier 2 W --> #1:Lo Y --> 1 Z --> #1:Lo Unifier 3 W --> #1:Lo Y --> #1:Lo Z --> 1 ========================================== unify in FOO : W X =? Y Z . Unifier 1 W --> #2:Foo #3:Foo X --> #1:Foo Y --> #2:Foo Z --> #3:Foo #1:Foo Unifier 2 W --> #1:Foo X --> #3:Foo #2:Foo Y --> #1:Foo #3:Foo Z --> #2:Foo ========================================== irredundant unify in FOO : W =? Y Z . Unifier 1 W --> #1:Foo #2:Foo Y --> #1:Foo Z --> #2:Foo ========================================== unify in FOO : W X =? Y Z /\ W X =? a a . Unifier 1 W --> a X --> a Y --> a Z --> a Unifier 2 W --> 1 X --> a a Y --> a Z --> a Unifier 3 W --> a a X --> 1 Y --> a Z --> a Unifier 4 W --> a X --> a Y --> 1 Z --> a a Unifier 5 W --> 1 X --> a a Y --> 1 Z --> a a Unifier 6 W --> a a X --> 1 Y --> 1 Z --> a a Unifier 7 W --> a X --> a Y --> a a Z --> 1 Unifier 8 W --> 1 X --> a a Y --> a a Z --> 1 Unifier 9 W --> a a X --> 1 Y --> a a Z --> 1 ========================================== irredundant unify in FOO : W X =? Y Z /\ W X =? a a . Unifier 1 W --> a X --> a Y --> a Z --> a Unifier 2 W --> 1 X --> a a Y --> a Z --> a Unifier 3 W --> a a X --> 1 Y --> a Z --> a Unifier 4 W --> a X --> a Y --> 1 Z --> a a Unifier 5 W --> 1 X --> a a Y --> 1 Z --> a a Unifier 6 W --> a a X --> 1 Y --> 1 Z --> a a Unifier 7 W --> a X --> a Y --> a a Z --> 1 Unifier 8 W --> 1 X --> a a Y --> a a Z --> 1 Unifier 9 W --> a a X --> 1 Y --> a a Z --> 1 Bye. Maude-Maude3.5.1/tests/Misc/AU_and_A_UnificationEdgeCases0000775000175000017510000000046015036121435022526 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/AU_and_A_UnificationEdgeCases.maude -no-banner -no-advise \ > AU_and_A_UnificationEdgeCases.out 2>&1 diff $srcdir/AU_and_A_UnificationEdgeCases.expected AU_and_A_UnificationEdgeCases.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/AU_Unification.maude0000664000175000017510000000722715036121435020777 0ustar nileshnilesh*** *** Tests for associative-identity unification. *** set show timing off . fmod AU-TEST is sort Foo . op 1 : -> Foo . op __ : Foo Foo -> Foo [assoc id: 1] . ops a b c : -> Foo . vars A B C X Y Z : Foo . endfm *** one side goes to one variable unify X =? Y X /\ Z Y =? A B . variant unify X =? Y X /\ Z Y =? A B . *** one side goes to empty unify X =? Y X /\ Z C =? C /\ Z Y =? A B . variant unify X =? Y X /\ Z C =? C /\ Z Y =? A B . *** both sides go to one variable unify X =? Y X /\ A C =? C /\ Z Y =? A B . variant unify X =? Y X /\ A C =? C /\ Z Y =? A B . *** both side to to empty unify X =? Y X /\ Y =? A B Z /\ Z Y =? A B . variant unify X =? Y X /\ Y =? A B Z /\ Z Y =? A B . *** AU problem completely nulls out unify X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X =? Y Z . variant unify X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X =? Y Z . unify X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X Y =? Y Z . variant unify X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X Y =? Y Z . *** null equation unify X =? Y X /\ 1 =? A B Z /\ Z Y =? A B . variant unify X =? Y X /\ 1 =? A B Z /\ Z Y =? A B . unify X =? Y X /\ C =? 1 /\ C =? A B Z /\ Z Y =? A B . variant unify X =? Y X /\ C =? 1 /\ C =? A B Z /\ Z Y =? A B . *** collapse unify A B C =? a . variant unify A B C =? a . unify Y =? 1 /\ X =? Y Z . variant unify Y =? 1 /\ X =? Y Z . *** linear unify A B =? X Y . variant unify A B =? X Y . unify A B =? X Y Z . variant unify A B =? X Y Z . unify A B C =? X Y Z . variant unify A B C =? X Y Z . *** order-sorted unification fmod LIST is sorts Elt List . subsort Elt < List . op nil : -> List . op __ : List List -> List [assoc id: nil] . vars L M N : List . vars E F G : Elt . endfm unify E =? L M N . variant unify E =? L M N . unify E L E M =? E N F N . variant unify E L E M =? E N F N . *** cycle breaking fmod NAT' is protecting BOOL . sorts Zero NzNat Nat . subsort Zero NzNat < Nat . op 0 : -> Zero . op s_ : Nat -> NzNat [iter] . op _*_ : NzNat NzNat -> NzNat [assoc id: s(0) prec 31] . op _*_ : Nat Nat -> Nat [ditto] . vars W X Y Z A B C D : Nat . endfm *** cycle breaking through S theory unify X =? s (X * Y) . unify X =? s X * Y . *** theory conflict unify s X =? s X * Y . unify s X =? X * Y . fmod COMM is sort Foo . ops a b c d : -> Foo . op f : Foo Foo -> Foo [assoc id: c(a, b)] . op c : Foo Foo -> Foo [comm] . vars W X Y Z A B C D : Foo . endfm *** cycle breaking through comm theory unify X =? c(f(X, Y), Z) . fmod FOO2 is sort Foo . ops a b c d : -> Foo . op f : Foo Foo -> Foo [assoc id: g(c, d)] . op g : Foo Foo -> Foo [assoc id: f(a, b)] . vars X Y : Foo . endfm *** cycle breaking with non-disjoint identities unify X =? f(Y, a, b) /\ Y =? g(X, c, d) . fmod FOO3 is sort Foo . ops a b : -> Foo . op h : Foo -> Foo . op f : Foo Foo -> Foo [assoc id: h(f(a, b))] . vars X Y : Foo . endfm *** cycle breaking with non-disjoint identity unify X =? f(Y, a, b) /\ Y =? h(X) . *** order-sorted mgus need not be unsorted mgus fmod AU-UNSORTED is sort Foo . op 1 : -> Foo . op f : Foo Foo -> Foo [assoc id: 1] . endfm *** 1 mgu unify X:Foo =? f(Y:Foo, Z:Foo) . variant unify X:Foo =? f(Y:Foo, Z:Foo) . fmod AU-SORTED1 is sorts Lo Hi . subsort Lo < Hi . op 1 : -> Hi . op f : Hi Hi -> Hi [assoc id: 1] . endfm *** unsorted mgu can't be sorted so collapse solutions becomes mgus unify X:Lo =? f(Y:Hi, Z:Hi) . variant unify X:Lo =? f(Y:Hi, Z:Hi) . fmod AU-SORTED2 is sorts Lo Hi . subsort Lo < Hi . op 1 : -> Hi . op f : Hi Hi -> Hi [assoc id: 1] . op f : Lo Lo -> Lo [assoc id: 1] . endfm *** collapse solutions not subsumed by non-collapse solution after sorting unify X:Lo =? f(Y:Hi, Z:Hi) . variant unify X:Lo =? f(Y:Hi, Z:Hi) . Maude-Maude3.5.1/tests/Misc/AU_Unification.expected0000664000175000017510000002570515036121435021506 0ustar nileshnilesh========================================== unify in AU-TEST : X =? Y X /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 Z --> #2:Foo #3:Foo A --> #2:Foo B --> #3:Foo ========================================== variant unify in AU-TEST : X =? Y X /\ Z Y =? A B . Unifier 1 rewrites: 0 X --> %1:Foo Z --> %2:Foo %3:Foo Y --> 1 A --> %2:Foo B --> %3:Foo No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : X =? Y X /\ Z C =? C /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 Z --> 1 C --> #2:Foo A --> 1 B --> 1 ========================================== variant unify in AU-TEST : X =? Y X /\ Z C =? C /\ Z Y =? A B . Unifier 1 rewrites: 0 X --> %1:Foo Z --> 1 C --> %2:Foo Y --> 1 A --> 1 B --> 1 No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : X =? Y X /\ A C =? C /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 A --> 1 C --> #2:Foo Z --> #3:Foo B --> #3:Foo ========================================== variant unify in AU-TEST : X =? Y X /\ A C =? C /\ Z Y =? A B . Unifier 1 rewrites: 0 X --> %1:Foo A --> 1 C --> %2:Foo Z --> %3:Foo Y --> 1 B --> %3:Foo No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : X =? Y X /\ Y =? A B Z /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 A --> 1 B --> 1 Z --> 1 ========================================== variant unify in AU-TEST : X =? Y X /\ Y =? A B Z /\ Z Y =? A B . Unifier 1 rewrites: 0 X --> %1:Foo Y --> 1 Z --> 1 A --> 1 B --> 1 No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X =? Y Z . Unifier 1 X --> 1 Y --> 1 Z --> 1 ========================================== variant unify in AU-TEST : X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X =? Y Z . Unifier 1 rewrites: 0 X --> 1 Y --> 1 Z --> 1 No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X Y =? Y Z . Unifier 1 X --> 1 Y --> 1 Z --> 1 ========================================== variant unify in AU-TEST : X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X Y =? Y Z . Unifier 1 rewrites: 0 X --> 1 Y --> 1 Z --> 1 No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : X =? Y X /\ 1 =? A B Z /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 A --> 1 B --> 1 Z --> 1 ========================================== variant unify in AU-TEST : X =? Y X /\ 1 =? A B Z /\ Z Y =? A B . Unifier 1 rewrites: 0 X --> %1:Foo Z --> 1 Y --> 1 A --> 1 B --> 1 No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : X =? Y X /\ C =? 1 /\ C =? A B Z /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 C --> 1 A --> 1 B --> 1 Z --> 1 ========================================== variant unify in AU-TEST : X =? Y X /\ C =? 1 /\ C =? A B Z /\ Z Y =? A B . Unifier 1 rewrites: 0 X --> %1:Foo C --> 1 Z --> 1 Y --> 1 A --> 1 B --> 1 No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : A B C =? a . Unifier 1 A --> 1 B --> 1 C --> a Unifier 2 A --> 1 B --> a C --> 1 Unifier 3 A --> a B --> 1 C --> 1 ========================================== variant unify in AU-TEST : A B C =? a . Unifier 1 rewrites: 0 A --> 1 B --> 1 C --> a Unifier 2 rewrites: 0 A --> 1 B --> a C --> 1 Unifier 3 rewrites: 0 A --> a B --> 1 C --> 1 No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : Y =? 1 /\ X =? Y Z . Unifier 1 Y --> 1 X --> #1:Foo Z --> #1:Foo ========================================== variant unify in AU-TEST : Y =? 1 /\ X =? Y Z . Unifier 1 rewrites: 0 Y --> 1 X --> %1:Foo Z --> %1:Foo No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : A B =? X Y . Unifier 1 A --> #2:Foo #3:Foo B --> #1:Foo X --> #2:Foo Y --> #3:Foo #1:Foo Unifier 2 A --> #1:Foo B --> #3:Foo #2:Foo X --> #1:Foo #3:Foo Y --> #2:Foo ========================================== variant unify in AU-TEST : A B =? X Y . Unifier 1 rewrites: 0 A --> %2:Foo %3:Foo B --> %1:Foo X --> %2:Foo Y --> %3:Foo %1:Foo Unifier 2 rewrites: 0 A --> %1:Foo B --> %3:Foo %2:Foo X --> %1:Foo %3:Foo Y --> %2:Foo No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : A B =? X Y Z . Unifier 1 A --> #2:Foo #3:Foo #4:Foo B --> #1:Foo X --> #2:Foo Y --> #3:Foo Z --> #4:Foo #1:Foo Unifier 2 A --> #1:Foo #3:Foo B --> #4:Foo #2:Foo X --> #1:Foo Y --> #3:Foo #4:Foo Z --> #2:Foo Unifier 3 A --> #1:Foo B --> #4:Foo #2:Foo #3:Foo X --> #1:Foo #4:Foo Y --> #2:Foo Z --> #3:Foo ========================================== variant unify in AU-TEST : A B =? X Y Z . Unifier 1 rewrites: 0 A --> %2:Foo %3:Foo %4:Foo B --> %1:Foo X --> %2:Foo Y --> %3:Foo Z --> %4:Foo %1:Foo Unifier 2 rewrites: 0 A --> %1:Foo %3:Foo B --> %4:Foo %2:Foo X --> %1:Foo Y --> %3:Foo %4:Foo Z --> %2:Foo Unifier 3 rewrites: 0 A --> %1:Foo B --> %4:Foo %2:Foo %3:Foo X --> %1:Foo %4:Foo Y --> %2:Foo Z --> %3:Foo No more unifiers. rewrites: 0 ========================================== unify in AU-TEST : A B C =? X Y Z . Unifier 1 A --> #3:Foo #4:Foo #5:Foo B --> #1:Foo C --> #2:Foo X --> #3:Foo Y --> #4:Foo Z --> #5:Foo #1:Foo #2:Foo Unifier 2 A --> #2:Foo #3:Foo B --> #4:Foo #5:Foo C --> #1:Foo X --> #2:Foo Y --> #3:Foo #4:Foo Z --> #5:Foo #1:Foo Unifier 3 A --> #2:Foo #4:Foo B --> #1:Foo C --> #5:Foo #3:Foo X --> #2:Foo Y --> #4:Foo #1:Foo #5:Foo Z --> #3:Foo Unifier 4 A --> #1:Foo B --> #4:Foo #3:Foo #5:Foo C --> #2:Foo X --> #1:Foo #4:Foo Y --> #3:Foo Z --> #5:Foo #2:Foo Unifier 5 A --> #1:Foo B --> #3:Foo #4:Foo C --> #5:Foo #2:Foo X --> #1:Foo #3:Foo Y --> #4:Foo #5:Foo Z --> #2:Foo Unifier 6 A --> #1:Foo B --> #2:Foo C --> #5:Foo #3:Foo #4:Foo X --> #1:Foo #2:Foo #5:Foo Y --> #3:Foo Z --> #4:Foo ========================================== variant unify in AU-TEST : A B C =? X Y Z . Unifier 1 rewrites: 0 A --> %3:Foo %4:Foo %5:Foo B --> %1:Foo C --> %2:Foo X --> %3:Foo Y --> %4:Foo Z --> %5:Foo %1:Foo %2:Foo Unifier 2 rewrites: 0 A --> %2:Foo %3:Foo B --> %4:Foo %5:Foo C --> %1:Foo X --> %2:Foo Y --> %3:Foo %4:Foo Z --> %5:Foo %1:Foo Unifier 3 rewrites: 0 A --> %2:Foo %4:Foo B --> %1:Foo C --> %5:Foo %3:Foo X --> %2:Foo Y --> %4:Foo %1:Foo %5:Foo Z --> %3:Foo Unifier 4 rewrites: 0 A --> %1:Foo B --> %4:Foo %3:Foo %5:Foo C --> %2:Foo X --> %1:Foo %4:Foo Y --> %3:Foo Z --> %5:Foo %2:Foo Unifier 5 rewrites: 0 A --> %1:Foo B --> %3:Foo %4:Foo C --> %5:Foo %2:Foo X --> %1:Foo %3:Foo Y --> %4:Foo %5:Foo Z --> %2:Foo Unifier 6 rewrites: 0 A --> %1:Foo B --> %2:Foo C --> %5:Foo %3:Foo %4:Foo X --> %1:Foo %2:Foo %5:Foo Y --> %3:Foo Z --> %4:Foo No more unifiers. rewrites: 0 ========================================== unify in LIST : E =? L M N . Unifier 1 E --> #1:Elt L --> nil M --> nil N --> #1:Elt Unifier 2 E --> #1:Elt L --> nil M --> #1:Elt N --> nil Unifier 3 E --> #1:Elt L --> #1:Elt M --> nil N --> nil ========================================== variant unify in LIST : E =? L M N . Unifier 1 rewrites: 0 E --> %1:Elt L --> nil M --> nil N --> %1:Elt Unifier 2 rewrites: 0 E --> %1:Elt L --> nil M --> %1:Elt N --> nil Unifier 3 rewrites: 0 E --> %1:Elt L --> %1:Elt M --> nil N --> nil No more unifiers. rewrites: 0 ========================================== unify in LIST : E L E M =? E N F N . Unifier 1 E --> #1:Elt L --> #4:List #1:Elt #2:List #3:Elt #4:List M --> #2:List N --> #4:List #1:Elt #2:List F --> #3:Elt Unifier 2 E --> #1:Elt L --> #1:Elt #2:List #3:Elt M --> #2:List N --> #1:Elt #2:List F --> #3:Elt Unifier 3 E --> #1:Elt L --> #2:List M --> #4:List #3:Elt #2:List #1:Elt #4:List N --> #2:List #1:Elt #4:List F --> #3:Elt Unifier 4 E --> #1:Elt L --> #2:List M --> #3:Elt #2:List #1:Elt N --> #2:List #1:Elt F --> #3:Elt Unifier 5 E --> #1:Elt L --> #2:List M --> #2:List N --> #2:List F --> #1:Elt Unifier 6 E --> #1:Elt L --> nil M --> #3:List #2:Elt #1:Elt #3:List N --> #1:Elt #3:List F --> #2:Elt Unifier 7 E --> #1:Elt L --> nil M --> #2:Elt #1:Elt N --> #1:Elt F --> #2:Elt Unifier 8 E --> #1:Elt L --> #3:List #1:Elt #2:Elt #3:List M --> nil N --> #3:List #1:Elt F --> #2:Elt Unifier 9 E --> #1:Elt L --> #1:Elt #2:Elt M --> nil N --> #1:Elt F --> #2:Elt Unifier 10 E --> #1:Elt L --> nil M --> nil N --> nil F --> #1:Elt ========================================== variant unify in LIST : E L E M =? E N F N . Unifier 1 rewrites: 0 E --> %1:Elt L --> %4:List %1:Elt %2:List %3:Elt %4:List M --> %2:List N --> %4:List %1:Elt %2:List F --> %3:Elt Unifier 2 rewrites: 0 E --> %1:Elt L --> %2:List M --> %4:List %3:Elt %2:List %1:Elt %4:List N --> %2:List %1:Elt %4:List F --> %3:Elt Unifier 3 rewrites: 0 E --> %1:Elt L --> %2:List M --> %2:List N --> %2:List F --> %1:Elt No more unifiers. rewrites: 0 ========================================== unify in NAT' : X =? s (X * Y) . Unifier 1 X --> s 0 Y --> 0 Unifier 2 X --> s 0 Y --> 0 ========================================== unify in NAT' : X =? s X * Y . Unifier 1 X --> 0 Y --> 0 Unifier 2 X --> 0 Y --> 0 ========================================== unify in NAT' : s X =? s X * Y . Unifier 1 X --> #1:Nat Y --> s 0 Unifier 2 X --> 0 Y --> s 0 ========================================== unify in NAT' : s X =? X * Y . Unifier 1 X --> s 0 Y --> s_^2(0) ========================================== unify in COMM : X =? c(f(X, Y), Z) . Unifier 1 X --> c(a, b) Z --> a Y --> b Unifier 2 X --> c(a, b) Z --> b Y --> a ========================================== unify in FOO2 : X =? f(Y, a, b) /\ Y =? g(X, c, d) . Unifier 1 X --> f(a, b) Y --> g(c, d) Unifier 2 X --> f(a, b) Y --> g(c, d) ========================================== unify in FOO3 : X =? f(Y, a, b) /\ Y =? h(X) . Unifier 1 X --> f(a, b) Y --> h(f(a, b)) ========================================== unify in AU-UNSORTED : X:Foo =? f(Y:Foo, Z:Foo) . Unifier 1 X:Foo --> f(#1:Foo, #2:Foo) Y:Foo --> #1:Foo Z:Foo --> #2:Foo ========================================== variant unify in AU-UNSORTED : X:Foo =? f(Y:Foo, Z:Foo) . Unifier 1 rewrites: 0 X:Foo --> f(%1:Foo, %2:Foo) Y:Foo --> %1:Foo Z:Foo --> %2:Foo No more unifiers. rewrites: 0 ========================================== unify in AU-SORTED1 : X:Lo =? f(Y:Hi, Z:Hi) . Unifier 1 X:Lo --> #1:Lo Y:Hi --> 1 Z:Hi --> #1:Lo Unifier 2 X:Lo --> #1:Lo Y:Hi --> #1:Lo Z:Hi --> 1 ========================================== variant unify in AU-SORTED1 : X:Lo =? f(Y:Hi, Z:Hi) . Unifier 1 rewrites: 0 X:Lo --> %1:Lo Y:Hi --> 1 Z:Hi --> %1:Lo Unifier 2 rewrites: 0 X:Lo --> %1:Lo Y:Hi --> %1:Lo Z:Hi --> 1 No more unifiers. rewrites: 0 ========================================== unify in AU-SORTED2 : X:Lo =? f(Y:Hi, Z:Hi) . Unifier 1 X:Lo --> f(#1:Lo, #2:Lo) Y:Hi --> #1:Lo Z:Hi --> #2:Lo Unifier 2 X:Lo --> #1:Lo Y:Hi --> 1 Z:Hi --> #1:Lo Unifier 3 X:Lo --> #1:Lo Y:Hi --> #1:Lo Z:Hi --> 1 ========================================== variant unify in AU-SORTED2 : X:Lo =? f(Y:Hi, Z:Hi) . Unifier 1 rewrites: 0 X:Lo --> f(%1:Lo, %2:Lo) Y:Hi --> %1:Lo Z:Hi --> %2:Lo Unifier 2 rewrites: 0 X:Lo --> %1:Lo Y:Hi --> 1 Z:Hi --> %1:Lo Unifier 3 rewrites: 0 X:Lo --> %1:Lo Y:Hi --> %1:Lo Z:Hi --> 1 No more unifiers. rewrites: 0 Bye. Maude-Maude3.5.1/tests/Misc/AU_Unification0000775000175000017510000000036415036121435017703 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/AU_Unification.maude -no-banner -no-advise \ > AU_Unification.out 2>&1 diff $srcdir/AU_Unification.expected AU_Unification.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Misc/AU_IrredUnification.maude0000664000175000017510000000637315036121435021766 0ustar nileshnilesh*** *** Tests for associative-identity unification. *** This version only looks at irredundant unifiers *** because the number of irredundant unifiers shouldn't *** change as we optimize AU unification to avoid generating *** redundant unifiers. *** set show timing off . fmod AU-TEST is sort Foo . op 1 : -> Foo . op __ : Foo Foo -> Foo [assoc id: 1] . ops a b c : -> Foo . vars A B C X Y Z : Foo . endfm *** one side goes to one variable irred unify X =? Y X /\ Z Y =? A B . *** one side goes to empty irred unify X =? Y X /\ Z C =? C /\ Z Y =? A B . *** both sides go to one variable irred unify X =? Y X /\ A C =? C /\ Z Y =? A B . *** both side to to empty irred unify X =? Y X /\ Y =? A B Z /\ Z Y =? A B . *** AU problem completely nulls out irred unify X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X =? Y Z . irred unify X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X Y =? Y Z . *** null equation irred unify X =? Y X /\ 1 =? A B Z /\ Z Y =? A B . irred unify X =? Y X /\ C =? 1 /\ C =? A B Z /\ Z Y =? A B . *** collapse irred unify A B C =? a . irred unify Y =? 1 /\ X =? Y Z . *** linear irred unify A B =? X Y . irred unify A B =? X Y Z . irred unify A B C =? X Y Z . *** order-sorted unification fmod LIST is sorts Elt List . subsort Elt < List . op nil : -> List . op __ : List List -> List [assoc id: nil] . vars L M N : List . vars E F G : Elt . endfm irred unify E =? L M N . irred unify E L E M =? E N F N . *** cycle breaking fmod NAT' is protecting BOOL . sorts Zero NzNat Nat . subsort Zero NzNat < Nat . op 0 : -> Zero . op s_ : Nat -> NzNat [iter] . op _*_ : NzNat NzNat -> NzNat [assoc id: s(0) prec 31] . op _*_ : Nat Nat -> Nat [ditto] . vars W X Y Z A B C D : Nat . endfm *** cycle breaking through S theory irred unify X =? s (X * Y) . irred unify X =? s X * Y . *** theory conflict irred unify s X =? s X * Y . irred unify s X =? X * Y . fmod COMM is sort Foo . ops a b c d : -> Foo . op f : Foo Foo -> Foo [assoc id: c(a, b)] . op c : Foo Foo -> Foo [comm] . vars W X Y Z A B C D : Foo . endfm *** cycle breaking through comm theory irred unify X =? c(f(X, Y), Z) . fmod FOO2 is sort Foo . ops a b c d : -> Foo . op f : Foo Foo -> Foo [assoc id: g(c, d)] . op g : Foo Foo -> Foo [assoc id: f(a, b)] . vars X Y : Foo . endfm *** cycle breaking with non-disjoint identities irred unify X =? f(Y, a, b) /\ Y =? g(X, c, d) . fmod FOO3 is sort Foo . ops a b : -> Foo . op h : Foo -> Foo . op f : Foo Foo -> Foo [assoc id: h(f(a, b))] . vars X Y : Foo . endfm *** cycle breaking with non-disjoint identity irred unify X =? f(Y, a, b) /\ Y =? h(X) . *** order-sorted mgus need not be unsorted mgus fmod AU-UNSORTED is sort Foo . op 1 : -> Foo . op f : Foo Foo -> Foo [assoc id: 1] . endfm *** 1 mgu irred unify X:Foo =? f(Y:Foo, Z:Foo) . fmod AU-SORTED1 is sorts Lo Hi . subsort Lo < Hi . op 1 : -> Hi . op f : Hi Hi -> Hi [assoc id: 1] . endfm *** unsorted mgu can't be sorted so collapse solutions becomes mgus irred unify X:Lo =? f(Y:Hi, Z:Hi) . fmod AU-SORTED2 is sorts Lo Hi . subsort Lo < Hi . op 1 : -> Hi . op f : Hi Hi -> Hi [assoc id: 1] . op f : Lo Lo -> Lo [assoc id: 1] . endfm *** collapse solutions not subsumed by non-collapse solution after sorting irred unify X:Lo =? f(Y:Hi, Z:Hi) . Maude-Maude3.5.1/tests/Misc/AU_IrredUnification.expected0000664000175000017510000001241715036121435022470 0ustar nileshnilesh========================================== irredundant unify in AU-TEST : X =? Y X /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 Z --> #2:Foo #3:Foo A --> #2:Foo B --> #3:Foo ========================================== irredundant unify in AU-TEST : X =? Y X /\ Z C =? C /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 Z --> 1 C --> #2:Foo A --> 1 B --> 1 ========================================== irredundant unify in AU-TEST : X =? Y X /\ A C =? C /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 A --> 1 C --> #2:Foo Z --> #3:Foo B --> #3:Foo ========================================== irredundant unify in AU-TEST : X =? Y X /\ Y =? A B Z /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 A --> 1 B --> 1 Z --> 1 ========================================== irredundant unify in AU-TEST : X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X =? Y Z . Unifier 1 X --> 1 Y --> 1 Z --> 1 ========================================== irredundant unify in AU-TEST : X =? 1 /\ Y =? 1 /\ Z =? 1 /\ X Y =? Y Z . Unifier 1 X --> 1 Y --> 1 Z --> 1 ========================================== irredundant unify in AU-TEST : X =? Y X /\ 1 =? A B Z /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 A --> 1 B --> 1 Z --> 1 ========================================== irredundant unify in AU-TEST : X =? Y X /\ C =? 1 /\ C =? A B Z /\ Z Y =? A B . Unifier 1 X --> #1:Foo Y --> 1 C --> 1 A --> 1 B --> 1 Z --> 1 ========================================== irredundant unify in AU-TEST : A B C =? a . Unifier 1 A --> 1 B --> 1 C --> a Unifier 2 A --> 1 B --> a C --> 1 Unifier 3 A --> a B --> 1 C --> 1 ========================================== irredundant unify in AU-TEST : Y =? 1 /\ X =? Y Z . Unifier 1 Y --> 1 X --> #1:Foo Z --> #1:Foo ========================================== irredundant unify in AU-TEST : A B =? X Y . Unifier 1 A --> #2:Foo #3:Foo B --> #1:Foo X --> #2:Foo Y --> #3:Foo #1:Foo Unifier 2 A --> #1:Foo B --> #3:Foo #2:Foo X --> #1:Foo #3:Foo Y --> #2:Foo ========================================== irredundant unify in AU-TEST : A B =? X Y Z . Unifier 1 A --> #2:Foo #3:Foo #4:Foo B --> #1:Foo X --> #2:Foo Y --> #3:Foo Z --> #4:Foo #1:Foo Unifier 2 A --> #1:Foo #3:Foo B --> #4:Foo #2:Foo X --> #1:Foo Y --> #3:Foo #4:Foo Z --> #2:Foo Unifier 3 A --> #1:Foo B --> #4:Foo #2:Foo #3:Foo X --> #1:Foo #4:Foo Y --> #2:Foo Z --> #3:Foo ========================================== irredundant unify in AU-TEST : A B C =? X Y Z . Unifier 1 A --> #3:Foo #4:Foo #5:Foo B --> #1:Foo C --> #2:Foo X --> #3:Foo Y --> #4:Foo Z --> #5:Foo #1:Foo #2:Foo Unifier 2 A --> #2:Foo #3:Foo B --> #4:Foo #5:Foo C --> #1:Foo X --> #2:Foo Y --> #3:Foo #4:Foo Z --> #5:Foo #1:Foo Unifier 3 A --> #2:Foo #4:Foo B --> #1:Foo C --> #5:Foo #3:Foo X --> #2:Foo Y --> #4:Foo #1:Foo #5:Foo Z --> #3:Foo Unifier 4 A --> #1:Foo B --> #4:Foo #3:Foo #5:Foo C --> #2:Foo X --> #1:Foo #4:Foo Y --> #3:Foo Z --> #5:Foo #2:Foo Unifier 5 A --> #1:Foo B --> #3:Foo #4:Foo C --> #5:Foo #2:Foo X --> #1:Foo #3:Foo Y --> #4:Foo #5:Foo Z --> #2:Foo Unifier 6 A --> #1:Foo B --> #2:Foo C --> #5:Foo #3:Foo #4:Foo X --> #1:Foo #2:Foo #5:Foo Y --> #3:Foo Z --> #4:Foo ========================================== irredundant unify in LIST : E =? L M N . Unifier 1 E --> #1:Elt L --> nil M --> nil N --> #1:Elt Unifier 2 E --> #1:Elt L --> nil M --> #1:Elt N --> nil Unifier 3 E --> #1:Elt L --> #1:Elt M --> nil N --> nil ========================================== irredundant unify in LIST : E L E M =? E N F N . Unifier 1 E --> #1:Elt L --> #4:List #1:Elt #2:List #3:Elt #4:List M --> #2:List N --> #4:List #1:Elt #2:List F --> #3:Elt Unifier 2 E --> #1:Elt L --> #2:List M --> #4:List #3:Elt #2:List #1:Elt #4:List N --> #2:List #1:Elt #4:List F --> #3:Elt Unifier 3 E --> #1:Elt L --> #2:List M --> #2:List N --> #2:List F --> #1:Elt ========================================== irredundant unify in NAT' : X =? s (X * Y) . Unifier 1 X --> s 0 Y --> 0 ========================================== irredundant unify in NAT' : X =? s X * Y . Unifier 1 X --> 0 Y --> 0 ========================================== irredundant unify in NAT' : s X =? s X * Y . Unifier 1 X --> #1:Nat Y --> s 0 ========================================== irredundant unify in NAT' : s X =? X * Y . Unifier 1 X --> s 0 Y --> s_^2(0) ========================================== irredundant unify in COMM : X =? c(f(X, Y), Z) . Unifier 1 X --> c(a, b) Z --> a Y --> b Unifier 2 X --> c(a, b) Z --> b Y --> a ========================================== irredundant unify in FOO2 : X =? f(Y, a, b) /\ Y =? g(X, c, d) . Unifier 1 X --> f(a, b) Y --> g(c, d) ========================================== irredundant unify in FOO3 : X =? f(Y, a, b) /\ Y =? h(X) . Unifier 1 X --> f(a, b) Y --> h(f(a, b)) ========================================== irredundant unify in AU-UNSORTED : X:Foo =? f(Y:Foo, Z:Foo) . Unifier 1 X:Foo --> f(#1:Foo, #2:Foo) Y:Foo --> #1:Foo Z:Foo --> #2:Foo ========================================== irredundant unify in AU-SORTED1 : X:Lo =? f(Y:Hi, Z:Hi) . Unifier 1 X:Lo --> #1:Lo Y:Hi --> 1 Z:Hi --> #1:Lo Unifier 2 X:Lo --> #1:Lo Y:Hi --> #1:Lo Z:Hi --> 1 ========================================== irredundant unify in AU-SORTED2 : X:Lo =? f(Y:Hi, Z:Hi) . Unifier 1 X:Lo --> f(#1:Lo, #2:Lo) Y:Hi --> #1:Lo Z:Hi --> #2:Lo Unifier 2 X:Lo --> #1:Lo Y:Hi --> 1 Z:Hi --> #1:Lo Unifier 3 X:Lo --> #1:Lo Y:Hi --> #1:Lo Z:Hi --> 1 Bye. Maude-Maude3.5.1/tests/Misc/AU_IrredUnification0000775000175000017510000000041015036121435020661 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/AU_IrredUnification.maude -no-banner -no-advise \ > AU_IrredUnification.out 2>&1 diff $srcdir/AU_IrredUnification.expected AU_IrredUnification.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/0000775000175000017510000000000015036121435015110 5ustar nileshnileshMaude-Maude3.5.1/tests/Meta/russianDollsNonFlatProc3.maude0000664000175000017510000000647615036121435023015 0ustar nileshnileshset show timing off . set show advisories off . *** *** Run nested meta-interpreters with structured meta-modules. *** This version tests parameterized views. *** load metaInterpreter view SetAsDefault{X :: TRIV} from DEFAULT to SET*{X} is sort Elt to Set{X} . op 0 to term {} . endv mod RUSSIAN-DOLLS is pr META-INTERPRETER . pr ARRAY{String, SetAsDefault{String}} . sort ViewCmd ModuleCmd Seq . subsort ViewCmd ModuleCmd < Seq . op v : Qid -> ViewCmd . op m : Qid -> ModuleCmd . op __ : Seq Seq -> Seq [assoc id: nil] . op nil : -> Seq . op predef : -> Seq . eq predef = m('TRUTH-VALUE) m('BOOL-OPS) m('TRUTH) m('BOOL) m('EXT-BOOL) m('NAT) m('STRING) m('BOUND) m('QID) m('TRIV) m('DEFAULT) v('Bool) v('Nat) v('String) v('Qid) m('LIST) v('List) m('SET) v('Set) m('ARRAY) v('Array) m('SET*) v('Set*) m('NAT-LIST) m('QID-LIST) m('QID-SET) m('META-TERM) m('META-CONDITION) m('META-STRATEGY) m('META-MODULE) m('META-VIEW) m('META-LEVEL) m('CONFIGURATION) m('META-INTERPRETER) v('SetAsDefault) m('RUSSIAN-DOLLS) . op me : -> Oid . op User : -> Cid . op pending:_ : Seq -> Attribute . op level:_ : Nat -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . var AS : AttributeSet . var N : Nat . op problem : Nat -> Term . eq problem(s N) = '__['<>.Portal,'createInterpreter['interpreterManager.Oid,'me.Oid,'newProcess.InterpreterOption], '<_:_|_>['me.Oid,'User.Cid, '_`,_[ 'pending:_['predef.Seq], 'level:_[upTerm(N)] ] ] ] . eq problem(0) = '_`[_`][upTerm(insert("cat", {"c", "a", "t"}, insert("dog", {"d", "o", "g"}, empty))), '"rat".String] . rl < X : User | pending: (m(Q) Rest), AS > createdInterpreter(X, Y, Z) => < X : User | pending: Rest, AS > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (v(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: (v(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: nil, level: N > insertedModule(X, Y) => < X : User | pending: nil, level: N > erewriteTerm(Y, X, unbounded, 1, 'RUSSIAN-DOLLS, problem(N)) . endm erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/russianDollsNonFlatProc3.expected0000664000175000017510000001671515036121435023520 0ustar nileshnilesh========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 83 result Configuration: <> < me : User | pending: nil, level: 0 > erewroteTerm( me, interpreter(0), 1, '`{`}.Set`{String`}, 'Set`{String`}) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 77 result Configuration: <> < me : User | pending: nil, level: 1 > erewroteTerm( me, interpreter(0), 82, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['0.Zero], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_['0.Zero], ''`{`}.Set`{String`}.Constant, ''Set`{String`}.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 77 result Configuration: <> < me : User | pending: nil, level: 2 > erewroteTerm( me, interpreter(0), 76, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['s_['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^82['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, ''0.Zero.Constant], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_.Sort, ''0.Zero.Constant], '''`{`}.Set`{String`}.Constant.Constant, '''Set`{String`}.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 77 result Configuration: <> < me : User | pending: nil, level: 3 > erewroteTerm( me, interpreter(0), 76, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['s_^2['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^76['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^82.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_[ '''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''erewroteTerm.Sort.Constant, '_`[_`][ ''_`,_.Qid, '_`,_['''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]], ''''`{`}.Set`{String`}.Constant.Constant.Constant, ''''Set`{String`}.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 77 result Configuration: <> < me : User | pending: nil, level: 4 > erewroteTerm( me, interpreter(0), 76, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['s_^3['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^76['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_^2.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^76.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''erewroteTerm.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_^82.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''__.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<>.Portal.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<_:_|_>.Variable.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, ''''User.Cid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''level:_.Variable.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''pending:_.Variable.Constant.Constant, ''''nil.Seq.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]], '_`[_`][ ''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''erewroteTerm.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''interpreter.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''s_.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '''''`{`}.Set`{String`}.Constant.Constant.Constant.Constant, '''''Set`{String`}.Sort.Constant.Constant.Constant]]]]]]]]]]]]]]]], ''''Configuration.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) Bye. Maude-Maude3.5.1/tests/Meta/russianDollsNonFlatProc30000775000175000017510000000043415036121435021712 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/russianDollsNonFlatProc3.maude -no-banner -no-advise \ > russianDollsNonFlatProc3.out 2>&1 diff $srcdir/russianDollsNonFlatProc3.expected russianDollsNonFlatProc3.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/russianDollsNonFlatProc2.maude0000664000175000017510000000647115036121435023007 0ustar nileshnileshset show timing off . set show advisories off . *** *** Run nested meta-interpreters with structured meta-modules. *** This version tests parameterized views. *** load metaInterpreter view ListOfSets{X :: TRIV} from TRIV to LIST{Set*{X}} is sort Elt to List{Set*{X}} . endv mod RUSSIAN-DOLLS is pr META-INTERPRETER . pr MAP{Nat, ListOfSets{String}} . sort ViewCmd ModuleCmd Seq . subsort ViewCmd ModuleCmd < Seq . op v : Qid -> ViewCmd . op m : Qid -> ModuleCmd . op __ : Seq Seq -> Seq [assoc id: nil] . op nil : -> Seq . op predef : -> Seq . eq predef = m('TRUTH-VALUE) m('BOOL-OPS) m('TRUTH) m('BOOL) m('EXT-BOOL) m('NAT) m('STRING) m('BOUND) m('QID) m('TRIV) v('Bool) v('Nat) v('String) v('Qid) m('LIST) v('List) m('SET) v('Set) m('MAP) v('Map) m('SET*) v('Set*) m('NAT-LIST) m('QID-LIST) m('QID-SET) m('META-TERM) m('META-CONDITION) m('META-STRATEGY) m('META-MODULE) m('META-VIEW) m('META-LEVEL) m('CONFIGURATION) m('META-INTERPRETER) v('ListOfSets) m('RUSSIAN-DOLLS) . op me : -> Oid . op User : -> Cid . op pending:_ : Seq -> Attribute . op level:_ : Nat -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . var AS : AttributeSet . var N : Nat . op problem : Nat -> Term . eq problem(s N) = '__['<>.Portal,'createInterpreter['interpreterManager.Oid,'me.Oid,'newProcess.InterpreterOption], '<_:_|_>['me.Oid,'User.Cid, '_`,_[ 'pending:_['predef.Seq], 'level:_[upTerm(N)] ] ] ] . eq problem(0) = 'reverse[ '__['`{_`}['_`,_['"a".Char,'"e".Char]],'`{_`}['_`,_['"i".Char,'"y".Char]],'`{_`}['_`,_['"b".Char,'"c".Char]]] ] . rl < X : User | pending: (m(Q) Rest), AS > createdInterpreter(X, Y, Z) => < X : User | pending: Rest, AS > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (v(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: (v(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: nil, level: N > insertedModule(X, Y) => < X : User | pending: nil, level: N > erewriteTerm(Y, X, unbounded, 1, 'RUSSIAN-DOLLS, problem(N)) . endm erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/russianDollsNonFlatProc2.expected0000664000175000017510000003142515036121435023512 0ustar nileshnilesh========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 74 result Configuration: <> < me : User | pending: nil, level: 0 > erewroteTerm( me, interpreter(0), 5, '__['`{_`}['_`,_['"b".Char, '"c".Char]], '`{_`}[ '_`,_['"i".Char, '"y".Char]], '`{_`}['_`,_['"a".Char, '"e".Char]]], 'NeList`{Set*`{String`}`}) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 75 result Configuration: <> < me : User | pending: nil, level: 1 > erewroteTerm( me, interpreter(0), 73, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['0.Zero], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^5['0.Zero], '_`[_`][''__.Sort, '_`,_['_`[_`][ ''`{_`}.Qid, '_`[_`][''_`,_.Qid, '_`,_[''"b".Char.Constant, ''"c".Char.Constant]]], '_`[_`][''`{_`}.Qid, '_`[_`][''_`,_.Qid, '_`,_[ ''"i".Char.Constant, ''"y".Char.Constant]]], '_`[_`][''`{_`}.Qid, '_`[_`][ ''_`,_.Qid, '_`,_[''"a".Char.Constant, ''"e".Char.Constant]]]]], ''NeList`{Set*`{String`}`}.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 75 result Configuration: <> < me : User | pending: nil, level: 2 > erewroteTerm( me, interpreter(0), 74, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['s_['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^73['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, ''0.Zero.Constant], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_^5.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_['''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_[ '''`{_`}.Qid.Constant, '_`[_`][''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['''"b".Char.Constant.Constant, '''"c".Char.Constant.Constant]]]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''`{_`}.Qid.Constant, '_`[_`][''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['''"i".Char.Constant.Constant, '''"y".Char.Constant.Constant]]]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''`{_`}.Qid.Constant, '_`[_`][''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['''"a".Char.Constant.Constant, '''"e".Char.Constant.Constant]]]]]]]]]], '''NeList`{Set*`{String`}`}.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 75 result Configuration: <> < me : User | pending: nil, level: 3 > erewroteTerm( me, interpreter(0), 74, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['s_^2['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^74['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^73.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_[ '''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''erewroteTerm.Sort.Constant, '_`[_`][ ''_`,_.Qid, '_`,_['''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_^5.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''__.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''`{_`}.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''"b".Char.Constant.Constant.Constant, ''''"c".Char.Constant.Constant.Constant]]]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''`{_`}.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''"i".Char.Constant.Constant.Constant, ''''"y".Char.Constant.Constant.Constant]]]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''`{_`}.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''"a".Char.Constant.Constant.Constant, ''''"e".Char.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]], ''''NeList`{Set*`{String`}`}.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 75 result Configuration: <> < me : User | pending: nil, level: 4 > erewroteTerm( me, interpreter(0), 74, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['s_^3['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^74['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_^2.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^74.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''erewroteTerm.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_^73.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''__.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<>.Portal.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<_:_|_>.Variable.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, ''''User.Cid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''level:_.Variable.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''pending:_.Variable.Constant.Constant, ''''nil.Seq.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]], '_`[_`][ ''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''erewroteTerm.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''interpreter.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''s_^5.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''__.Sort.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''`{_`}.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''_`,_.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''"b".Char.Constant.Constant.Constant.Constant, '''''"c".Char.Constant.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''`{_`}.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''_`,_.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''"i".Char.Constant.Constant.Constant.Constant, '''''"y".Char.Constant.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''`{_`}.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''_`,_.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''"a".Char.Constant.Constant.Constant.Constant, '''''"e".Char.Constant.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], '''''NeList`{Set*`{String`}`}.Sort.Constant.Constant.Constant]]]]]]]]]]]]]]]], ''''Configuration.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) Bye. Maude-Maude3.5.1/tests/Meta/russianDollsNonFlatProc20000775000175000017510000000043415036121435021711 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/russianDollsNonFlatProc2.maude -no-banner -no-advise \ > russianDollsNonFlatProc2.out 2>&1 diff $srcdir/russianDollsNonFlatProc2.expected russianDollsNonFlatProc2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/russianDollsNonFlatProc.maude0000664000175000017510000000573215036121435022724 0ustar nileshnileshset show timing off . set show advisories off . *** *** Run nested meta-interpreters with structured meta-modules. *** load metaInterpreter mod RUSSIAN-DOLLS is pr META-INTERPRETER . sort ViewCmd ModuleCmd Seq . subsort ViewCmd ModuleCmd < Seq . op v : Qid -> ViewCmd . op m : Qid -> ModuleCmd . op __ : Seq Seq -> Seq [assoc id: nil] . op nil : -> Seq . op predef : -> Seq . eq predef = m('TRUTH-VALUE) m('BOOL-OPS) m('TRUTH) m('BOOL) m('EXT-BOOL) m('NAT) m('STRING) m('BOUND) m('QID) m('TRIV) v('Bool) v('Nat) v('String) v('Qid) m('LIST) m('SET) m('NAT-LIST) m('QID-LIST) m('QID-SET) m('META-TERM) m('META-CONDITION) m('META-STRATEGY) m('META-MODULE) m('META-VIEW) m('META-LEVEL) m('CONFIGURATION) m('META-INTERPRETER) m('RUSSIAN-DOLLS) . op me : -> Oid . op User : -> Cid . op pending:_ : Seq -> Attribute . op level:_ : Nat -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . var AS : AttributeSet . var N : Nat . op problem : Nat -> Term . eq problem(s N) = '__['<>.Portal,'createInterpreter['interpreterManager.Oid,'me.Oid,'newProcess.InterpreterOption], '<_:_|_>['me.Oid,'User.Cid, '_`,_[ 'pending:_['predef.Seq], 'level:_[upTerm(N)] ] ] ] . eq problem(0) = '_+_['s_^2['0.Zero], 's_^2['0.Zero]] . rl < X : User | pending: (m(Q) Rest), AS > createdInterpreter(X, Y, Z) => < X : User | pending: Rest, AS > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (v(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: (v(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: nil, level: N > insertedModule(X, Y) => < X : User | pending: nil, level: N > erewriteTerm(Y, X, unbounded, 1, 'RUSSIAN-DOLLS, problem(N)) . endm erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/russianDollsNonFlatProc.expected0000664000175000017510000001747315036121435023437 0ustar nileshnilesh========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 60 result Configuration: <> < me : User | pending: nil, level: 0 > erewroteTerm( me, interpreter(0), 1, 's_^4['0.Zero], 'NzNat) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 61 result Configuration: <> < me : User | pending: nil, level: 1 > erewroteTerm( me, interpreter(0), 59, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['0.Zero], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_['0.Zero], '_`[_`][''s_^4.Sort, ''0.Zero.Constant], ''NzNat.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 61 result Configuration: <> < me : User | pending: nil, level: 2 > erewroteTerm( me, interpreter(0), 60, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['s_['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^59['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, ''0.Zero.Constant], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_['''s_^4.Sort.Constant, '''0.Zero.Constant.Constant]], '''NzNat.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 61 result Configuration: <> < me : User | pending: nil, level: 3 > erewroteTerm( me, interpreter(0), 60, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['s_^2['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^60['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^59.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_[ '''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''erewroteTerm.Sort.Constant, '_`[_`][ ''_`,_.Qid, '_`,_['''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''s_^4.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], ''''NzNat.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 61 result Configuration: <> < me : User | pending: nil, level: 4 > erewroteTerm( me, interpreter(0), 60, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['s_^3['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^60['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_^2.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^60.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''erewroteTerm.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_^59.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''__.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<>.Portal.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<_:_|_>.Variable.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, ''''User.Cid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''level:_.Variable.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''pending:_.Variable.Constant.Constant, ''''nil.Seq.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]], '_`[_`][ ''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''erewroteTerm.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''interpreter.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''s_.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''s_^4.Sort.Constant.Constant.Constant, '''''0.Zero.Constant.Constant.Constant.Constant]]]]]]]], '''''NzNat.Sort.Constant.Constant.Constant]]]]]]]]]]]]]]]], ''''Configuration.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) Bye. Maude-Maude3.5.1/tests/Meta/russianDollsNonFlatProc0000775000175000017510000000043015036121435021623 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/russianDollsNonFlatProc.maude -no-banner -no-advise \ > russianDollsNonFlatProc.out 2>&1 diff $srcdir/russianDollsNonFlatProc.expected russianDollsNonFlatProc.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/russianDollsNonFlat3.maude0000664000175000017510000000643515036121435022164 0ustar nileshnileshset show timing off . set show advisories off . *** *** Run nested meta-interpreters with structured meta-modules. *** This version tests parameterized views. *** load metaInterpreter view SetAsDefault{X :: TRIV} from DEFAULT to SET*{X} is sort Elt to Set{X} . op 0 to term {} . endv mod RUSSIAN-DOLLS is pr META-INTERPRETER . pr ARRAY{String, SetAsDefault{String}} . sort ViewCmd ModuleCmd Seq . subsort ViewCmd ModuleCmd < Seq . op v : Qid -> ViewCmd . op m : Qid -> ModuleCmd . op __ : Seq Seq -> Seq [assoc id: nil] . op nil : -> Seq . op predef : -> Seq . eq predef = m('TRUTH-VALUE) m('BOOL-OPS) m('TRUTH) m('BOOL) m('EXT-BOOL) m('NAT) m('STRING) m('BOUND) m('QID) m('TRIV) m('DEFAULT) v('Bool) v('Nat) v('String) v('Qid) m('LIST) v('List) m('SET) v('Set) m('ARRAY) v('Array) m('SET*) v('Set*) m('NAT-LIST) m('QID-LIST) m('QID-SET) m('META-TERM) m('META-CONDITION) m('META-STRATEGY) m('META-MODULE) m('META-VIEW) m('META-LEVEL) m('CONFIGURATION) m('META-INTERPRETER) v('SetAsDefault) m('RUSSIAN-DOLLS) . op me : -> Oid . op User : -> Cid . op pending:_ : Seq -> Attribute . op level:_ : Nat -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . var AS : AttributeSet . var N : Nat . op problem : Nat -> Term . eq problem(s N) = '__['<>.Portal,'createInterpreter['interpreterManager.Oid,'me.Oid,'none.InterpreterOptionSet], '<_:_|_>['me.Oid,'User.Cid, '_`,_[ 'pending:_['predef.Seq], 'level:_[upTerm(N)] ] ] ] . eq problem(0) = '_`[_`][upTerm(insert("cat", {"c", "a", "t"}, insert("dog", {"d", "o", "g"}, empty))), '"rat".String] . rl < X : User | pending: (m(Q) Rest), AS > createdInterpreter(X, Y, Z) => < X : User | pending: Rest, AS > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (v(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: (v(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: nil, level: N > insertedModule(X, Y) => < X : User | pending: nil, level: N > erewriteTerm(Y, X, unbounded, 1, 'RUSSIAN-DOLLS, problem(N)) . endm erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/russianDollsNonFlat3.expected0000664000175000017510000001667115036121435022675 0ustar nileshnilesh========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, none) . rewrites: 84 result Configuration: <> < me : User | pending: nil, level: 0 > erewroteTerm( me, interpreter(0), 1, '`{`}.Set`{String`}, 'Set`{String`}) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, none) . rewrites: 160 result Configuration: <> < me : User | pending: nil, level: 1 > erewroteTerm( me, interpreter(0), 83, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['0.Zero], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_['0.Zero], ''`{`}.Set`{String`}.Constant, ''Set`{String`}.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, none) . rewrites: 236 result Configuration: <> < me : User | pending: nil, level: 2 > erewroteTerm( me, interpreter(0), 159, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_['level:_['s_['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm[ 'me.Oid, 'interpreter['0.Zero], 's_^83['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, ''0.Zero.Constant], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_.Sort, ''0.Zero.Constant], '''`{`}.Set`{String`}.Constant.Constant, '''Set`{String`}.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, none) . rewrites: 312 result Configuration: <> < me : User | pending: nil, level: 3 > erewroteTerm( me, interpreter(0), 235, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_['level:_['s_^2['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm[ 'me.Oid, 'interpreter['0.Zero], 's_^159['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^83.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_[ '''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''erewroteTerm.Sort.Constant, '_`[_`][ ''_`,_.Qid, '_`,_['''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]], ''''`{`}.Set`{String`}.Constant.Constant.Constant, ''''Set`{String`}.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, none) . rewrites: 388 result Configuration: <> < me : User | pending: nil, level: 4 > erewroteTerm( me, interpreter(0), 311, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_['level:_['s_^3['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm[ 'me.Oid, 'interpreter['0.Zero], 's_^235['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_^2.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^159.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''erewroteTerm.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_^83.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''__.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<>.Portal.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<_:_|_>.Variable.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, ''''User.Cid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''level:_.Variable.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''pending:_.Variable.Constant.Constant, ''''nil.Seq.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]], '_`[_`][ ''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''erewroteTerm.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''interpreter.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''s_.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '''''`{`}.Set`{String`}.Constant.Constant.Constant.Constant, '''''Set`{String`}.Sort.Constant.Constant.Constant]]]]]]]]]]]]]]]], ''''Configuration.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) Bye. Maude-Maude3.5.1/tests/Meta/russianDollsNonFlat30000775000175000017510000000041415036121435021064 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/russianDollsNonFlat3.maude -no-banner -no-advise \ > russianDollsNonFlat3.out 2>&1 diff $srcdir/russianDollsNonFlat3.expected russianDollsNonFlat3.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/russianDollsNonFlat2.maude0000664000175000017510000000643015036121435022156 0ustar nileshnileshset show timing off . set show advisories off . *** *** Run nested meta-interpreters with structured meta-modules. *** This version tests parameterized views. *** load metaInterpreter view ListOfSets{X :: TRIV} from TRIV to LIST{Set*{X}} is sort Elt to List{Set*{X}} . endv mod RUSSIAN-DOLLS is pr META-INTERPRETER . pr MAP{Nat, ListOfSets{String}} . sort ViewCmd ModuleCmd Seq . subsort ViewCmd ModuleCmd < Seq . op v : Qid -> ViewCmd . op m : Qid -> ModuleCmd . op __ : Seq Seq -> Seq [assoc id: nil] . op nil : -> Seq . op predef : -> Seq . eq predef = m('TRUTH-VALUE) m('BOOL-OPS) m('TRUTH) m('BOOL) m('EXT-BOOL) m('NAT) m('STRING) m('BOUND) m('QID) m('TRIV) v('Bool) v('Nat) v('String) v('Qid) m('LIST) v('List) m('SET) v('Set) m('MAP) v('Map) m('SET*) v('Set*) m('NAT-LIST) m('QID-LIST) m('QID-SET) m('META-TERM) m('META-CONDITION) m('META-STRATEGY) m('META-MODULE) m('META-VIEW) m('META-LEVEL) m('CONFIGURATION) m('META-INTERPRETER) v('ListOfSets) m('RUSSIAN-DOLLS) . op me : -> Oid . op User : -> Cid . op pending:_ : Seq -> Attribute . op level:_ : Nat -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . var AS : AttributeSet . var N : Nat . op problem : Nat -> Term . eq problem(s N) = '__['<>.Portal,'createInterpreter['interpreterManager.Oid,'me.Oid,'none.InterpreterOptionSet], '<_:_|_>['me.Oid,'User.Cid, '_`,_[ 'pending:_['predef.Seq], 'level:_[upTerm(N)] ] ] ] . eq problem(0) = 'reverse[ '__['`{_`}['_`,_['"a".Char,'"e".Char]],'`{_`}['_`,_['"i".Char,'"y".Char]],'`{_`}['_`,_['"b".Char,'"c".Char]]] ] . rl < X : User | pending: (m(Q) Rest), AS > createdInterpreter(X, Y, Z) => < X : User | pending: Rest, AS > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (v(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: (v(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: nil, level: N > insertedModule(X, Y) => < X : User | pending: nil, level: N > erewriteTerm(Y, X, unbounded, 1, 'RUSSIAN-DOLLS, problem(N)) . endm erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/russianDollsNonFlat2.expected0000664000175000017510000003140115036121435022660 0ustar nileshnilesh========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, none) . rewrites: 79 result Configuration: <> < me : User | pending: nil, level: 0 > erewroteTerm( me, interpreter(0), 5, '__['`{_`}['_`,_['"b".Char, '"c".Char]], '`{_`}[ '_`,_['"i".Char, '"y".Char]], '`{_`}['_`,_['"a".Char, '"e".Char]]], 'NeList`{Set*`{String`}`}) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, none) . rewrites: 153 result Configuration: <> < me : User | pending: nil, level: 1 > erewroteTerm( me, interpreter(0), 78, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['0.Zero], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^5['0.Zero], '_`[_`][''__.Sort, '_`,_['_`[_`][ ''`{_`}.Qid, '_`[_`][''_`,_.Qid, '_`,_[''"b".Char.Constant, ''"c".Char.Constant]]], '_`[_`][''`{_`}.Qid, '_`[_`][''_`,_.Qid, '_`,_[ ''"i".Char.Constant, ''"y".Char.Constant]]], '_`[_`][''`{_`}.Qid, '_`[_`][ ''_`,_.Qid, '_`,_[''"a".Char.Constant, ''"e".Char.Constant]]]]], ''NeList`{Set*`{String`}`}.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, none) . rewrites: 227 result Configuration: <> < me : User | pending: nil, level: 2 > erewroteTerm( me, interpreter(0), 152, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_['level:_['s_['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm[ 'me.Oid, 'interpreter['0.Zero], 's_^78['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, ''0.Zero.Constant], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_^5.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_['''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_[ '''`{_`}.Qid.Constant, '_`[_`][''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['''"b".Char.Constant.Constant, '''"c".Char.Constant.Constant]]]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''`{_`}.Qid.Constant, '_`[_`][''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['''"i".Char.Constant.Constant, '''"y".Char.Constant.Constant]]]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''`{_`}.Qid.Constant, '_`[_`][''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['''"a".Char.Constant.Constant, '''"e".Char.Constant.Constant]]]]]]]]]], '''NeList`{Set*`{String`}`}.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, none) . rewrites: 301 result Configuration: <> < me : User | pending: nil, level: 3 > erewroteTerm( me, interpreter(0), 226, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_['level:_['s_^2['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm[ 'me.Oid, 'interpreter['0.Zero], 's_^152['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^78.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_[ '''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''erewroteTerm.Sort.Constant, '_`[_`][ ''_`,_.Qid, '_`,_['''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_^5.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''__.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''`{_`}.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''"b".Char.Constant.Constant.Constant, ''''"c".Char.Constant.Constant.Constant]]]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''`{_`}.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''"i".Char.Constant.Constant.Constant, ''''"y".Char.Constant.Constant.Constant]]]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''`{_`}.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''"a".Char.Constant.Constant.Constant, ''''"e".Char.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]], ''''NeList`{Set*`{String`}`}.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, none) . rewrites: 375 result Configuration: <> < me : User | pending: nil, level: 4 > erewroteTerm( me, interpreter(0), 300, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_['level:_['s_^3['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm[ 'me.Oid, 'interpreter['0.Zero], 's_^226['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_^2.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^152.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''erewroteTerm.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_^78.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''__.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<>.Portal.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<_:_|_>.Variable.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, ''''User.Cid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''level:_.Variable.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''pending:_.Variable.Constant.Constant, ''''nil.Seq.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]], '_`[_`][ ''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''erewroteTerm.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''interpreter.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''s_^5.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''__.Sort.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''`{_`}.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''_`,_.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''"b".Char.Constant.Constant.Constant.Constant, '''''"c".Char.Constant.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''`{_`}.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''_`,_.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''"i".Char.Constant.Constant.Constant.Constant, '''''"y".Char.Constant.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''`{_`}.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''_`,_.Qid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''"a".Char.Constant.Constant.Constant.Constant, '''''"e".Char.Constant.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], '''''NeList`{Set*`{String`}`}.Sort.Constant.Constant.Constant]]]]]]]]]]]]]]]], ''''Configuration.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) Bye. Maude-Maude3.5.1/tests/Meta/russianDollsNonFlat20000775000175000017510000000041415036121435021063 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/russianDollsNonFlat2.maude -no-banner -no-advise \ > russianDollsNonFlat2.out 2>&1 diff $srcdir/russianDollsNonFlat2.expected russianDollsNonFlat2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/russianDollsNonFlat.maude0000664000175000017510000000567115036121435022102 0ustar nileshnileshset show timing off . set show advisories off . *** *** Run nested meta-interpreters with structured meta-modules. *** load metaInterpreter mod RUSSIAN-DOLLS is pr META-INTERPRETER . sort ViewCmd ModuleCmd Seq . subsort ViewCmd ModuleCmd < Seq . op v : Qid -> ViewCmd . op m : Qid -> ModuleCmd . op __ : Seq Seq -> Seq [assoc id: nil] . op nil : -> Seq . op predef : -> Seq . eq predef = m('TRUTH-VALUE) m('BOOL-OPS) m('TRUTH) m('BOOL) m('EXT-BOOL) m('NAT) m('STRING) m('BOUND) m('QID) m('TRIV) v('Bool) v('Nat) v('String) v('Qid) m('LIST) m('SET) m('NAT-LIST) m('QID-LIST) m('QID-SET) m('META-TERM) m('META-CONDITION) m('META-STRATEGY) m('META-MODULE) m('META-VIEW) m('META-LEVEL) m('CONFIGURATION) m('META-INTERPRETER) m('RUSSIAN-DOLLS) . op me : -> Oid . op User : -> Cid . op pending:_ : Seq -> Attribute . op level:_ : Nat -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . var AS : AttributeSet . var N : Nat . op problem : Nat -> Term . eq problem(s N) = '__['<>.Portal,'createInterpreter['interpreterManager.Oid,'me.Oid,'none.InterpreterOptionSet], '<_:_|_>['me.Oid,'User.Cid, '_`,_[ 'pending:_['predef.Seq], 'level:_[upTerm(N)] ] ] ] . eq problem(0) = '_+_['s_^2['0.Zero], 's_^2['0.Zero]] . rl < X : User | pending: (m(Q) Rest), AS > createdInterpreter(X, Y, Z) => < X : User | pending: Rest, AS > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (v(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: (v(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: nil, level: N > insertedModule(X, Y) => < X : User | pending: nil, level: N > erewriteTerm(Y, X, unbounded, 1, 'RUSSIAN-DOLLS, problem(N)) . endm erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/russianDollsNonFlat.expected0000664000175000017510000001744715036121435022614 0ustar nileshnilesh========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, none) . rewrites: 61 result Configuration: <> < me : User | pending: nil, level: 0 > erewroteTerm( me, interpreter(0), 1, 's_^4['0.Zero], 'NzNat) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 1 > createInterpreter(interpreterManager, me, none) . rewrites: 121 result Configuration: <> < me : User | pending: nil, level: 1 > erewroteTerm( me, interpreter(0), 60, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_[ 'level:_['0.Zero], 'pending:_['nil.Seq]]], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_['0.Zero], '_`[_`][''s_^4.Sort, ''0.Zero.Constant], ''NzNat.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 2 > createInterpreter(interpreterManager, me, none) . rewrites: 181 result Configuration: <> < me : User | pending: nil, level: 2 > erewroteTerm( me, interpreter(0), 120, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_['level:_['s_['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm[ 'me.Oid, 'interpreter['0.Zero], 's_^60['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, ''0.Zero.Constant], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_['''s_^4.Sort.Constant, '''0.Zero.Constant.Constant]], '''NzNat.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 3 > createInterpreter(interpreterManager, me, none) . rewrites: 241 result Configuration: <> < me : User | pending: nil, level: 3 > erewroteTerm( me, interpreter(0), 180, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_['level:_['s_^2['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm[ 'me.Oid, 'interpreter['0.Zero], 's_^120['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^60.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_[ '''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_['''erewroteTerm.Sort.Constant, '_`[_`][ ''_`,_.Qid, '_`,_['''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''s_^4.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], ''''NzNat.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | pending: predef, level: 4 > createInterpreter(interpreterManager, me, none) . rewrites: 301 result Configuration: <> < me : User | pending: nil, level: 4 > erewroteTerm( me, interpreter(0), 240, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, '_`,_['level:_['s_^3['0.Zero]], 'pending:_['nil.Seq]]], 'erewroteTerm[ 'me.Oid, 'interpreter['0.Zero], 's_^180['0.Zero], '_`[_`][''__.Sort, '_`,_[ ''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[''me.Oid.Constant, ''User.Cid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''level:_.Variable, '_`[_`][''s_^2.Sort, ''0.Zero.Constant]], '_`[_`][''pending:_.Variable, ''nil.Seq.Constant]]]]], '_`[_`][''erewroteTerm.Sort, '_`,_[ ''me.Oid.Constant, '_`[_`][''interpreter.Sort, ''0.Zero.Constant], '_`[_`][ ''s_^120.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_[ '''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''<>.Portal.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '_`[_`][''_`[_`].Qid, '_`,_['''level:_.Variable.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''pending:_.Variable.Constant, '''nil.Seq.Constant.Constant]]]]]]]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''erewroteTerm.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_^60.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''__.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<>.Portal.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<_:_|_>.Variable.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, ''''User.Cid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''_`,_.Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_['_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''level:_.Variable.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''pending:_.Variable.Constant.Constant, ''''nil.Seq.Constant.Constant.Constant]]]]]]]]]]]]]]]]]]]], '_`[_`][ ''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''erewroteTerm.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''interpreter.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''s_.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''s_^4.Sort.Constant.Constant.Constant, '''''0.Zero.Constant.Constant.Constant.Constant]]]]]]]], '''''NzNat.Sort.Constant.Constant.Constant]]]]]]]]]]]]]]]], ''''Configuration.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) Bye. Maude-Maude3.5.1/tests/Meta/russianDollsNonFlat0000775000175000017510000000041015036121435020775 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/russianDollsNonFlat.maude -no-banner -no-advise \ > russianDollsNonFlat.out 2>&1 diff $srcdir/russianDollsNonFlat.expected russianDollsNonFlat.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/russianDollsFlatProc.maude0000664000175000017510000000261415036121435022245 0ustar nileshnileshset show timing off . set show advisories off . *** *** Run nested meta-interpreters with flat meta-modules. *** load metaInterpreter mod RUSSIAN-DOLLS is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op level:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . op problem : Nat -> Term . eq problem(s N) = '__['<>.Portal,'createInterpreter['interpreterManager.Oid,'me.Oid,'newProcess.InterpreterOption], '<_:_|_>['me.Oid, 'User.Cid, 'level:_[upTerm(N)]]] . eq problem(0) = '_+_['s_^2['0.Zero], 's_^2['0.Zero]] . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RUSSIAN-DOLLS, true)) . rl < X : User | level: N, AS > insertedModule(X, Y) => < X : User | AS > erewriteTerm(Y, X, unbounded, 1, 'RUSSIAN-DOLLS, problem(N)) . endm erew in RUSSIAN-DOLLS : <> < me : User | level: 0 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | level: 1 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | level: 2 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | level: 3 > createInterpreter(interpreterManager, me, newProcess) . erew in RUSSIAN-DOLLS : <> < me : User | level: 4 > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/russianDollsFlatProc.expected0000664000175000017510000001417015036121435022753 0ustar nileshnilesh========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | level: 0 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > erewroteTerm(me, interpreter(0), 1, 's_^4['0.Zero], 'NzNat) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | level: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 6 result Configuration: <> < me : User | none > erewroteTerm(me, interpreter(0), 4, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, 'none.AttributeSet], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_['0.Zero], '_`[_`][ ''s_^4.Sort, ''0.Zero.Constant], ''NzNat.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | level: 2 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 6 result Configuration: <> < me : User | none > erewroteTerm(me, interpreter(0), 5, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, 'none.AttributeSet], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^4['0.Zero], '_`[_`][ ''__.Sort, '_`,_[''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[ ''me.Oid.Constant, ''User.Cid.Constant, ''none.AttributeSet.Constant]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_['''s_^4.Sort.Constant, '''0.Zero.Constant.Constant]], '''NzNat.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | level: 3 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 6 result Configuration: <> < me : User | none > erewroteTerm(me, interpreter(0), 5, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, 'none.AttributeSet], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^5['0.Zero], '_`[_`][ ''__.Sort, '_`,_[''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[ ''me.Oid.Constant, ''User.Cid.Constant, ''none.AttributeSet.Constant]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_^4.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_['''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_['''<>.Portal.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_['''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '''none.AttributeSet.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''erewroteTerm.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''s_^4.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], ''''NzNat.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | level: 4 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 6 result Configuration: <> < me : User | none > erewroteTerm(me, interpreter(0), 5, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, 'none.AttributeSet], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^5['0.Zero], '_`[_`][ ''__.Sort, '_`,_[''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[ ''me.Oid.Constant, ''User.Cid.Constant, ''none.AttributeSet.Constant]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_^5.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_['''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_['''<>.Portal.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_['''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '''none.AttributeSet.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''erewroteTerm.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_^4.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''__.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<>.Portal.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<_:_|_>.Variable.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, ''''User.Cid.Constant.Constant.Constant, ''''none.AttributeSet.Constant.Constant.Constant]]]]]]]], '_`[_`][ ''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''erewroteTerm.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''interpreter.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''s_.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''s_^4.Sort.Constant.Constant.Constant, '''''0.Zero.Constant.Constant.Constant.Constant]]]]]]]], '''''NzNat.Sort.Constant.Constant.Constant]]]]]]]]]]]]]]]], ''''Configuration.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) Bye. Maude-Maude3.5.1/tests/Meta/russianDollsFlatProc0000775000175000017510000000041415036121435021152 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/russianDollsFlatProc.maude -no-banner -no-advise \ > russianDollsFlatProc.out 2>&1 diff $srcdir/russianDollsFlatProc.expected russianDollsFlatProc.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/russianDollsFlat.maude0000664000175000017510000000255315036121435021423 0ustar nileshnileshset show timing off . set show advisories off . *** *** Run nested meta-interpreters with flat meta-modules. *** load metaInterpreter mod RUSSIAN-DOLLS is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op level:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . op problem : Nat -> Term . eq problem(s N) = '__['<>.Portal,'createInterpreter['interpreterManager.Oid,'me.Oid,'none.InterpreterOptionSet], '<_:_|_>['me.Oid, 'User.Cid, 'level:_[upTerm(N)]]] . eq problem(0) = '_+_['s_^2['0.Zero], 's_^2['0.Zero]] . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RUSSIAN-DOLLS, true)) . rl < X : User | level: N, AS > insertedModule(X, Y) => < X : User | AS > erewriteTerm(Y, X, unbounded, 1, 'RUSSIAN-DOLLS, problem(N)) . endm erew in RUSSIAN-DOLLS : <> < me : User | level: 0 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | level: 1 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | level: 2 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | level: 3 > createInterpreter(interpreterManager, me, none) . erew in RUSSIAN-DOLLS : <> < me : User | level: 4 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/russianDollsFlat.expected0000664000175000017510000001414415036121435022130 0ustar nileshnilesh========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | level: 0 > createInterpreter( interpreterManager, me, none) . rewrites: 6 result Configuration: <> < me : User | none > erewroteTerm(me, interpreter(0), 1, 's_^4['0.Zero], 'NzNat) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | level: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 11 result Configuration: <> < me : User | none > erewroteTerm(me, interpreter(0), 5, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, 'none.AttributeSet], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_['0.Zero], '_`[_`][ ''s_^4.Sort, ''0.Zero.Constant], ''NzNat.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | level: 2 > createInterpreter( interpreterManager, me, none) . rewrites: 16 result Configuration: <> < me : User | none > erewroteTerm(me, interpreter(0), 10, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, 'none.AttributeSet], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^5['0.Zero], '_`[_`][ ''__.Sort, '_`,_[''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[ ''me.Oid.Constant, ''User.Cid.Constant, ''none.AttributeSet.Constant]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_['''s_^4.Sort.Constant, '''0.Zero.Constant.Constant]], '''NzNat.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | level: 3 > createInterpreter( interpreterManager, me, none) . rewrites: 21 result Configuration: <> < me : User | none > erewroteTerm(me, interpreter(0), 15, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, 'none.AttributeSet], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^10['0.Zero], '_`[_`][ ''__.Sort, '_`,_[''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[ ''me.Oid.Constant, ''User.Cid.Constant, ''none.AttributeSet.Constant]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_^5.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_['''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_['''<>.Portal.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_['''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '''none.AttributeSet.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''erewroteTerm.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''s_^4.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], ''''NzNat.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) ========================================== erewrite in RUSSIAN-DOLLS : <> < me : User | level: 4 > createInterpreter( interpreterManager, me, none) . rewrites: 26 result Configuration: <> < me : User | none > erewroteTerm(me, interpreter(0), 20, '__['<>.Portal, '<_:_|_>['me.Oid, 'User.Cid, 'none.AttributeSet], 'erewroteTerm['me.Oid, 'interpreter['0.Zero], 's_^15['0.Zero], '_`[_`][ ''__.Sort, '_`,_[''<>.Portal.Constant, '_`[_`][''<_:_|_>.Variable, '_`,_[ ''me.Oid.Constant, ''User.Cid.Constant, ''none.AttributeSet.Constant]], '_`[_`][''erewroteTerm.Sort, '_`,_[''me.Oid.Constant, '_`[_`][ ''interpreter.Sort, ''0.Zero.Constant], '_`[_`][''s_^10.Sort, ''0.Zero.Constant], '_`[_`][''_`[_`].Qid, '_`,_['''__.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_['''<>.Portal.Constant.Constant, '_`[_`][ ''_`[_`].Qid, '_`,_['''<_:_|_>.Variable.Constant, '_`[_`][''_`,_.Qid, '_`,_['''me.Oid.Constant.Constant, '''User.Cid.Constant.Constant, '''none.AttributeSet.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''erewroteTerm.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''me.Oid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''interpreter.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][ ''_`[_`].Qid, '_`,_['''s_^5.Sort.Constant, '''0.Zero.Constant.Constant]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''__.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<>.Portal.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''<_:_|_>.Variable.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, ''''User.Cid.Constant.Constant.Constant, ''''none.AttributeSet.Constant.Constant.Constant]]]]]]]], '_`[_`][ ''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''erewroteTerm.Sort.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''me.Oid.Constant.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''interpreter.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_[ '''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ ''''s_.Sort.Constant.Constant, ''''0.Zero.Constant.Constant.Constant]]]], '_`[_`][''_`[_`].Qid, '_`,_['''_`[_`].Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[''''_`[_`].Qid.Constant.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''_`,_.Qid.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''''s_^4.Sort.Constant.Constant.Constant, '''''0.Zero.Constant.Constant.Constant.Constant]]]]]]]], '''''NzNat.Sort.Constant.Constant.Constant]]]]]]]]]]]]]]]], ''''Configuration.Sort.Constant.Constant]]]]]]]], '''Configuration.Sort.Constant]]]], ''Configuration.Sort]], 'Configuration) Bye. Maude-Maude3.5.1/tests/Meta/russianDollsFlat0000775000175000017510000000037415036121435020333 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/russianDollsFlat.maude -no-banner -no-advise \ > russianDollsFlat.out 2>&1 diff $srcdir/russianDollsFlat.expected russianDollsFlat.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaXmatch.maude0000664000175000017510000002370515036121435020227 0ustar nileshnileshset show timing off . set show advisories off . mod SEARCH-TEST is sort Nat . op _+_ : Nat Nat -> Nat [assoc comm prec 5] . op _*_ : Nat Nat -> Nat [assoc comm prec 3] . ops a b c d e 0 1 : -> Nat . vars W X Y Z : Nat . eq 0 * X = 0 . eq 1 * X = X . eq 0 + X = X . rl X * (Y + Z) => X * Y + X * Z . rl X * Y + X * Z => X * (Y + Z) . endm select META-LEVEL . red metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, 2, 0) . red metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, 2, 1) . red metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, 2, 2) . red metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, unbounded, 0) . red metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, unbounded, 1) . red metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, unbounded, 2) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, 100, 0) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, unbounded, 0) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, unbounded, 1) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, unbounded, 2) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, unbounded, 3) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, 100, 0) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, 100, 1) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, 100, 2) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, 100, 3) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 0) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 1) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 2) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 3) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 4) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 5) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 4) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 6) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 7) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 10) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 14) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 17) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 20) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 31) . red in META-LEVEL : metaXmatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 30) . fmod FOO is protecting BOOL . sorts Foo Bar . subsort Bar < Foo . op a : -> Foo . op b : -> Foo . op c : -> Foo . op f : Foo Foo -> Foo [assoc comm] . endfm xmatch f(X:Foo, Y:Foo) <=? f(a, b, c, c) . Maude-Maude3.5.1/tests/Meta/metaXmatch.expected0000664000175000017510000003771215036121435020740 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, 2, 0) . rewrites: 2 result MatchPair: { 'X:Nat <- '_+_['b.Nat, 'c.Nat] ; 'Y:Nat <- 'c.Nat ; 'Z:Nat <- 'b.Nat, '_*_['a.Nat, []]} ========================================== reduce in META-LEVEL : metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, 2, 1) . rewrites: 2 result MatchPair: { 'X:Nat <- '_+_['b.Nat, 'c.Nat] ; 'Y:Nat <- 'b.Nat ; 'Z:Nat <- 'c.Nat, '_*_['a.Nat, []]} ========================================== reduce in META-LEVEL : metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, 2, 2) . rewrites: 2 result MatchPair?: (noMatch).MatchPair? ========================================== reduce in META-LEVEL : metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, unbounded, 0) . rewrites: 2 result MatchPair: { 'X:Nat <- '_+_['b.Nat, 'c.Nat] ; 'Y:Nat <- 'c.Nat ; 'Z:Nat <- 'b.Nat, '_*_['a.Nat, []]} ========================================== reduce in META-LEVEL : metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, unbounded, 1) . rewrites: 2 result MatchPair: { 'X:Nat <- '_+_['b.Nat, 'c.Nat] ; 'Y:Nat <- 'b.Nat ; 'Z:Nat <- 'c.Nat, '_*_['a.Nat, []]} ========================================== reduce in META-LEVEL : metaXmatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_+_['Y:Nat, 'Z:Nat] := 'X:Nat, 1, unbounded, 2) . rewrites: 2 result MatchPair?: (noMatch).MatchPair? ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, 100, 0) . rewrites: 1 result MatchPair: { 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo ; 'Z:Foo <- 'f['c.Foo, 'c.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, unbounded, 0) . rewrites: 1 result MatchPair: { 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo ; 'Z:Foo <- 'f['c.Foo, 'c.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, unbounded, 1) . rewrites: 1 result MatchPair: { 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo ; 'Z:Foo <- 'f['c.Foo, 'c.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, unbounded, 2) . rewrites: 1 result MatchPair: { 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'c.Foo ; 'Z:Foo <- 'f['a.Foo, 'b.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, unbounded, 3) . rewrites: 1 result MatchPair?: (noMatch).MatchPair? ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, 100, 0) . rewrites: 1 result MatchPair: { 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, 'g['f['c.Foo, 'c.Foo], []]} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, 100, 1) . rewrites: 1 result MatchPair: { 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, 'g['f['c.Foo, 'c.Foo], []]} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, 100, 2) . rewrites: 1 result MatchPair: { 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'c.Foo, 'g['f['a.Foo, 'b.Foo], []]} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0, 100, 3) . rewrites: 1 result MatchPair?: (noMatch).MatchPair? ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 0) . rewrites: 1 result MatchPair: { 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'c.Foo, 'c.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 1) . rewrites: 1 result MatchPair: { 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'f['a.Foo, 'c.Foo, 'c.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 2) . rewrites: 1 result MatchPair: { 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'f['a.Foo, 'b.Foo, 'c.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 3) . rewrites: 1 result MatchPair: { 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'f['c.Foo, 'c.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 4) . rewrites: 1 result MatchPair: { 'X:Foo <- 'f['a.Foo, 'c.Foo] ; 'Y:Foo <- 'f['b.Foo, 'c.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 5) . rewrites: 1 result MatchPair: { 'X:Foo <- 'f['b.Foo, 'c.Foo] ; 'Y:Foo <- 'f['a.Foo, 'c.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 4) . rewrites: 1 result MatchPair: { 'X:Foo <- 'f['a.Foo, 'c.Foo] ; 'Y:Foo <- 'f['b.Foo, 'c.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 6) . rewrites: 1 result MatchPair: { 'X:Foo <- 'f['c.Foo, 'c.Foo] ; 'Y:Foo <- 'f['a.Foo, 'b.Foo], []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 7) . rewrites: 1 result MatchPair: { 'X:Foo <- 'f['a.Foo, 'b.Foo, 'c.Foo] ; 'Y:Foo <- 'c.Foo, []} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 10) . rewrites: 1 result MatchPair: { 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'f['c.Foo, 'c.Foo], 'f['a.Foo, []]} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 14) . rewrites: 1 result MatchPair: { 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['c.Foo, 'c.Foo], 'f['b.Foo, []]} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 17) . rewrites: 1 result MatchPair: { 'X:Foo <- 'f['c.Foo, 'c.Foo] ; 'Y:Foo <- 'a.Foo, 'f['b.Foo, []]} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 20) . rewrites: 1 result MatchPair: { 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'f['a.Foo, 'b.Foo], 'f['c.Foo, []]} ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 31) . rewrites: 1 result MatchPair?: (noMatch).MatchPair? ========================================== reduce in META-LEVEL : metaXmatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . ((op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'c.Foo, 'c.Foo], nil, 0, 100, 30) . rewrites: 1 result MatchPair: { 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, 'f['f['c.Foo, 'c.Foo], []]} ========================================== xmatch in FOO : f(X:Foo, Y:Foo) <=? f(a, b, c, c) . Matcher 1 Matched portion = (whole) X:Foo --> a Y:Foo --> f(b, c, c) Matcher 2 Matched portion = (whole) X:Foo --> b Y:Foo --> f(a, c, c) Matcher 3 Matched portion = (whole) X:Foo --> c Y:Foo --> f(a, b, c) Matcher 4 Matched portion = (whole) X:Foo --> f(a, b) Y:Foo --> f(c, c) Matcher 5 Matched portion = (whole) X:Foo --> f(a, c) Y:Foo --> f(b, c) Matcher 6 Matched portion = (whole) X:Foo --> f(b, c) Y:Foo --> f(a, c) Matcher 7 Matched portion = (whole) X:Foo --> f(c, c) Y:Foo --> f(a, b) Matcher 8 Matched portion = (whole) X:Foo --> f(a, b, c) Y:Foo --> c Matcher 9 Matched portion = (whole) X:Foo --> f(a, c, c) Y:Foo --> b Matcher 10 Matched portion = (whole) X:Foo --> f(b, c, c) Y:Foo --> a Matcher 11 Matched portion = f(b, c, c) X:Foo --> b Y:Foo --> f(c, c) Matcher 12 Matched portion = f(b, c, c) X:Foo --> c Y:Foo --> f(b, c) Matcher 13 Matched portion = f(b, c, c) X:Foo --> f(b, c) Y:Foo --> c Matcher 14 Matched portion = f(b, c, c) X:Foo --> f(c, c) Y:Foo --> b Matcher 15 Matched portion = f(a, c, c) X:Foo --> a Y:Foo --> f(c, c) Matcher 16 Matched portion = f(a, c, c) X:Foo --> c Y:Foo --> f(a, c) Matcher 17 Matched portion = f(a, c, c) X:Foo --> f(a, c) Y:Foo --> c Matcher 18 Matched portion = f(a, c, c) X:Foo --> f(c, c) Y:Foo --> a Matcher 19 Matched portion = f(a, b, c) X:Foo --> a Y:Foo --> f(b, c) Matcher 20 Matched portion = f(a, b, c) X:Foo --> b Y:Foo --> f(a, c) Matcher 21 Matched portion = f(a, b, c) X:Foo --> c Y:Foo --> f(a, b) Matcher 22 Matched portion = f(a, b, c) X:Foo --> f(a, b) Y:Foo --> c Matcher 23 Matched portion = f(a, b, c) X:Foo --> f(a, c) Y:Foo --> b Matcher 24 Matched portion = f(a, b, c) X:Foo --> f(b, c) Y:Foo --> a Matcher 25 Matched portion = f(c, c) X:Foo --> c Y:Foo --> c Matcher 26 Matched portion = f(b, c) X:Foo --> b Y:Foo --> c Matcher 27 Matched portion = f(b, c) X:Foo --> c Y:Foo --> b Matcher 28 Matched portion = f(a, c) X:Foo --> a Y:Foo --> c Matcher 29 Matched portion = f(a, c) X:Foo --> c Y:Foo --> a Matcher 30 Matched portion = f(a, b) X:Foo --> a Y:Foo --> b Matcher 31 Matched portion = f(a, b) X:Foo --> b Y:Foo --> a Bye. Maude-Maude3.5.1/tests/Meta/metaXmatch0000775000175000017510000000034415036121435017132 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaXmatch.maude -no-banner -no-advise \ > metaXmatch.out 2>&1 diff $srcdir/metaXmatch.expected metaXmatch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaXapply.maude0000664000175000017510000000723115036121435020254 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test the metaXapply() descent function. *** fmod TEST is pr META-LEVEL . op m : -> Module . eq m = (mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . rl 'a.Foo => 'c.Foo [label('k)] . endm) . endfm red metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, 100, 0) . red metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, 100, 1) . red metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, 100, 2) . red metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, 100, 3) . red metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, unbounded, 0) . red metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, unbounded, 1) . red metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, unbounded, 2) . red metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, unbounded, 3) . fmod TEST2 is pr META-LEVEL . op m : -> Module . eq m = (mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . rl 'a.Foo => 'c.Foo [label('k)] . endm) . endfm red metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'k, none, 0, 100, 0) . red metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'k, none, 0, 100, 1) . red metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'k, none, 0, 100, 2) . red metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'k, none, 0, 100, 3) . red metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'k, none, 0, 100, 4) . fmod TEST3 is pr META-LEVEL . op m : -> Module . eq m = (mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . rl 'a.Foo => 'f['c.Foo, 'c.Foo] [label('l)] . endm) . endfm red metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'l, none, 0, 100, 0) . red metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'l, none, 0, 100, 1) . red metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'l, none, 0, 100, 0) . red metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'l, none, 0, 100, 2) . red metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'l, none, 0, 100, 0) . fmod ALL-ONE-STEP-REWRITES is including META-LEVEL . sort TermSet . subsort Term < TermSet . op _|_ : TermSet TermSet -> TermSet [assoc comm id: mt ctor] . op mt : -> TermSet [ctor] . var T : Term . var M : Module . var L : Qid . var N : Nat . op findAllRews : Module Term Qid -> TermSet . op findAllRewsAux : Module Term Qid Nat -> TermSet . eq findAllRews(M, T, L) = findAllRewsAux(M, T, L, 0) . eq findAllRewsAux(M, T, L, N) = if metaXapply(M, T, L, none, 0, unbounded, N) :: Result4Tuple then (getTerm(metaXapply(M, T, L, none, 0, unbounded, N)) | findAllRewsAux(M, T, L, N + 1)) else mt fi . op m : -> Module . eq m = (mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . rl 'a.Foo => 'c.Foo [label('k)] . endm) . endfm red findAllRews(m, 'f['a.Foo, 'b.Foo], 'k) . Maude-Maude3.5.1/tests/Meta/metaXapply.expected0000664000175000017510000001036715036121435020766 0ustar nileshnilesh========================================== reduce in TEST : metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, 100, 0) . rewrites: 3 result Result4Tuple: {'a.Foo, 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, []} ========================================== reduce in TEST : metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, 100, 1) . rewrites: 3 result Result4Tuple: {'b.Foo, 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, []} ========================================== reduce in TEST : metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, 100, 2) . rewrites: 3 result Result4Tuple: {'f['b.Foo, 'c.Foo], 'Foo, (none).Substitution, 'f['b.Foo, []]} ========================================== reduce in TEST : metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, 100, 3) . rewrites: 2 result Result4Tuple?: (failure).Result4Tuple? ========================================== reduce in TEST : metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, unbounded, 0) . rewrites: 3 result Result4Tuple: {'a.Foo, 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, []} ========================================== reduce in TEST : metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, unbounded, 1) . rewrites: 3 result Result4Tuple: {'b.Foo, 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, []} ========================================== reduce in TEST : metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, unbounded, 2) . rewrites: 3 result Result4Tuple: {'f['b.Foo, 'c.Foo], 'Foo, (none).Substitution, 'f['b.Foo, []]} ========================================== reduce in TEST : metaXapply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0, unbounded, 3) . rewrites: 2 result Result4Tuple?: (failure).Result4Tuple? ========================================== reduce in TEST2 : metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'k, none, 0, 100, 0) . rewrites: 3 result Result4Tuple: {'g['c.Foo, 'f['a.Foo, 'b.Foo]], 'Foo, ( none).Substitution, 'g['f['a.Foo, 'b.Foo], []]} ========================================== reduce in TEST2 : metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'k, none, 0, 100, 1) . rewrites: 3 result Result4Tuple: {'g['a.Foo, 'a.Foo], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, 'g['a.Foo, []]} ========================================== reduce in TEST2 : metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'k, none, 0, 100, 2) . rewrites: 3 result Result4Tuple: {'g['a.Foo, 'b.Foo], 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, 'g['a.Foo, []]} ========================================== reduce in TEST2 : metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'k, none, 0, 100, 3) . rewrites: 3 result Result4Tuple: {'g['a.Foo, 'f['b.Foo, 'c.Foo]], 'Foo, ( none).Substitution, 'g['a.Foo, 'f['b.Foo, []]]} ========================================== reduce in TEST2 : metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'k, none, 0, 100, 4) . rewrites: 2 result Result4Tuple?: (failure).Result4Tuple? ========================================== reduce in TEST3 : metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'l, none, 0, 100, 0) . rewrites: 3 result Result4Tuple: {'g['f['c.Foo, 'c.Foo], 'f['a.Foo, 'b.Foo]], 'Foo, ( none).Substitution, 'g['f['a.Foo, 'b.Foo], []]} ========================================== reduce in TEST3 : metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'l, none, 0, 100, 1) . rewrites: 3 result Result4Tuple: {'g['a.Foo, 'f['b.Foo, 'c.Foo, 'c.Foo]], 'Foo, ( none).Substitution, 'g['a.Foo, 'f['b.Foo, []]]} ========================================== reduce in TEST3 : metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'l, none, 0, 100, 0) . rewrites: 3 result Result4Tuple: {'g['f['c.Foo, 'c.Foo], 'f['a.Foo, 'b.Foo]], 'Foo, ( none).Substitution, 'g['f['a.Foo, 'b.Foo], []]} ========================================== reduce in TEST3 : metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'l, none, 0, 100, 2) . rewrites: 2 result Result4Tuple?: (failure).Result4Tuple? ========================================== reduce in TEST3 : metaXapply(m, 'g['f['a.Foo, 'b.Foo], 'a.Foo], 'l, none, 0, 100, 0) . rewrites: 3 result Result4Tuple: {'g['f['c.Foo, 'c.Foo], 'f['a.Foo, 'b.Foo]], 'Foo, ( none).Substitution, 'g['f['a.Foo, 'b.Foo], []]} ========================================== reduce in ALL-ONE-STEP-REWRITES : findAllRews(m, 'f['a.Foo, 'b.Foo], 'k) . rewrites: 27 result TermSet: 'a.Foo | 'b.Foo | ('f['b.Foo, 'c.Foo]) Bye. Maude-Maude3.5.1/tests/Meta/metaXapply0000775000175000017510000000034515036121435017164 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaXapply.maude -no-banner -no-advise \ > metaXapply.out 2>&1 diff $srcdir/metaXapply.expected metaXapply.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaWellFormed.maude0000664000175000017510000000551215036121435021037 0ustar nileshnileshset show timing off . set show advisories off . select META-LEVEL . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm) . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm) . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . subsort 'Foo < 'Bar . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm) . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'a.Foo) . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'b.Foo) . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Foo <- 'a.Foo) . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'a.Foo) . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo) . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, (none).Substitution) . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Foo <- 'a.Foo ; 'X:Foo <- 'b.Foo) . red wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none endfm, 'X:Bar <- 'a.Foo) . red wellFormed(fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Bar <- 'true.Bool) . red wellFormed(fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Bool <- 'true.Bool) . red wellFormed(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [label('k)] . endm, 'X:Bar <- 'true.Bool) . Maude-Maude3.5.1/tests/Meta/metaWellFormed.expected0000664000175000017510000001023715036121435021545 0ustar nileshnilesh========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm) . rewrites: 1 result Bool: true ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm) . rewrites: 1 result Bool: false ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . subsort 'Foo < 'Bar . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm) . Warning: the connected component in the sort graph that contains sort Bar has no maximal sorts due to a cycle. rewrites: 1 result Bool: false ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'a.Foo) . rewrites: 1 result Bool: true ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'b.Foo) . rewrites: 1 result Bool: false ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Foo <- 'a.Foo) . rewrites: 2 result Bool: true ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'a.Foo) . rewrites: 3 result Bool: true ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo) . rewrites: 1 result Bool: false ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, (none).Substitution) . rewrites: 1 result Bool: true ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Foo <- 'a.Foo ; 'X:Foo <- 'b.Foo) . rewrites: 1 result Bool: false ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none endfm, 'X:Bar <- 'a.Foo) . rewrites: 1 result Bool: false ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Bar <- 'true.Bool) . rewrites: 1 result Bool: false ========================================== reduce in META-LEVEL : wellFormed(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'X:Bool <- 'true.Bool) . rewrites: 1 result Bool: true ========================================== reduce in META-LEVEL : wellFormed(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [label('k)] . endm, 'X:Bar <- 'true.Bool) . rewrites: 1 result Bool: false Bye. Maude-Maude3.5.1/tests/Meta/metaWellFormed0000775000175000017510000000036415036121435017750 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaWellFormed.maude -no-banner -no-advise \ > metaWellFormed.out 2>&1 diff $srcdir/metaWellFormed.expected metaWellFormed.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaVariantUnify2.maude0000664000175000017510000001232215036121435021475 0ustar nileshnileshset show timing off . *** *** We test the effect of delay and filter flags. *** fmod EXCLUSIVE-OR is sorts Elem ElemXor . subsort Elem < ElemXor . ops a b c : -> Elem . op mt : -> ElemXor . op _*_ : ElemXor ElemXor -> ElemXor [assoc comm] . vars X Y Z U V : [ElemXor] . vars V1 V2 V3 V4 V5 V6 V7 V8 V9 : [ElemXor] . eq [idem] : X * X = mt [variant] . eq [idem-Coh] : X * X * Z = Z [variant] . eq [id] : X * mt = X [variant] . op f1 : [ElemXor] -> [ElemXor] . op f2 : [ElemXor] [ElemXor] -> [ElemXor] . op f3 : [ElemXor] [ElemXor] [ElemXor] -> [ElemXor] . endfm fmod META-VARIANT-TEST is pr EXCLUSIVE-OR . inc META-LEVEL . sort UnifierList . subsorts UnificationPair < UnifierList . op _;_ : UnifierList UnifierList -> UnifierList [assoc id: nil] . op nil : -> UnifierList . op getUnifiers : Module UnificationProblem VariantOptionSet Nat -> UnifierList . var M : Module . var U : UnificationProblem . var V : VariantOptionSet . var N : Nat . eq getUnifiers(M, U, V, N) = if metaVariantUnify(M, U, empty, '#, V, N) == noUnifier or metaVariantUnify(M, U, empty, '#, V, N) == noUnifierIncomplete then nil else metaVariantUnify(M, U, empty, '#, V, N) ; getUnifiers(M, U, V, N + 1) fi . vars V1 V2 V3 V4 V5 V6 V7 V8 V9 : [ElemXor] . endfm red getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), none, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), delay, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), filter, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), delay filter, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1(V2)) =? upTerm(f1(V3) * f1(V3 * V4)), none, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1(V2)) =? upTerm(f1(V3) * f1(V3 * V4)), delay, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1(V2)) =? upTerm(f1(V3) * f1(V3 * V4)), filter, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1(V2)) =? upTerm(f1(V3) * f1(V3 * V4)), delay filter, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1(V1)) =? upTerm(f1(V2 * b) * f1(V3 * c)), none, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1(V1)) =? upTerm(f1(V2 * b) * f1(V3 * c)), delay, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1(V1)) =? upTerm(f1(V2 * b) * f1(V3 * c)), filter, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1(V1)) =? upTerm(f1(V2 * b) * f1(V3 * c)), delay filter, 0) . fmod META-VARIANT-TEST is pr EXCLUSIVE-OR . inc META-LEVEL . sort UnifierList . subsorts UnificationTriple < UnifierList . op _;_ : UnifierList UnifierList -> UnifierList [assoc id: nil] . op nil : -> UnifierList . op getUnifiers : Module UnificationProblem VariantOptionSet Nat -> UnifierList . var M : Module . var U : UnificationProblem . var V : VariantOptionSet . var N : Nat . eq getUnifiers(M, U, V, N) = if metaVariantDisjointUnify(M, U, empty, '#, V, N) == noUnifier or metaVariantDisjointUnify(M, U, empty, '#, V, N) == noUnifierIncomplete then nil else metaVariantDisjointUnify(M, U, empty, '#, V, N) ; getUnifiers(M, U, V, N + 1) fi . vars V1 V2 V3 V4 V5 V6 V7 V8 V9 : [ElemXor] . endfm red getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), none, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), delay, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), filter, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), delay filter, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1(V2)) =? upTerm(f1(V3) * f1(V3 * V4)), none, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1(V2)) =? upTerm(f1(V3) * f1(V3 * V4)), delay, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1(V2)) =? upTerm(f1(V3) * f1(V3 * V4)), filter, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1(V2)) =? upTerm(f1(V3) * f1(V3 * V4)), delay filter, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1(V1)) =? upTerm(f1(V2 * b) * f1(V3 * c)), none, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1(V1)) =? upTerm(f1(V2 * b) * f1(V3 * c)), delay, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1(V1)) =? upTerm(f1(V2 * b) * f1(V3 * c)), filter, 0) . red getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1(V1)) =? upTerm(f1(V2 * b) * f1(V3 * c)), delay filter, 0) . Maude-Maude3.5.1/tests/Meta/metaVariantUnify2.expected0000664000175000017510000007300315036121435022206 0ustar nileshnilesh========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), none, 0) . rewrites: 64 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- 'f1['f1['%1:`[ElemXor`]]] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'f1['f1['%1:`[ElemXor`]]] ; 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), delay, 0) . rewrites: 64 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- 'f1['f1['%1:`[ElemXor`]]] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'f1['f1['%1:`[ElemXor`]]] ; 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), filter, 0) . rewrites: 37 result UnificationPair: { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), delay filter, 0) . rewrites: 37 result UnificationPair: { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1( V2)) =? upTerm(f1(V3) * f1(V3 * V4)), none, 0) . rewrites: 175 result UnifierList: { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['%2:`[ElemXor`], '%3:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], '%3:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '%2:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '%2:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V3:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- 'mt.ElemXor ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- 'mt.ElemXor ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '@2:`[ElemXor`] ; 'V4:`[ElemXor`] <- 'mt.ElemXor, '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1( V2)) =? upTerm(f1(V3) * f1(V3 * V4)), delay, 0) . rewrites: 175 result UnifierList: { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['%2:`[ElemXor`], '%3:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], '%3:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '%2:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '%2:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V3:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- 'mt.ElemXor ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- 'mt.ElemXor ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '@2:`[ElemXor`] ; 'V4:`[ElemXor`] <- 'mt.ElemXor, '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1( V2)) =? upTerm(f1(V3) * f1(V3 * V4)), filter, 0) . rewrites: 95 result UnifierList: { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '@2:`[ElemXor`] ; 'V4:`[ElemXor`] <- 'mt.ElemXor, '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1( V2)) =? upTerm(f1(V3) * f1(V3 * V4)), delay filter, 0) . rewrites: 95 result UnifierList: { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '@2:`[ElemXor`] ; 'V4:`[ElemXor`] <- 'mt.ElemXor, '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1( V1)) =? upTerm(f1(b * V2) * f1(c * V3)), none, 0) . rewrites: 261 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['c.Elem, '%1:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['b.Elem, '%1:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- 'c.Elem ; 'V3:`[ElemXor`] <- 'b.Elem, '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- 'b.Elem ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- 'c.Elem, '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'c.Elem ; 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- 'mt.ElemXor, '@} ; { 'V1:`[ElemXor`] <- 'b.Elem ; 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- 'b.Elem ; 'V3:`[ElemXor`] <- 'c.Elem, '%} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem, '%1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem, '%1:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem] ; 'V3:`[ElemXor`] <- 'mt.ElemXor, '@} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem], '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1( V1)) =? upTerm(f1(b * V2) * f1(c * V3)), delay, 0) . rewrites: 261 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['c.Elem, '%1:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['b.Elem, '%1:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- 'c.Elem ; 'V3:`[ElemXor`] <- 'b.Elem, '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- 'b.Elem ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- 'c.Elem, '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'c.Elem ; 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- 'mt.ElemXor, '@} ; { 'V1:`[ElemXor`] <- 'b.Elem ; 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- 'b.Elem ; 'V3:`[ElemXor`] <- 'c.Elem, '%} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem, '%1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem, '%1:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem] ; 'V3:`[ElemXor`] <- 'mt.ElemXor, '@} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem], '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1( V1)) =? upTerm(f1(b * V2) * f1(c * V3)), filter, 0) . rewrites: 141 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['c.Elem, '%1:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['b.Elem, '%1:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]], '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1( V1)) =? upTerm(f1(b * V2) * f1(c * V3)), delay filter, 0) . rewrites: 147 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['c.Elem, '%1:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['b.Elem, '%1:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem ; 'V2:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]], '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), none, 0) . rewrites: 64 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`], 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]], 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- 'f1['f1['%1:`[ElemXor`]]], 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'f1['f1['%1:`[ElemXor`]]] ; 'V2:`[ElemXor`] <- 'mt.ElemXor, 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), delay, 0) . rewrites: 64 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`], 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]], 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- 'f1['f1['%1:`[ElemXor`]]], 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'f1['f1['%1:`[ElemXor`]]] ; 'V2:`[ElemXor`] <- 'mt.ElemXor, 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), filter, 0) . rewrites: 37 result UnificationTriple: { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`], 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(V1 * V2) =? upTerm(f1(V3 * V3 * f1(V4))), delay filter, 0) . rewrites: 37 result UnificationTriple: { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], 'f1['f1['%1:`[ElemXor`]]]] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`], 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1( V2)) =? upTerm(f1(V3) * f1(V3 * V4)), none, 0) . rewrites: 175 result UnifierList: { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]], 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`], 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`], 'V3:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- 'mt.ElemXor, 'V3:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['%2:`[ElemXor`], '%3:`[ElemXor`]], 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], '%3:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '%2:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`], 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '%2:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`], 'V3:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`], 'V3:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`], 'V3:`[ElemXor`] <- 'mt.ElemXor ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- 'mt.ElemXor, 'V3:`[ElemXor`] <- 'mt.ElemXor ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`], 'V3:`[ElemXor`] <- '@2:`[ElemXor`] ; 'V4:`[ElemXor`] <- 'mt.ElemXor, '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1( V2)) =? upTerm(f1(V3) * f1(V3 * V4)), delay, 0) . rewrites: 175 result UnifierList: { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]], 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`], 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`], 'V3:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- 'mt.ElemXor, 'V3:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['%2:`[ElemXor`], '%3:`[ElemXor`]], 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '_*_['%2:`[ElemXor`], '%3:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '%2:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`], 'V3:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]] ; 'V4:`[ElemXor`] <- '%2:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '%2:`[ElemXor`], 'V3:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`], 'V3:`[ElemXor`] <- '%2:`[ElemXor`] ; 'V4:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor ; 'V2:`[ElemXor`] <- '%1:`[ElemXor`], 'V3:`[ElemXor`] <- 'mt.ElemXor ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V2:`[ElemXor`] <- 'mt.ElemXor, 'V3:`[ElemXor`] <- 'mt.ElemXor ; 'V4:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`], 'V3:`[ElemXor`] <- '@2:`[ElemXor`] ; 'V4:`[ElemXor`] <- 'mt.ElemXor, '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1( V2)) =? upTerm(f1(V3) * f1(V3 * V4)), filter, 0) . rewrites: 95 result UnifierList: { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]], 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`], 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`], 'V3:`[ElemXor`] <- '@2:`[ElemXor`] ; 'V4:`[ElemXor`] <- 'mt.ElemXor, '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(V1) * f1( V2)) =? upTerm(f1(V3) * f1(V3 * V4)), delay filter, 0) . rewrites: 95 result UnifierList: { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]], 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@2:`[ElemXor`]] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`], 'V3:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V4:`[ElemXor`] <- '@2:`[ElemXor`], '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`] ; 'V2:`[ElemXor`] <- '@1:`[ElemXor`], 'V3:`[ElemXor`] <- '@2:`[ElemXor`] ; 'V4:`[ElemXor`] <- 'mt.ElemXor, '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1( V1)) =? upTerm(f1(b * V2) * f1(c * V3)), none, 0) . rewrites: 261 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['c.Elem, '%1:`[ElemXor`]], 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['b.Elem, '%1:`[ElemXor`]], 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- 'c.Elem ; 'V3:`[ElemXor`] <- 'b.Elem, '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor, 'V2:`[ElemXor`] <- 'b.Elem ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor, 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- 'c.Elem, '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`], 'V2:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`], 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'c.Elem, 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- 'mt.ElemXor, '@} ; { 'V1:`[ElemXor`] <- 'b.Elem, 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- 'b.Elem ; 'V3:`[ElemXor`] <- 'c.Elem, '%} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem, '%1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem, '%1:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem] ; 'V3:`[ElemXor`] <- 'mt.ElemXor, '@} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem], '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1( V1)) =? upTerm(f1(b * V2) * f1(c * V3)), delay, 0) . rewrites: 261 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['c.Elem, '%1:`[ElemXor`]], 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['b.Elem, '%1:`[ElemXor`]], 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- 'c.Elem ; 'V3:`[ElemXor`] <- 'b.Elem, '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor, 'V2:`[ElemXor`] <- 'b.Elem ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- 'mt.ElemXor, 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- 'c.Elem, '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`], 'V2:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- '@1:`[ElemXor`], 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'c.Elem, 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- 'mt.ElemXor, '@} ; { 'V1:`[ElemXor`] <- 'b.Elem, 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- 'b.Elem ; 'V3:`[ElemXor`] <- 'c.Elem, '%} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem, '%1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem, '%1:`[ElemXor`]], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]], '@} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem] ; 'V3:`[ElemXor`] <- 'mt.ElemXor, '@} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- 'mt.ElemXor ; 'V3:`[ElemXor`] <- '_*_['b.Elem, 'c.Elem], '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1( V1)) =? upTerm(f1(b * V2) * f1(c * V3)), filter, 0) . rewrites: 141 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['c.Elem, '%1:`[ElemXor`]], 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['b.Elem, '%1:`[ElemXor`]], 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]], '@} ========================================== reduce in META-VARIANT-TEST : getUnifiers(['EXCLUSIVE-OR], upTerm(f1(a) * f1( V1)) =? upTerm(f1(b * V2) * f1(c * V3)), delay filter, 0) . rewrites: 147 result UnifierList: { 'V1:`[ElemXor`] <- '_*_['c.Elem, '%1:`[ElemXor`]], 'V2:`[ElemXor`] <- '_*_['a.Elem, 'b.Elem] ; 'V3:`[ElemXor`] <- '%1:`[ElemXor`], '%} ; { 'V1:`[ElemXor`] <- '_*_['b.Elem, '%1:`[ElemXor`]], 'V2:`[ElemXor`] <- '%1:`[ElemXor`] ; 'V3:`[ElemXor`] <- '_*_['a.Elem, 'c.Elem], '%} ; { 'V1:`[ElemXor`] <- 'a.Elem, 'V2:`[ElemXor`] <- '_*_['c.Elem, '@1:`[ElemXor`]] ; 'V3:`[ElemXor`] <- '_*_['b.Elem, '@1:`[ElemXor`]], '@} Bye. Maude-Maude3.5.1/tests/Meta/metaVariantUnify20000775000175000017510000000040015036121435020400 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaVariantUnify2.maude -no-banner -no-advise \ > metaVariantUnify2.out 2>&1 diff $srcdir/metaVariantUnify2.expected metaVariantUnify2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaVariantUnify.maude0000664000175000017510000000763315036121435021424 0ustar nileshnileshset show timing off . fmod XOR is sort XOR . sort Elem . ops cst1 cst2 cst3 cst4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm fmod META-TEST is inc XOR . inc META-LEVEL . endfm *** regular red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '#, 0) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '%, 0) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '#, 1) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '#, 2) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '#, 3) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '#, 4) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '#, 5) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '#, 6) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '#, 7) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '#, 8) . *** disjoint red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, '#, 0) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, '%, 0) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, '#, 1) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, '#, 2) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, '#, 3) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, '#, 4) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, '#, 5) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, '#, 6) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, '#, 7) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, '#, 8) . *** regular with irreducibility constraint red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), upTerm(X:XOR + cst1), '#, 0) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), upTerm(X:XOR + cst1), '%, 0) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), upTerm(X:XOR + cst1), '#, 1) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), upTerm(X:XOR + cst1), '#, 2) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), upTerm(X:XOR + cst1), '#, 3) . *** disjoint with irreducibility constraint red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), upTerm(X:XOR + cst1), '#, 0) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), upTerm(X:XOR + cst1), '%, 0) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), upTerm(X:XOR + cst1), '#, 1) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), upTerm(X:XOR + cst1), '#, 2) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), upTerm(X:XOR + cst1), '#, 3) . *** illegal variable name red metaVariantUnify(['XOR], upTerm(%1:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, '#, 0) . Maude-Maude3.5.1/tests/Meta/metaVariantUnify.expected0000664000175000017510000002124215036121435022122 0ustar nileshnilesh========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, (0).Zero) . rewrites: 11 result UnificationPair: { 'X:XOR <- '_+_['cst2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['cst1.Elem, '@1:XOR], '@} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '%, (0).Zero) . rewrites: 11 result UnificationPair: { 'X:XOR <- '_+_['cst2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['cst1.Elem, '@1:XOR], '@} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, 1) . rewrites: 5 result UnificationPair: { 'X:XOR <- 'cst2.Elem ; 'Y:XOR <- 'cst1.Elem, '@} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, 2) . rewrites: 23 result UnificationPair: { 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, 3) . rewrites: 5 result UnificationPair: { 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '%1:XOR], '%} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, 4) . rewrites: 5 result UnificationPair: { 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['cst1.Elem, 'cst2.Elem], '@} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, 5) . rewrites: 5 result UnificationPair: { 'X:XOR <- 'cst1.Elem ; 'Y:XOR <- 'cst2.Elem, '@} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, 6) . rewrites: 5 result UnificationPair: { 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem] ; 'Y:XOR <- '0.XOR, '@} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, 7) . rewrites: 5 result UnificationPair: { 'X:XOR <- '_+_['cst1.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['cst2.Elem, '@1:XOR], '@} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, 8) . rewrites: 5 result UnificationPair?: (noUnifier).UnificationPair? ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, '#, (0).Zero) . rewrites: 11 result UnificationTriple: { 'X:XOR <- '_+_['cst2.Elem, '@1:XOR], 'X:XOR <- '_+_['cst1.Elem, '@1:XOR], '@} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, '%, (0).Zero) . rewrites: 11 result UnificationTriple: { 'X:XOR <- '_+_['cst2.Elem, '@1:XOR], 'X:XOR <- '_+_['cst1.Elem, '@1:XOR], '@} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, '#, 1) . rewrites: 5 result UnificationTriple: { 'X:XOR <- 'cst2.Elem, 'X:XOR <- 'cst1.Elem, '@} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, '#, 2) . rewrites: 23 result UnificationTriple: { 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, '#, 3) . rewrites: 5 result UnificationTriple: { 'X:XOR <- '%1:XOR, 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '%1:XOR], '%} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, '#, 4) . rewrites: 5 result UnificationTriple: { 'X:XOR <- '0.XOR, 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem], '@} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, '#, 5) . rewrites: 5 result UnificationTriple: { 'X:XOR <- 'cst1.Elem, 'X:XOR <- 'cst2.Elem, '@} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, '#, 6) . rewrites: 5 result UnificationTriple: { 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem], 'X:XOR <- '0.XOR, '@} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, '#, 7) . rewrites: 5 result UnificationTriple: { 'X:XOR <- '_+_['cst1.Elem, '@1:XOR], 'X:XOR <- '_+_['cst2.Elem, '@1:XOR], '@} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, '#, 8) . rewrites: 5 result UnificationTriple?: (noUnifier).UnificationTriple? ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), upTerm(cst1 + X:XOR), '#, (0).Zero) . rewrites: 8 result UnificationPair: { 'X:XOR <- '_+_['cst2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['cst1.Elem, '@1:XOR], '@} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), upTerm(cst1 + X:XOR), '%, (0).Zero) . rewrites: 8 result UnificationPair: { 'X:XOR <- '_+_['cst2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['cst1.Elem, '@1:XOR], '@} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), upTerm(cst1 + X:XOR), '#, 1) . rewrites: 5 result UnificationPair: { 'X:XOR <- 'cst2.Elem ; 'Y:XOR <- 'cst1.Elem, '@} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), upTerm(cst1 + X:XOR), '#, 2) . rewrites: 5 result UnificationPair: { 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '%1:XOR], '%} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), upTerm(cst1 + X:XOR), '#, 3) . rewrites: 5 result UnificationPair?: (noUnifier).UnificationPair? ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), upTerm(cst1 + X:XOR), '#, (0).Zero) . rewrites: 8 result UnificationTriple: { 'X:XOR <- '_+_['cst2.Elem, '@1:XOR], 'X:XOR <- '_+_['cst1.Elem, '@1:XOR], '@} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), upTerm(cst1 + X:XOR), '%, (0).Zero) . rewrites: 8 result UnificationTriple: { 'X:XOR <- '_+_['cst2.Elem, '@1:XOR], 'X:XOR <- '_+_['cst1.Elem, '@1:XOR], '@} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), upTerm(cst1 + X:XOR), '#, 1) . rewrites: 5 result UnificationTriple: { 'X:XOR <- 'cst2.Elem, 'X:XOR <- 'cst1.Elem, '@} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), upTerm(cst1 + X:XOR), '#, 2) . rewrites: 5 result UnificationTriple: { 'X:XOR <- '%1:XOR, 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '%1:XOR], '%} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), upTerm(cst1 + X:XOR), '#, 3) . rewrites: 5 result UnificationTriple?: (noUnifier).UnificationTriple? ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + %1:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, (0).Zero) . Warning: unsafe variable name %1:XOR in variant unification problem. rewrites: 5 result UnificationPair?: (noUnifier).UnificationPair? Bye. Maude-Maude3.5.1/tests/Meta/metaVariantUnify0000775000175000017510000000037415036121435020330 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaVariantUnify.maude -no-banner -no-advise \ > metaVariantUnify.out 2>&1 diff $srcdir/metaVariantUnify.expected metaVariantUnify.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaVariantMatch.maude0000664000175000017510000000365315036121435021364 0ustar nileshnileshset show timing off . fmod XOR is sort XOR . sort Elem . ops cst1 cst2 cst3 cst4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm fmod META-TEST is inc XOR . inc META-LEVEL . endfm reduce in META-TEST : metaVariantMatch(['XOR], upTerm(cst1 + X:XOR) <=? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, none, (0).Zero) . reduce in META-TEST : metaVariantMatch(['XOR], upTerm(cst1 + X:XOR) <=? upTerm( cst2 + Y:XOR), (empty).GroundTermList, '#, none, (1).Zero) . reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm( cst1 + cst2), (empty).GroundTermList, '#, none, (0).Zero) . reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm( cst1 + cst2), (empty).GroundTermList, '#, none, (1).Zero) . reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm( cst1 + cst2), (empty).GroundTermList, '#, none, (2).Zero) . reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm( cst1 + cst2), (empty).GroundTermList, '#, none, (3).Zero) . reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm( cst1 + cst2), (empty).GroundTermList, '#, none, (4).Zero) . reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm( cst1 + cst2), (empty).GroundTermList, '#, none, (5).Zero) . reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm( cst1 + cst2), (empty).GroundTermList, '#, none, (6).Zero) . reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm( cst1 + cst2), (empty).GroundTermList, '#, none, (7).Zero) . reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm( cst1 + cst2), (empty).GroundTermList, '#, none, (8).Zero) . Maude-Maude3.5.1/tests/Meta/metaVariantMatch.expected0000664000175000017510000000535615036121435022074 0ustar nileshnilesh========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(cst1 + X:XOR) <=? upTerm( cst2 + Y:XOR), empty, '#, none, 0) . rewrites: 7 result Assignment: 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem, 'Y:XOR] ========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(cst1 + X:XOR) <=? upTerm( cst2 + Y:XOR), empty, '#, none, 1) . rewrites: 4 result Substitution?: (noMatch).Substitution? ========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm(cst1 + cst2), empty, '#, none, 0) . rewrites: 14 result Substitution: 'X:XOR <- 'cst1.Elem ; 'Y:XOR <- 'cst2.Elem ========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm(cst1 + cst2), empty, '#, none, 1) . rewrites: 4 result Substitution: 'X:XOR <- 'cst2.Elem ; 'Y:XOR <- 'cst1.Elem ========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm(cst1 + cst2), empty, '#, none, 2) . rewrites: 4 result Substitution: 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['cst1.Elem, 'cst2.Elem] ========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm(cst1 + cst2), empty, '#, none, 3) . rewrites: 4 result Substitution: 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem] ; 'Y:XOR <- '0.XOR ========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm(cst1 + cst2), empty, '#, none, 4) . rewrites: 4 result Substitution: 'X:XOR <- '_+_['cst1.Elem, '#1:XOR] ; 'Y:XOR <- '_+_['cst2.Elem, '#1:XOR] ========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm(cst1 + cst2), empty, '#, none, 5) . rewrites: 4 result Substitution: 'X:XOR <- '_+_['cst2.Elem, '#1:XOR] ; 'Y:XOR <- '_+_['cst1.Elem, '#1:XOR] ========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm(cst1 + cst2), empty, '#, none, 6) . rewrites: 4 result Substitution: 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '#1:XOR] ; 'Y:XOR <- '#1:XOR ========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm(cst1 + cst2), empty, '#, none, 7) . rewrites: 4 result Substitution: 'X:XOR <- '#1:XOR ; 'Y:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '#1:XOR] ========================================== reduce in META-TEST : metaVariantMatch(['XOR], upTerm(X:XOR + Y:XOR) <=? upTerm(cst1 + cst2), empty, '#, none, 8) . rewrites: 4 result Substitution?: (noMatch).Substitution? Bye. Maude-Maude3.5.1/tests/Meta/metaVariantMatch0000775000175000017510000000037415036121435020272 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaVariantMatch.maude -no-banner -no-advise \ > metaVariantMatch.out 2>&1 diff $srcdir/metaVariantMatch.expected metaVariantMatch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaUpModExp.maude0000664000175000017510000000200615036121435020473 0ustar nileshnileshset show timing off . set show advisories off . red in META-LEVEL : upImports('META-LEVEL) . fmod FOO is sorts Foo Bar . subsort Foo < Bar . op a : -> Foo . endfm fmod BAR is inc FOO * (sort Foo to Baz, op a to b) . endfm red in META-LEVEL : upImports('BAR) . fmod FOO' is sorts Foo Bar Baz . subsort Foo < Bar . op a : -> Baz . op _+_ : Foo Foo -> Foo [prec 31 gather (e E) assoc comm] . op _+_ : Baz Baz -> Foo [prec 31 gather (e E)] . endfm fmod BAR' is inc FOO' * ( sort Foo to Quux, op _+_ : Foo Foo -> Foo to _*_ [prec 29 gather (E e)], op _+_ : Baz Baz -> Foo to _._ [prec 27 gather (E e)] ) . endfm red in META-LEVEL : upImports('BAR') . fmod BAZ is inc FOO' * ( sort Foo to Quux, op _+_ : Foo Foo -> Foo to _*_ [prec 29 format (s s s s)], op _+_ : Baz Baz -> Foo to _._ [prec 27 gather (E e)], label a to b ) + NAT . endfm red in META-LEVEL : upImports('BAZ) . red in META-LEVEL : upModule('BAZ, false) . red in META-LEVEL : upModule('BAZ, true) . Maude-Maude3.5.1/tests/Meta/metaUpModExp.expected0000664000175000017510000002006515036121435021206 0ustar nileshnilesh========================================== reduce in META-LEVEL : upImports('META-LEVEL) . rewrites: 1 result ImportList: protecting 'META-VIEW . protecting 'BOUND . ========================================== reduce in META-LEVEL : upImports('BAR) . rewrites: 1 result ImportList: including 'BOOL . including 'FOO * ( sort 'Foo to 'Baz, op 'a to 'b [none] ) . ========================================== reduce in META-LEVEL : upImports('BAR') . rewrites: 1 result ImportList: including 'BOOL . including 'FOO' * ( sort 'Foo to 'Quux, op '_+_ : 'Baz 'Baz -> 'Foo to '_._ [prec(27) gather('E 'e)], op '_+_ : 'Foo 'Foo -> 'Foo to '_*_ [prec(29) gather('E 'e)] ) . ========================================== reduce in META-LEVEL : upImports('BAZ) . rewrites: 1 result ImportList: including 'BOOL . including 'NAT + 'FOO' * ( sort 'Foo to 'Quux, label 'a to 'b, op '_+_ : 'Baz 'Baz -> 'Foo to '_._ [prec(27) gather('E 'e)], op '_+_ : 'Foo 'Foo -> 'Foo to '_*_ [prec(29) format('s 's 's 's)] ) . ========================================== reduce in META-LEVEL : upModule('BAZ, false) . rewrites: 1 result FModule: fmod 'BAZ is including 'BOOL . including 'NAT + 'FOO' * ( sort 'Foo to 'Quux, label 'a to 'b, op '_+_ : 'Baz 'Baz -> 'Foo to '_._ [prec(27) gather('E 'e)], op '_+_ : 'Foo 'Foo -> 'Foo to '_*_ [prec(29) format('s 's 's 's)] ) . sorts none . none none none none endfm ========================================== reduce in META-LEVEL : upModule('BAZ, true) . rewrites: 1 result FModule: fmod 'BAZ is nil sorts 'Bar ; 'Baz ; 'Bool ; 'Nat ; 'NzNat ; 'Quux ; 'Zero . subsort 'NzNat < 'Nat . subsort 'Quux < 'Bar . subsort 'Zero < 'Nat . op '0 : nil -> 'Zero [ctor] . op '_&_ : 'Nat 'Nat -> 'Nat [assoc comm prec(53) special( id-hook('ACU_NumberOpSymbol, '&) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'Nat 'Nat -> 'Nat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'NzNat 'NzNat -> 'NzNat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'Quux 'Quux -> 'Quux [assoc comm prec(29) format('s 's 's 's)] . op '_+_ : 'Nat 'Nat -> 'Nat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_._ : 'Baz 'Baz -> 'Quux [prec(27) gather('E 'e)] . op '_<<_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '<<) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_<=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_=/=_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '_>=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>>_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '>>) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_>_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_^_ : 'Nat 'Nat -> 'Nat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_^_ : 'NzNat 'Nat -> 'NzNat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_and_ : 'Bool 'Bool -> 'Bool [assoc comm prec(55)] . op '_divides_ : 'NzNat 'Nat -> 'Bool [prec(51) special( id-hook('NumberOpSymbol, 'divides) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op '_or_ : 'Bool 'Bool -> 'Bool [assoc comm prec(59)] . op '_quo_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'quo) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_rem_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'rem) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_xor_ : 'Bool 'Bool -> 'Bool [assoc comm prec(57)] . op '_xor_ : 'Nat 'Nat -> 'Nat [assoc comm prec(55) special( id-hook('ACU_NumberOpSymbol, 'xor) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'Nat 'Nat -> 'Nat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'a : nil -> 'Baz [none] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'gcd : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'gcd : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op 'lcm : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lcm : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'max : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'max : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'modExp : '`[Nat`] '`[Nat`] '`[Nat`] -> '`[Nat`] [special( id-hook('NumberOpSymbol, 'modExp) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op 's_ : 'Nat -> 'NzNat [iter ctor special( id-hook('SuccSymbol, nil) term-hook('zeroTerm, '0.Zero))] . op 'sd : 'Nat 'Nat -> 'Nat [comm special( id-hook('CUI_NumberOpSymbol, 'sd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . none eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . endfm Bye. Maude-Maude3.5.1/tests/Meta/metaUpModExp0000775000175000017510000000035415036121435017410 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaUpModExp.maude -no-banner -no-advise \ > metaUpModExp.out 2>&1 diff $srcdir/metaUpModExp.expected metaUpModExp.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaUpDown.maude0000664000175000017510000000157515036121435020220 0ustar nileshnileshset show timing off . set show advisories off . select META-LEVEL . red metaReduce(['BOOL], 'true.Bool) . red upTerm(1) . red upTerm(X:Nat + 21) . red downTerm('s_['0.Zero], 0) . red downTerm('_+_['X:Nat,'s_^21['0.Zero]], 0) . red upTerm(upTerm(X:Nat + 21)) . red upTerm(upTerm(upTerm(X:Nat + 21))) . red downTerm(upTerm(X:Nat + 21), 0) . red downTerm(downTerm(upTerm(upTerm(X:Nat + 21)), X:Term), 0) . set trace on . red downTerm(downTerm(downTerm( upTerm(upTerm(upTerm(X:Nat + 21))) , X:Term), X:Term), 0) . set trace off . fmod UP-DOWN-TEST is inc META-LEVEL . sort Foo . ops a b c d e : -> Foo . op f : Foo Foo -> Foo . eq c = d . endfm red upTerm(f(a, f(b, c))) . red upTerm(upTerm(f(a, f(b, c)))) . red downTerm(upTerm(upTerm(f(a, f(b, c)))), X:Term) . red downTerm(downTerm(upTerm(upTerm(f(a, f(b, c)))), X:Term), a) . red downTerm('f['a.Foo,'f['b.Foo,'c.Foo]], a) . Maude-Maude3.5.1/tests/Meta/metaUpDown.expected0000664000175000017510000000764615036121435020733 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaReduce(['BOOL], 'true.Bool) . rewrites: 2 result ResultPair: {'true.Bool, 'Bool} ========================================== reduce in META-LEVEL : upTerm(1) . rewrites: 1 result GroundTerm: 's_['0.Zero] ========================================== reduce in META-LEVEL : upTerm(X:Nat + 21) . rewrites: 1 result Term: '_+_['X:Nat, 's_^21['0.Zero]] ========================================== reduce in META-LEVEL : downTerm('s_['0.Zero], 0) . rewrites: 1 result NzNat: 1 ========================================== reduce in META-LEVEL : downTerm('_+_['X:Nat, 's_^21['0.Zero]], 0) . rewrites: 1 result NzNat: X:Nat + 21 ========================================== reduce in META-LEVEL : upTerm(upTerm(X:Nat + 21)) . rewrites: 2 result GroundTerm: '_`[_`][''_+_.Sort, '_`,_[''X:Nat.Variable, '_`[_`][ ''s_^21.Sort, ''0.Zero.Constant]]] ========================================== reduce in META-LEVEL : upTerm(upTerm(upTerm(X:Nat + 21))) . rewrites: 3 result GroundTerm: '_`[_`][''_`[_`].Qid, '_`,_['''_+_.Sort.Constant, '_`[_`][ ''_`,_.Qid, '_`,_['''X:Nat.Variable.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''s_^21.Sort.Constant, '''0.Zero.Constant.Constant]]]]]] ========================================== reduce in META-LEVEL : downTerm(upTerm(X:Nat + 21), 0) . rewrites: 2 result NzNat: X:Nat + 21 ========================================== reduce in META-LEVEL : downTerm(downTerm(upTerm(upTerm(X:Nat + 21)), X:Term), 0) . rewrites: 4 result NzNat: X:Nat + 21 ========================================== reduce in META-LEVEL : downTerm(downTerm(downTerm(upTerm(upTerm(upTerm(X:Nat + 21))), X:Term), X:Term), 0) . *********** equation (built-in equation for symbol upTerm) upTerm(X:Nat + 21) ---> '_+_['X:Nat, 's_^21['0.Zero]] *********** equation (built-in equation for symbol upTerm) upTerm('_+_['X:Nat, 's_^21['0.Zero]]) ---> '_`[_`][''_+_.Sort, '_`,_[''X:Nat.Variable, '_`[_`][''s_^21.Sort, ''0.Zero.Constant]]] *********** equation (built-in equation for symbol upTerm) upTerm('_`[_`][''_+_.Sort, '_`,_[''X:Nat.Variable, '_`[_`][''s_^21.Sort, ''0.Zero.Constant]]]) ---> '_`[_`][''_`[_`].Qid, '_`,_['''_+_.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_[ '''X:Nat.Variable.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''s_^21.Sort.Constant, '''0.Zero.Constant.Constant]]]]]] *********** equation (built-in equation for symbol downTerm) downTerm('_`[_`][''_`[_`].Qid, '_`,_['''_+_.Sort.Constant, '_`[_`][''_`,_.Qid, '_`,_['''X:Nat.Variable.Constant, '_`[_`][''_`[_`].Qid, '_`,_[ '''s_^21.Sort.Constant, '''0.Zero.Constant.Constant]]]]]], X:Term) ---> '_`[_`][''_+_.Sort, '_`,_[''X:Nat.Variable, '_`[_`][''s_^21.Sort, ''0.Zero.Constant]]] *********** equation (built-in equation for symbol downTerm) downTerm('_`[_`][''_+_.Sort, '_`,_[''X:Nat.Variable, '_`[_`][''s_^21.Sort, ''0.Zero.Constant]]], X:Term) ---> '_+_['X:Nat, 's_^21['0.Zero]] *********** equation (built-in equation for symbol downTerm) downTerm('_+_['X:Nat, 's_^21['0.Zero]], 0) ---> X:Nat + 21 rewrites: 6 result NzNat: X:Nat + 21 ========================================== reduce in UP-DOWN-TEST : upTerm(f(a, f(b, c))) . rewrites: 2 result GroundTerm: 'f['a.Foo, 'f['b.Foo, 'd.Foo]] ========================================== reduce in UP-DOWN-TEST : upTerm(upTerm(f(a, f(b, c)))) . rewrites: 3 result GroundTerm: '_`[_`][''f.Sort, '_`,_[''a.Foo.Constant, '_`[_`][''f.Sort, '_`,_[''b.Foo.Constant, ''d.Foo.Constant]]]] ========================================== reduce in UP-DOWN-TEST : downTerm(upTerm(upTerm(f(a, f(b, c)))), X:Term) . rewrites: 4 result GroundTerm: 'f['a.Foo, 'f['b.Foo, 'd.Foo]] ========================================== reduce in UP-DOWN-TEST : downTerm(downTerm(upTerm(upTerm(f(a, f(b, c)))), X:Term), a) . rewrites: 5 result Foo: f(a, f(b, d)) ========================================== reduce in UP-DOWN-TEST : downTerm('f['a.Foo, 'f['b.Foo, 'c.Foo]], a) . rewrites: 2 result Foo: f(a, f(b, d)) Bye. Maude-Maude3.5.1/tests/Meta/metaUpDown0000775000175000017510000000034415036121435017122 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaUpDown.maude -no-banner -no-advise \ > metaUpDown.out 2>&1 diff $srcdir/metaUpDown.expected metaUpDown.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaUp2.maude0000664000175000017510000000360515036121435017446 0ustar nileshnileshset show timing off . set show advisories off . select META-LEVEL . red upSorts('META-LEVEL, true) . red upSorts('META-LEVEL, false) . red upSubsortDecls('META-LEVEL, true) . red upSubsortDecls('META-LEVEL, false) . red upImports('META-LEVEL) . red upImports('NAT) . red upImports('TRUTH-VALUE) . set trace on . red upOpDecls('TRUTH-VALUE, true) . set trace off . red upOpDecls('META-LEVEL, true) . red upOpDecls('META-LEVEL, false) . red upOpDecls('IDENTICAL, true) . red in META-LEVEL : upModule('META-LEVEL, true) . red in META-LEVEL : upModule('META-LEVEL, false) . red in META-LEVEL : upModule('BOOL, true) . red in META-LEVEL : metaReduce(upModule('BOOL, true), '_==_['true.Bool, 'false.Bool]) . red in META-LEVEL : upModule('BOOL, false) . red in META-LEVEL : metaReduce(upModule('BOOL, false), '_==_['true.Bool, 'false.Bool]) . red in META-LEVEL : upModule('TRUTH, true) . red in META-LEVEL : upModule('NAT, true) . red in META-LEVEL : metaReduce(upModule('NAT, true), '_+_[upTerm(100), upTerm(66)]) . red in META-LEVEL : upModule('NAT, false) . red in META-LEVEL : metaReduce(upModule('NAT, false), '_+_[upTerm(100), upTerm(66)]) . red in META-LEVEL : metaReduce(upModule('NAT, true), 'modExp[upTerm(100), upTerm(66), upTerm(17)]) . red in META-LEVEL : upModule('META-LEVEL, true) . red in META-LEVEL : upModule('STRING, true) . red in META-LEVEL : metaReduce(upModule('STRING, true), '_+_[upTerm("a"), upTerm("b")]) . red in META-LEVEL : metaReduce(upModule('META-LEVEL, true), 'modExp[upTerm(100), upTerm(66), upTerm(17)]) . red in META-LEVEL : metaReduce(upModule('META-LEVEL, true), 'upModule[upTerm('META-LEVEL), upTerm(true)]) . red upTerm(upModule('META-LEVEL, true)) . red {upTerm(upModule('META-LEVEL, true)), 'FModule} . red in META-LEVEL : metaReduce(upModule('META-LEVEL, true), 'upModule[upTerm('META-LEVEL), upTerm(true)]) == {upTerm(upModule('META-LEVEL, true)), 'FModule} . Maude-Maude3.5.1/tests/Meta/metaUp2.expected0000664000175000017510000400265515036121435020164 0ustar nileshnilesh========================================== reduce in META-LEVEL : upSorts('META-LEVEL, true) . rewrites: 1 result NeSortSet: 'Assignment ; 'Attr ; 'AttrSet ; 'Bool ; 'Bound ; 'CallStrategy ; 'Char ; 'Condition ; 'Constant ; 'Context ; 'EmptyCommaList ; 'EmptyQidSet ; 'EqCondition ; 'Equation ; 'EquationSet ; 'Expression ; 'FModule ; 'FTheory ; 'FindResult ; 'GTermList ; 'GroundTerm ; 'GroundTermList ; 'Header ; 'Hook ; 'HookList ; 'Import ; 'ImportList ; 'Kind ; 'KindSet ; 'MatchOrUnificationPair ; 'MatchPair ; 'MatchPair? ; 'MatchingProblem ; 'MembAx ; 'MembAxSet ; 'Module ; 'ModuleExpression ; 'NarrowingApplyResult ; 'NarrowingApplyResult? ; 'NarrowingSearchPathResult ; 'NarrowingSearchPathResult? ; 'NarrowingSearchResult ; 'NarrowingSearchResult? ; 'NarrowingStep ; 'NarrowingTrace ; 'Nat ; 'NatList ; 'NeCTermList ; 'NeGroundTermList ; 'NeHookList ; 'NeKindSet ; 'NeNatList ; 'NeParameterDeclList ; 'NeParameterList ; 'NeQidList ; 'NeQidSet ; 'NeSortSet ; 'NeTermList ; 'NeTypeList ; 'NeTypeSet ; 'NeVariableSet ; 'NzNat ; 'OpDecl ; 'OpDeclSet ; 'OpMapping ; 'OpMappingSet ; 'ParameterDecl ; 'ParameterDeclList ; 'ParameterList ; 'Parent ; 'PatternSubjectPair ; 'PrintOption ; 'PrintOptionSet ; 'Qid ; 'QidList ; 'QidSet ; 'Renaming ; 'RenamingSet ; 'Result4Tuple ; 'Result4Tuple? ; 'ResultPair ; 'ResultPair? ; 'ResultTriple ; 'ResultTriple? ; 'Rule ; 'RuleApplication ; 'RuleSet ; 'SModule ; 'STheory ; 'SmtResult ; 'SmtResult? ; 'Sort ; 'SortMapping ; 'SortMappingSet ; 'SortSet ; 'SrewriteOption ; 'StratDecl ; 'StratDeclSet ; 'StratDefSet ; 'StratDefinition ; 'StratMapping ; 'StratMappingSet ; 'StratModule ; 'StratTheory ; 'Strategy ; 'Strategy? ; 'StrategyList ; 'String ; 'SubsortDecl ; 'SubsortDeclSet ; 'Substitution ; 'Substitution? ; 'Term ; 'TermList ; 'TermQid ; 'Trace ; 'Trace? ; 'TraceStep ; 'Type ; 'Type? ; 'TypeList ; 'TypeListSet ; 'TypeSet ; 'UnificandPair ; 'UnificationPair ; 'UnificationPair? ; 'UnificationProblem ; 'UnificationTriple ; 'UnificationTriple? ; 'UsingPair ; 'UsingPairSet ; 'Variable ; 'VariableSet ; 'Variant ; 'Variant? ; 'VariantOption ; 'VariantOptionSet ; 'View ; 'ViewExpression ; 'Zero ========================================== reduce in META-LEVEL : upSorts('META-LEVEL, false) . rewrites: 1 result NeSortSet: 'MatchOrUnificationPair ; 'MatchPair ; 'MatchPair? ; 'MatchingProblem ; 'NarrowingApplyResult ; 'NarrowingApplyResult? ; 'NarrowingSearchPathResult ; 'NarrowingSearchPathResult? ; 'NarrowingSearchResult ; 'NarrowingSearchResult? ; 'NarrowingStep ; 'NarrowingTrace ; 'NeVariableSet ; 'Parent ; 'PatternSubjectPair ; 'PrintOption ; 'PrintOptionSet ; 'Result4Tuple ; 'Result4Tuple? ; 'ResultPair ; 'ResultPair? ; 'ResultTriple ; 'ResultTriple? ; 'SmtResult ; 'SmtResult? ; 'SrewriteOption ; 'Strategy? ; 'Substitution? ; 'Trace ; 'Trace? ; 'TraceStep ; 'Type? ; 'UnificandPair ; 'UnificationPair ; 'UnificationPair? ; 'UnificationProblem ; 'UnificationTriple ; 'UnificationTriple? ; 'VariableSet ; 'Variant ; 'Variant? ; 'VariantOption ; 'VariantOptionSet ========================================== reduce in META-LEVEL : upSubsortDecls('META-LEVEL, true) . rewrites: 2 result SubsortDeclSet: subsort 'Assignment < 'Substitution . subsort 'Attr < 'AttrSet . subsort 'CallStrategy < 'Strategy . subsort 'Char < 'String . subsort 'Constant < 'GroundTerm . subsort 'Constant < 'TermQid . subsort 'Context < 'NeCTermList . subsort 'EmptyCommaList < 'GroundTermList . subsort 'EmptyCommaList < 'ParameterList . subsort 'EmptyQidSet < 'KindSet . subsort 'EmptyQidSet < 'SortSet . subsort 'EmptyQidSet < 'VariableSet . subsort 'EqCondition < 'Condition . subsort 'Equation < 'EquationSet . subsort 'Expression < 'ModuleExpression . subsort 'Expression < 'ViewExpression . subsort 'FModule < 'SModule . subsort 'FTheory < 'STheory . subsort 'GroundTerm < 'NeGroundTermList . subsort 'GroundTerm < 'Term . subsort 'GroundTermList < 'TermList . subsort 'Hook < 'NeHookList . subsort 'Import < 'ImportList . subsort 'Kind < 'NeKindSet . subsort 'Kind < 'Type . subsort 'KindSet < 'TypeSet . subsort 'MatchPair < 'MatchOrUnificationPair . subsort 'MatchPair < 'MatchPair? . subsort 'MembAx < 'MembAxSet . subsort 'NarrowingApplyResult < 'NarrowingApplyResult? . subsort 'NarrowingSearchPathResult < 'NarrowingSearchPathResult? . subsort 'NarrowingSearchResult < 'NarrowingSearchResult? . subsort 'NarrowingStep < 'NarrowingTrace . subsort 'Nat < 'Bound . subsort 'Nat < 'FindResult . subsort 'Nat < 'NeNatList . subsort 'Nat < 'Parent . subsort 'NeCTermList < 'GTermList . subsort 'NeGroundTermList < 'GroundTermList . subsort 'NeGroundTermList < 'NeTermList . subsort 'NeHookList < 'HookList . subsort 'NeKindSet < 'KindSet . subsort 'NeKindSet < 'NeTypeSet . subsort 'NeNatList < 'NatList . subsort 'NeParameterDeclList < 'ParameterDeclList . subsort 'NeParameterList < 'ParameterList . subsort 'NeQidList < 'QidList . subsort 'NeQidSet < 'QidSet . subsort 'NeSortSet < 'NeTypeSet . subsort 'NeSortSet < 'SortSet . subsort 'NeTermList < 'TermList . subsort 'NeTypeList < 'NeQidList . subsort 'NeTypeList < 'TypeList . subsort 'NeTypeSet < 'NeQidSet . subsort 'NeTypeSet < 'TypeSet . subsort 'NeVariableSet < 'NeQidSet . subsort 'NeVariableSet < 'VariableSet . subsort 'NzNat < 'Nat . subsort 'OpDecl < 'OpDeclSet . subsort 'OpMapping < 'OpMappingSet . subsort 'ParameterDecl < 'NeParameterDeclList . subsort 'PatternSubjectPair < 'MatchingProblem . subsort 'PrintOption < 'PrintOptionSet . subsort 'Qid < 'Header . subsort 'Qid < 'NeQidList . subsort 'Qid < 'NeQidSet . subsort 'Renaming < 'RenamingSet . subsort 'Result4Tuple < 'Result4Tuple? . subsort 'ResultPair < 'ResultPair? . subsort 'ResultTriple < 'ResultTriple? . subsort 'Rule < 'RuleSet . subsort 'RuleApplication < 'Strategy . subsort 'SModule < 'Module . subsort 'SModule < 'StratModule . subsort 'STheory < 'Module . subsort 'STheory < 'StratTheory . subsort 'SmtResult < 'SmtResult? . subsort 'Sort < 'Expression . subsort 'Sort < 'NeSortSet . subsort 'Sort < 'Type . subsort 'SortMapping < 'SortMappingSet . subsort 'SortSet < 'TypeSet . subsort 'StratDecl < 'StratDeclSet . subsort 'StratDefinition < 'StratDefSet . subsort 'StratMapping < 'StratMappingSet . subsort 'StratModule < 'Module . subsort 'StratTheory < 'Module . subsort 'Strategy < 'Strategy? . subsort 'Strategy < 'StrategyList . subsort 'SubsortDecl < 'SubsortDeclSet . subsort 'Substitution < 'Substitution? . subsort 'Term < 'NeTermList . subsort 'TermList < 'GTermList . subsort 'TermQid < 'Qid . subsort 'TermQid < 'Term . subsort 'Trace < 'Trace? . subsort 'TraceStep < 'Trace . subsort 'Type < 'NeTypeList . subsort 'Type < 'NeTypeSet . subsort 'Type < 'Qid . subsort 'Type < 'Type? . subsort 'TypeList < 'QidList . subsort 'TypeList < 'TypeListSet . subsort 'TypeSet < 'QidSet . subsort 'TypeSet < 'TypeListSet . subsort 'UnificandPair < 'UnificationProblem . subsort 'UnificationPair < 'MatchOrUnificationPair . subsort 'UnificationPair < 'UnificationPair? . subsort 'UnificationTriple < 'UnificationTriple? . subsort 'UsingPair < 'UsingPairSet . subsort 'Variable < 'NeVariableSet . subsort 'Variable < 'TermQid . subsort 'VariableSet < 'QidSet . subsort 'Variant < 'Variant? . subsort 'VariantOption < 'VariantOptionSet . subsort 'ViewExpression < 'NeParameterList . subsort 'Zero < 'Nat . ========================================== reduce in META-LEVEL : upSubsortDecls('META-LEVEL, false) . rewrites: 1 result SubsortDeclSet: subsort 'EmptyQidSet < 'VariableSet . subsort 'MatchPair < 'MatchOrUnificationPair . subsort 'MatchPair < 'MatchPair? . subsort 'NarrowingApplyResult < 'NarrowingApplyResult? . subsort 'NarrowingSearchPathResult < 'NarrowingSearchPathResult? . subsort 'NarrowingSearchResult < 'NarrowingSearchResult? . subsort 'NarrowingStep < 'NarrowingTrace . subsort 'Nat < 'Parent . subsort 'NeVariableSet < 'NeQidSet . subsort 'NeVariableSet < 'VariableSet . subsort 'PatternSubjectPair < 'MatchingProblem . subsort 'PrintOption < 'PrintOptionSet . subsort 'Result4Tuple < 'Result4Tuple? . subsort 'ResultPair < 'ResultPair? . subsort 'ResultTriple < 'ResultTriple? . subsort 'SmtResult < 'SmtResult? . subsort 'Strategy < 'Strategy? . subsort 'Substitution < 'Substitution? . subsort 'Trace < 'Trace? . subsort 'TraceStep < 'Trace . subsort 'Type < 'Type? . subsort 'UnificandPair < 'UnificationProblem . subsort 'UnificationPair < 'MatchOrUnificationPair . subsort 'UnificationPair < 'UnificationPair? . subsort 'UnificationTriple < 'UnificationTriple? . subsort 'Variable < 'NeVariableSet . subsort 'VariableSet < 'QidSet . subsort 'Variant < 'Variant? . subsort 'VariantOption < 'VariantOptionSet . ========================================== reduce in META-LEVEL : upImports('META-LEVEL) . rewrites: 1 result ImportList: protecting 'META-VIEW . protecting 'BOUND . ========================================== reduce in META-LEVEL : upImports('NAT) . rewrites: 1 result Import: protecting 'BOOL . ========================================== reduce in META-LEVEL : upImports('TRUTH-VALUE) . rewrites: 1 result ImportList: (nil).ImportList ========================================== reduce in META-LEVEL : upOpDecls('TRUTH-VALUE, true) . *********** equation (built-in equation for symbol upOpDecls) upOpDecls('TRUTH-VALUE, true) ---> op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . rewrites: 1 result OpDeclSet: op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . ========================================== reduce in META-LEVEL : upOpDecls('META-LEVEL, true) . rewrites: 1 result OpDeclSet: op '$applySubstitution : 'NeTermList 'Substitution -> 'Term [ none] . op '$card : 'QidSet 'Nat -> 'Nat [none] . op '$diff : 'QidSet 'QidSet 'QidSet -> 'QidSet [none] . op '$intersect : 'QidSet 'QidSet 'QidSet -> 'QidSet [none] . op '$reverse : 'NatList 'NatList -> 'NatList [none] . op '$reverse : 'QidList 'QidList -> 'QidList [none] . op '$size : 'NatList 'Nat -> 'Nat [none] . op '$size : 'QidList 'Nat -> 'Nat [none] . op '0 : nil -> 'Zero [ctor] . op ' : nil -> 'Constant [special( id-hook('QuotedIdentifierSymbol, 'constantQid))] . op ' : nil -> 'Kind [special( id-hook('QuotedIdentifierSymbol, 'kindQid))] . op ' : nil -> 'Qid [special( id-hook('QuotedIdentifierSymbol, nil))] . op ' : nil -> 'Sort [special( id-hook('QuotedIdentifierSymbol, 'sortQid))] . op ' : nil -> 'Variable [special( id-hook('QuotedIdentifierSymbol, 'variableQid))] . op ' : nil -> 'Char [special( id-hook('StringSymbol, nil))] . op ' : nil -> 'String [special( id-hook('StringSymbol, nil))] . op '_! : 'Strategy -> 'Strategy [ctor] . op '_&_ : 'Nat 'Nat -> 'Nat [assoc comm prec(53) special( id-hook('ACU_NumberOpSymbol, '&) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_* : 'Strategy -> 'Strategy [ctor] . op '_*_ : 'Nat 'Nat -> 'Nat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'NzNat 'NzNat -> 'NzNat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*`(_`) : 'ModuleExpression 'RenamingSet -> 'ModuleExpression [ctor prec( 39) format('d 'd 's 'n++i 'n--i 'd)] . op '_+ : 'Strategy -> 'Strategy [ctor] . op '_+_ : 'ModuleExpression 'ModuleExpression -> 'ModuleExpression [assoc comm ctor] . op '_+_ : 'Nat 'Nat -> 'Nat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'String 'String -> 'String [prec(33) gather('E 'e) special( id-hook('StringOpSymbol, '+) op-hook('stringSymbol, ', nil, 'Char))] . op '_/\_ : 'Condition 'Condition -> 'Condition [assoc ctor id('nil.EqCondition) prec(73)] . op '_/\_ : 'EqCondition 'EqCondition -> 'EqCondition [assoc ctor id( 'nil.EqCondition) prec(73)] . op '_/\_ : 'MatchingProblem 'MatchingProblem -> 'MatchingProblem [assoc comm ctor prec(73)] . op '_/\_ : 'UnificationProblem 'UnificationProblem -> 'UnificationProblem [ assoc comm ctor prec(73)] . op '_::_ : 'Sort 'ModuleExpression -> 'ParameterDecl [none] . op '_:=_ : 'Term 'Term -> 'EqCondition [ctor prec(71)] . op '_:_ : 'Term 'Sort -> 'EqCondition [ctor prec(71)] . op '_;_ : 'EmptyQidSet 'EmptyQidSet -> 'EmptyQidSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'KindSet 'KindSet -> 'KindSet [assoc comm ctor id('none.EmptyQidSet) prec(43)] . op '_;_ : 'NeKindSet 'KindSet -> 'NeKindSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeQidSet 'QidSet -> 'NeQidSet [assoc comm ctor id('none.EmptyQidSet) prec(43)] . op '_;_ : 'NeSortSet 'SortSet -> 'NeSortSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeTypeSet 'TypeSet -> 'NeTypeSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeVariableSet 'VariableSet -> 'NeVariableSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'QidSet 'QidSet -> 'QidSet [assoc comm ctor id('none.EmptyQidSet) prec(43)] . op '_;_ : 'SortSet 'SortSet -> 'SortSet [assoc comm ctor id('none.EmptyQidSet) prec(43)] . op '_;_ : 'Strategy 'Strategy -> 'Strategy [assoc ctor id('idle.Strategy) prec( 39) gather('e 'E)] . op '_;_ : 'Substitution 'Substitution -> 'Substitution [assoc comm ctor id( 'none.Substitution) prec(65)] . op '_;_ : 'TypeListSet 'TypeListSet -> 'TypeListSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'TypeSet 'TypeSet -> 'TypeSet [assoc comm ctor id('none.EmptyQidSet) prec(43)] . op '_;_ : 'VariableSet 'VariableSet -> 'VariableSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_<-_ : 'Variable 'Term -> 'Assignment [ctor prec(63) format('n++i 'd 'd '--)] . op '_<<_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '<<) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_<=?_ : 'Term 'Term -> 'PatternSubjectPair [ctor prec(71)] . op '_<=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<=_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '<=) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '<) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_=/=_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '_=>_ : 'Term 'Term -> 'Condition [ctor prec(71)] . op '_=?_ : 'Term 'Term -> 'UnificandPair [ctor prec(71)] . op '_=_ : 'Term 'Term -> 'EqCondition [ctor prec(71)] . op '_>=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>=_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '>=) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>>_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '>>) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_>_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '>) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_?_:_ : 'Strategy 'Strategy 'Strategy -> 'Strategy [ctor prec(55)] . op '_\_ : 'QidSet 'QidSet -> 'QidSet [gather('E 'e)] . op '_^_ : 'Nat 'Nat -> 'Nat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_^_ : 'NzNat 'Nat -> 'NzNat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '__ : 'AttrSet 'AttrSet -> 'AttrSet [assoc comm ctor id('none.AttrSet)] . op '__ : 'EquationSet 'EquationSet -> 'EquationSet [assoc comm ctor id( 'none.EquationSet) format('d 'ni 'd)] . op '__ : 'HookList 'HookList -> 'HookList [assoc ctor id('nil.HookList)] . op '__ : 'HookList 'NeHookList -> 'NeHookList [assoc ctor id('nil.HookList)] . op '__ : 'ImportList 'ImportList -> 'ImportList [assoc ctor id('nil.ImportList) format('d 'ni 'd)] . op '__ : 'MembAxSet 'MembAxSet -> 'MembAxSet [assoc comm ctor id( 'none.MembAxSet) format('d 'ni 'd)] . op '__ : 'NarrowingTrace 'NarrowingTrace -> 'NarrowingTrace [assoc ctor id( 'nil.NarrowingTrace)] . op '__ : 'NatList 'NatList -> 'NatList [assoc ctor id('nil.NatList) prec(25)] . op '__ : 'NatList 'NeNatList -> 'NeNatList [assoc ctor id('nil.NatList) prec( 25)] . op '__ : 'NeHookList 'HookList -> 'NeHookList [assoc ctor id('nil.HookList)] . op '__ : 'NeNatList 'NatList -> 'NeNatList [assoc ctor id('nil.NatList) prec( 25)] . op '__ : 'NeQidList 'QidList -> 'NeQidList [assoc ctor id('nil.TypeList) prec( 25)] . op '__ : 'NeTypeList 'TypeList -> 'NeTypeList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'OpDeclSet 'OpDeclSet -> 'OpDeclSet [assoc comm ctor id( 'none.OpDeclSet) format('d 'ni 'd)] . op '__ : 'OpMappingSet 'OpMappingSet -> 'OpMappingSet [assoc comm ctor id( 'none.OpMappingSet) format('d 'ni 'd)] . op '__ : 'PrintOptionSet 'PrintOptionSet -> 'PrintOptionSet [assoc comm ctor id('none.PrintOptionSet)] . op '__ : 'QidList 'NeQidList -> 'NeQidList [assoc ctor id('nil.TypeList) prec( 25)] . op '__ : 'QidList 'QidList -> 'QidList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'RuleSet 'RuleSet -> 'RuleSet [assoc comm ctor id('none.RuleSet) format('d 'ni 'd)] . op '__ : 'SortMappingSet 'SortMappingSet -> 'SortMappingSet [assoc comm ctor id('none.SortMappingSet) format('d 'ni 'd)] . op '__ : 'StratDeclSet 'StratDeclSet -> 'StratDeclSet [assoc comm ctor id( 'none.StratDeclSet) format('d 'ni 'd)] . op '__ : 'StratDefSet 'StratDefSet -> 'StratDefSet [assoc comm ctor id( 'none.StratDefSet) format('d 'ni 'd)] . op '__ : 'StratMappingSet 'StratMappingSet -> 'StratMappingSet [assoc comm ctor id('none.StratMappingSet) format('d 'ni 'd)] . op '__ : 'SubsortDeclSet 'SubsortDeclSet -> 'SubsortDeclSet [assoc comm ctor id('none.SubsortDeclSet) format('d 'ni 'd)] . op '__ : 'Trace 'Trace -> 'Trace [assoc ctor id('nil.Trace) format('d 'n 'd)] . op '__ : 'TypeList 'NeTypeList -> 'NeTypeList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'TypeList 'TypeList -> 'TypeList [assoc ctor id('nil.TypeList) prec( 25)] . op '__ : 'VariantOptionSet 'VariantOptionSet -> 'VariantOptionSet [assoc comm ctor id('none.VariantOptionSet)] . op '_`,_ : 'EmptyCommaList 'EmptyCommaList -> 'EmptyCommaList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'GTermList 'GTermList -> 'GTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'GroundTermList 'GroundTermList -> 'GroundTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'GroundTermList 'NeGroundTermList -> 'NeGroundTermList [assoc ctor id('empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeCTermList 'TermList -> 'NeCTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeGroundTermList 'GroundTermList -> 'NeGroundTermList [assoc ctor id('empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeParameterDeclList 'ParameterDeclList -> 'NeParameterDeclList [ assoc ctor id('nil.ParameterDeclList) prec(121)] . op '_`,_ : 'NeParameterList 'ParameterList -> 'NeParameterList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeTermList 'TermList -> 'NeTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'ParameterDeclList 'NeParameterDeclList -> 'NeParameterDeclList [ assoc ctor id('nil.ParameterDeclList) prec(121)] . op '_`,_ : 'ParameterDeclList 'ParameterDeclList -> 'ParameterDeclList [assoc ctor id('nil.ParameterDeclList) prec(121)] . op '_`,_ : 'ParameterList 'NeParameterList -> 'NeParameterList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'ParameterList 'ParameterList -> 'ParameterList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'RenamingSet 'RenamingSet -> 'RenamingSet [assoc comm ctor prec(43) format('d 'd 'ni 'd)] . op '_`,_ : 'StrategyList 'StrategyList -> 'StrategyList [assoc ctor id( 'empty.StrategyList)] . op '_`,_ : 'TermList 'NeCTermList -> 'NeCTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'TermList 'NeTermList -> 'NeTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'TermList 'TermList -> 'TermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'UsingPairSet 'UsingPairSet -> 'UsingPairSet [assoc comm ctor prec( 61)] . op '_`[_`] : 'Qid 'NeCTermList -> 'Context [ctor] . op '_`[_`] : 'Qid 'NeGroundTermList -> 'GroundTerm [ctor] . op '_`[_`] : 'Qid 'NeTermList -> 'Term [ctor] . op '_`[_`]`{_`} : 'Qid 'Substitution 'StrategyList -> 'RuleApplication [ctor prec(21)] . op '_`[`[_`]`] : 'Qid 'TermList -> 'CallStrategy [ctor prec(21)] . op '_`{_`} : 'Expression 'NeParameterList -> 'Expression [ctor prec(37)] . op '_`{_`} : 'ModuleExpression 'NeParameterList -> 'ModuleExpression [ctor prec(37)] . op '_`{_`} : 'Qid 'ParameterDeclList -> 'Header [ctor] . op '_`{_`} : 'ViewExpression 'NeParameterList -> 'ViewExpression [ctor prec( 37)] . op '_and-then_ : 'Bool 'Bool -> 'Bool [strat(1 0) prec(55) gather('e 'E)] . op '_and_ : 'Bool 'Bool -> 'Bool [assoc comm prec(55)] . op '_divides_ : 'NzNat 'Nat -> 'Bool [prec(51) special( id-hook('NumberOpSymbol, 'divides) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op '_in_ : 'Qid 'QidSet -> 'Bool [none] . op '_or-else_ : 'Bool 'Bool -> 'Bool [strat(1 0) prec(59) gather('e 'E)] . op '_or-else_ : 'Strategy 'Strategy -> 'Strategy [assoc ctor prec(43) gather('e 'E)] . op '_or_ : 'Bool 'Bool -> 'Bool [assoc comm prec(59)] . op '_psubset_ : 'QidSet 'QidSet -> 'Bool [none] . op '_quo_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'quo) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_rem_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'rem) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_subset_ : 'QidSet 'QidSet -> 'Bool [none] . op '_using_ : 'Variable 'Strategy -> 'UsingPair [ctor prec(21)] . op '_xor_ : 'Bool 'Bool -> 'Bool [assoc comm prec(57)] . op '_xor_ : 'Nat 'Nat -> 'Nat [assoc comm prec(55) special( id-hook('ACU_NumberOpSymbol, 'xor) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'Nat 'Nat -> 'Nat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'Strategy 'Strategy -> 'Strategy [assoc comm ctor id('fail.Strategy) prec(41) gather('e 'E)] . op '`[_`] : 'Qid -> 'Module [none] . op '`[`] : nil -> 'Context [ctor] . op '`{_`,_`,_`,_`,_`,_`,_`} : 'Context 'Qid 'Substitution 'Qid 'Term 'Type 'Substitution -> 'NarrowingStep [ctor format('ni 'n++i 'd 'ni 'd 's 'd 'ni 'd 'ni 'd 's 'd 's 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Context 'Qid 'Substitution 'Substitution 'Qid -> 'NarrowingApplyResult [ctor format('d 'n++i 'd 's 'd 'ni 'd 'ni 'd 's 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Substitution 'NarrowingTrace 'Substitution 'Qid -> 'NarrowingSearchPathResult [ctor format('d 'n++i 'd 's 'd 's 'd 's 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Substitution 'Qid 'Substitution 'Qid -> 'NarrowingSearchResult [ctor format('d 'n++i 'd 's 'd 's 'd 'ni 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`} : 'Term 'Substitution 'Nat 'Parent 'Bool -> 'Variant [ ctor] . op '`{_`,_`,_`,_`,_`} : 'Term 'Substitution 'Qid 'Parent 'Bool -> 'Variant [ ctor] . op '`{_`,_`,_`,_`} : 'Term 'Substitution 'Term 'Nat -> 'SmtResult [ctor] . op '`{_`,_`,_`,_`} : 'Term 'Type 'Substitution 'Context -> 'Result4Tuple [ctor] . op '`{_`,_`,_`} : 'Substitution 'Substitution 'Nat -> 'UnificationTriple [ctor] . op '`{_`,_`,_`} : 'Substitution 'Substitution 'Qid -> 'UnificationTriple [ctor] . op '`{_`,_`,_`} : 'Term 'Type 'Rule -> 'TraceStep [ctor] . op '`{_`,_`,_`} : 'Term 'Type 'Substitution -> 'ResultTriple [ctor] . op '`{_`,_`} : 'Substitution 'Context -> 'MatchPair [ctor] . op '`{_`,_`} : 'Substitution 'Nat -> 'UnificationPair [ctor] . op '`{_`,_`} : 'Substitution 'Qid -> 'UnificationPair [ctor] . op '`{_`,_`} : 'Term 'Type -> 'ResultPair [ctor] . op 'all : nil -> 'RuleApplication [ctor] . op 'amatch_s.t._ : 'Term 'EqCondition -> 'Strategy [ctor prec(21)] . op 'amatchrew_s.t._by_ : 'Term 'EqCondition 'UsingPairSet -> 'Strategy [ctor] . op 'ambiguity : 'ResultPair 'ResultPair -> 'ResultPair? [ctor] . op 'ambiguity : 'Strategy 'Strategy -> 'Strategy? [ctor] . op 'anyType : nil -> 'Type? [ctor] . op 'append : 'NatList 'NatList -> 'NatList [none] . op 'append : 'NatList 'NeNatList -> 'NeNatList [none] . op 'append : 'NeNatList 'NatList -> 'NeNatList [none] . op 'append : 'NeQidList 'QidList -> 'NeQidList [none] . op 'append : 'QidList 'NeQidList -> 'NeQidList [none] . op 'append : 'QidList 'QidList -> 'QidList [none] . op 'applySubstitution : 'Module 'Term 'Substitution -> 'Term [none] . op 'ascii : 'Char -> 'Nat [special( id-hook('StringOpSymbol, 'ascii) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'assoc : nil -> 'Attr [ctor] . op 'breadthFirst : nil -> 'SrewriteOption [ctor] . op 'ceq_=_if_`[_`]. : 'Term 'Term 'EqCondition 'AttrSet -> 'Equation [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'char : '`[FindResult`,NatList`,Bound`,Parent`] -> '`[String`] [special( id-hook('StringOpSymbol, 'char) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'cmb_:_if_`[_`]. : 'Term 'Sort 'EqCondition 'AttrSet -> 'MembAx [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'comm : nil -> 'Attr [ctor] . op 'completeName : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaCompleteName) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'config : nil -> 'Attr [ctor] . op 'crl_=>_if_`[_`]. : 'Term 'Term 'Condition 'AttrSet -> 'Rule [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'csd_:=_if_`[_`]. : 'CallStrategy 'Strategy 'EqCondition 'AttrSet -> 'StratDefinition [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'ctor : nil -> 'Attr [ctor] . op 'delay : nil -> 'VariantOption [ctor] . op 'delete : 'Qid 'QidSet -> 'QidSet [none] . op 'depthFirst : nil -> 'SrewriteOption [ctor] . op 'downTerm : 'Term 'Universal -> 'Universal [poly(2 0) special( id-hook('MetaLevelOpSymbol, 'metaDownTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'empty : nil -> 'EmptyCommaList [ctor] . op 'empty : nil -> 'GroundTermList [ctor] . op 'empty : nil -> 'StrategyList [ctor] . op 'eq_=_`[_`]. : 'Term 'Term 'AttrSet -> 'Equation [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 'extending_. : 'ModuleExpression -> 'Import [ctor] . op 'fail : nil -> 'Strategy [ctor] . op 'failure : nil -> 'NarrowingApplyResult? [ctor] . op 'failure : nil -> 'NarrowingSearchPathResult? [ctor] . op 'failure : nil -> 'NarrowingSearchResult? [ctor] . op 'failure : nil -> 'Result4Tuple? [ctor] . op 'failure : nil -> 'ResultPair? [ctor] . op 'failure : nil -> 'ResultTriple? [ctor] . op 'failure : nil -> 'SmtResult? [ctor] . op 'failure : nil -> 'Trace? [ctor] . op 'failureIncomplete : nil -> 'NarrowingApplyResult? [ctor] . op 'failureIncomplete : nil -> 'NarrowingSearchPathResult? [ctor] . op 'failureIncomplete : nil -> 'NarrowingSearchResult? [ctor] . op 'failureIncomplete : nil -> 'ResultTriple? [ctor] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'filter : nil -> 'VariantOption [ctor] . op 'find : 'String 'String 'Nat -> 'FindResult [special( id-hook('StringOpSymbol, 'find) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('notFoundTerm, 'notFound.FindResult))] . op 'flat : nil -> 'PrintOption [ctor] . op 'fmod_is_sorts_.____endfm : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet -> 'FModule [ctor gather('& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'format : 'QidList -> 'Attr [ctor] . op 'format : nil -> 'PrintOption [ctor] . op 'front : 'NeNatList -> 'NatList [none] . op 'front : 'NeQidList -> 'QidList [none] . op 'frozen : 'NeNatList -> 'Attr [ctor] . op 'fth_is_sorts_.____endfth : 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet -> 'FTheory [ctor gather('& '& '& '& '& '& '&) format('d 'd 'd 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'gather : 'QidList -> 'Attr [ctor] . op 'gcd : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'gcd : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'generated-by_. : 'ModuleExpression -> 'Import [ctor] . op 'getAccumulatedSubstitution : 'NarrowingSearchResult -> 'Substitution [none] . op 'getAccumulatedSubstitution : 'NarrowingStep -> 'Substitution [none] . op 'getContext : 'MatchPair -> 'Context [none] . op 'getContext : 'NarrowingApplyResult -> 'Context [none] . op 'getContext : 'NarrowingStep -> 'Context [none] . op 'getContext : 'Result4Tuple -> 'Context [none] . op 'getEqs : 'Module -> 'EquationSet [none] . op 'getFrom : 'View -> 'ModuleExpression [none] . op 'getImports : 'Module -> 'ImportList [none] . op 'getInitialSubstitution : 'NarrowingSearchPathResult -> 'Substitution [none] . op 'getInitialTerm : 'NarrowingSearchPathResult -> 'Term [none] . op 'getInitialType : 'NarrowingSearchPathResult -> 'Type [none] . op 'getKind : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGetKind) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'getKinds : '`[Module`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGetKinds) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'getLabel : 'NarrowingApplyResult -> 'Qid [none] . op 'getLabel : 'NarrowingStep -> 'Qid [none] . op 'getLhsSubstitution : 'UnificationTriple -> 'Substitution [none] . op 'getMbs : 'Module -> 'MembAxSet [none] . op 'getMoreVariantsInLayerFlag : 'Variant -> 'Bool [none] . op 'getName : 'Constant -> 'Qid [none] . op 'getName : 'Module -> 'Qid [none] . op 'getName : 'Variable -> 'Qid [none] . op 'getName : 'View -> 'Qid [none] . op 'getOpMappings : 'View -> 'OpMappingSet [none] . op 'getOps : 'Module -> 'OpDeclSet [none] . op 'getParent : 'Variant -> 'Parent [none] . op 'getRhsSubstitution : 'UnificationTriple -> 'Substitution [none] . op 'getRls : 'Module -> 'RuleSet [none] . op 'getRule : 'TraceStep -> 'Rule [none] . op 'getRuleSubstitution : 'NarrowingApplyResult -> 'Substitution [none] . op 'getSds : 'Module -> 'StratDefSet [none] . op 'getSortMappings : 'View -> 'SortMappingSet [none] . op 'getSorts : 'Module -> 'SortSet [none] . op 'getStateVariableFamily : 'NarrowingSearchResult -> 'Qid [none] . op 'getStratMappings : 'View -> 'StratMappingSet [none] . op 'getStrats : 'Module -> 'StratDeclSet [none] . op 'getSubsorts : 'Module -> 'SubsortDeclSet [none] . op 'getSubstitution : 'MatchPair -> 'Substitution [none] . op 'getSubstitution : 'Result4Tuple -> 'Substitution [none] . op 'getSubstitution : 'ResultTriple -> 'Substitution [none] . op 'getSubstitution : 'UnificationPair -> 'Substitution [none] . op 'getSubstitution : 'Variant -> 'Substitution [none] . op 'getTerm : 'NarrowingApplyResult -> 'Term [none] . op 'getTerm : 'NarrowingSearchResult -> 'Term [none] . op 'getTerm : 'NarrowingStep -> 'Term [none] . op 'getTerm : 'Result4Tuple -> 'Term [none] . op 'getTerm : 'ResultPair -> 'Term [none] . op 'getTerm : 'ResultTriple -> 'Term [none] . op 'getTerm : 'TraceStep -> 'Term [none] . op 'getTerm : 'Variant -> 'Term [none] . op 'getTermSubstitution : 'NarrowingApplyResult -> 'Substitution [none] . op 'getTo : 'View -> 'ModuleExpression [none] . op 'getTrace : 'NarrowingSearchPathResult -> 'NarrowingTrace [none] . op 'getType : 'Constant -> 'Type [none] . op 'getType : 'NarrowingApplyResult -> 'Type [none] . op 'getType : 'NarrowingSearchResult -> 'Type [none] . op 'getType : 'NarrowingStep -> 'Type [none] . op 'getType : 'Result4Tuple -> 'Type [none] . op 'getType : 'ResultPair -> 'Type [none] . op 'getType : 'ResultTriple -> 'Type [none] . op 'getType : 'TraceStep -> 'Type [none] . op 'getType : 'Variable -> 'Type [none] . op 'getUnifier : 'NarrowingSearchPathResult -> 'Substitution [none] . op 'getUnifier : 'NarrowingSearchResult -> 'Substitution [none] . op 'getUnifier : 'NarrowingStep -> 'Substitution [none] . op 'getUnifierVariableFamily : 'NarrowingSearchPathResult -> 'Qid [none] . op 'getUnifierVariableFamily : 'NarrowingSearchResult -> 'Qid [none] . op 'getUnifierVariableFamily : 'NarrowingStep -> 'Qid [none] . op 'getVariableFamily : 'NarrowingApplyResult -> 'Qid [none] . op 'getVariableFamily : 'UnificationPair -> 'Qid [none] . op 'getVariableFamily : 'UnificationTriple -> 'Qid [none] . op 'getVariableFamily : 'Variant -> 'Qid [none] . op 'glbSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGlbSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'head : 'NeNatList -> 'Nat [none] . op 'head : 'NeQidList -> 'Qid [none] . op 'id : 'Term -> 'Attr [ctor] . op 'id-hook : 'Qid 'QidList -> 'Hook [ctor format('nssss 'd)] . op 'idem : nil -> 'Attr [ctor] . op 'idle : nil -> 'Strategy [ctor] . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op 'including_. : 'ModuleExpression -> 'Import [ctor] . op 'insert : 'Qid 'QidSet -> 'QidSet [none] . op 'intersection : 'QidSet 'QidSet -> 'QidSet [none] . op 'iter : nil -> 'Attr [ctor] . op 'label : 'Qid -> 'Attr [ctor] . op 'label_to_ : 'Qid 'Qid -> 'Renaming [ctor] . op 'last : 'NeNatList -> 'Nat [none] . op 'last : 'NeQidList -> 'Qid [none] . op 'latex : 'String -> 'Attr [ctor] . op 'lcm : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lcm : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'leastSort : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaLeastSort) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'left-id : 'Term -> 'Attr [ctor] . op 'length : 'String -> 'Nat [special( id-hook('StringOpSymbol, 'length) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lesserSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaLesserSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'lowerCase : 'String -> 'String [special( id-hook('StringOpSymbol, 'lowerCase) op-hook('stringSymbol, ', nil, 'Char))] . op 'match_s.t._ : 'Term 'EqCondition -> 'Strategy [ctor prec(21)] . op 'matchrew_s.t._by_ : 'Term 'EqCondition 'UsingPairSet -> 'Strategy [ctor] . op 'max : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'max : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'maximalAritySet : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMaximalAritySet) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'maximalSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMaximalSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'mb_:_`[_`]. : 'Term 'Sort 'AttrSet -> 'MembAx [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 'memo : nil -> 'Attr [ctor] . op 'metaApply : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Substitution?`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaApply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaCheck : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaCheck) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'legacyMetaDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'metaDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaFrewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaFrewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetIrredundantVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaGetIrredundantVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetIrredundantVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'metaGetIrredundantVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaGetVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'metaGetVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaIrredundantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'metaIrredundantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaIrredundantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaIrredundantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaMatch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Substitution?`] [special( id-hook('MetaLevelOpSymbol, 'metaMatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrow : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[Bool`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaNarrow2) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrow : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaNarrow) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingApply : 'Module 'Term 'TermList 'Qid 'Nat -> 'NarrowingApplyResult? [none] . op 'metaNarrowingApply : 'Module 'Term 'TermList 'Qid 'VariantOptionSet 'Nat -> 'NarrowingApplyResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingApply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingSearch : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'Nat -> 'NarrowingSearchResult? [none] . op 'metaNarrowingSearch : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'VariantOptionSet 'Nat -> 'NarrowingSearchResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingSearchPath : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'Nat -> 'NarrowingSearchPathResult? [none] . op 'metaNarrowingSearchPath : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'VariantOptionSet 'Nat -> 'NarrowingSearchPathResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingSearchPath) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNormalize : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaNormalize) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaParse : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [ none] . op 'metaParse : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaParse) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaParseStrategy : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[StrategyList`,Strategy?`] [special( id-hook('MetaLevelOpSymbol, 'metaParseStrategy) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaPrettyPrint) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrettyPrintStrategy : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[StrategyList`,Strategy?`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaPrettyPrintStrategy) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrintToString : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[String`] [special( id-hook('MetaLevelOpSymbol, 'metaPrintToString) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaReduce : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaReduce) op-hook('qidSymbol, ', nil, 'Qid) op-hook('metaTermSymbol, '_`[_`], 'Qid 'NeGroundTermList, 'GroundTerm) op-hook('metaArgSymbol, '_`,_, 'NeGroundTermList 'GroundTermList, 'NeGroundTermList) op-hook('emptyTermListSymbol, 'empty, nil, 'GroundTermList) op-hook('assignmentSymbol, '_<-_, 'Variable 'Term, 'Assignment) op-hook('emptySubstitutionSymbol, 'none, nil, 'Substitution) op-hook('substitutionSymbol, '_;_, 'Substitution 'Substitution, 'Substitution) op-hook('holeSymbol, '`[`], nil, 'Context) op-hook('noConditionSymbol, 'nil, nil, 'EqCondition) op-hook('equalityConditionSymbol, '_=_, 'Term 'Term, 'EqCondition) op-hook('sortTestConditionSymbol, '_:_, 'Term 'Sort, 'EqCondition) op-hook('matchConditionSymbol, '_:=_, 'Term 'Term, 'EqCondition) op-hook('rewriteConditionSymbol, '_=>_, 'Term 'Term, 'Condition) op-hook('conjunctionSymbol, '_/\_, 'EqCondition 'EqCondition, 'EqCondition) op-hook('failStratSymbol, 'fail, nil, 'Strategy) op-hook('idleStratSymbol, 'idle, nil, 'Strategy) op-hook('allStratSymbol, 'all, nil, 'RuleApplication) op-hook('applicationStratSymbol, '_`[_`]`{_`}, 'Qid 'Substitution 'StrategyList, 'RuleApplication) op-hook('topStratSymbol, 'top, 'RuleApplication, 'Strategy) op-hook('matchStratSymbol, 'match_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('xmatchStratSymbol, 'xmatch_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('amatchStratSymbol, 'amatch_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('unionStratSymbol, '_|_, 'Strategy 'Strategy, 'Strategy) op-hook('concatStratSymbol, '_;_, 'Strategy 'Strategy, 'Strategy) op-hook('orelseStratSymbol, '_or-else_, 'Strategy 'Strategy, 'Strategy) op-hook('plusStratSymbol, '_+, 'Strategy, 'Strategy) op-hook('conditionalStratSymbol, '_?_:_, 'Strategy 'Strategy 'Strategy, 'Strategy) op-hook('matchrewStratSymbol, 'matchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('xmatchrewStratSymbol, 'xmatchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('amatchrewStratSymbol, 'amatchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('callStratSymbol, '_`[`[_`]`], 'Qid 'TermList, 'CallStrategy) op-hook('oneStratSymbol, 'one, 'Strategy, 'Strategy) op-hook('starStratSymbol, '_*, 'Strategy, 'Strategy) op-hook('normalizationStratSymbol, '_!, 'Strategy, 'Strategy) op-hook('notStratSymbol, 'not, 'Strategy, 'Strategy) op-hook('testStratSymbol, 'test, 'Strategy, 'Strategy) op-hook('tryStratSymbol, 'try, 'Strategy, 'Strategy) op-hook('usingStratSymbol, '_using_, 'Variable 'Strategy, 'UsingPair) op-hook('usingListStratSymbol, '_`,_, 'UsingPairSet 'UsingPairSet, 'UsingPairSet) op-hook('emptyStratListSymbol, 'empty, nil, 'StrategyList) op-hook('stratListSymbol, '_`,_, 'StrategyList 'StrategyList, 'StrategyList) op-hook('headerSymbol, '_`{_`}, 'Qid 'ParameterDeclList, 'Header) op-hook('parameterDeclSymbol, '_::_, 'Sort 'ModuleExpression, 'ParameterDecl) op-hook('parameterDeclListSymbol, '_`,_, 'ParameterDeclList 'ParameterDeclList, 'ParameterDeclList) op-hook('protectingSymbol, 'protecting_., 'ModuleExpression, 'Import) op-hook('extendingSymbol, 'extending_., 'ModuleExpression, 'Import) op-hook('includingSymbol, 'including_., 'ModuleExpression, 'Import) op-hook('generatedBySymbol, 'generated-by_., 'ModuleExpression, 'Import) op-hook('nilImportListSymbol, 'nil, nil, 'ImportList) op-hook('importListSymbol, '__, 'ImportList 'ImportList, 'ImportList) op-hook('emptySortSetSymbol, 'none, nil, 'QidSet) op-hook('sortSetSymbol, '_;_, 'QidSet 'QidSet, 'QidSet) op-hook('subsortSymbol, 'subsort_<_., 'Sort 'Sort, 'SubsortDecl) op-hook('emptySubsortDeclSetSymbol, 'none, nil, 'SubsortDeclSet) op-hook('subsortDeclSetSymbol, '__, 'SubsortDeclSet 'SubsortDeclSet, 'SubsortDeclSet) op-hook('nilQidListSymbol, 'nil, nil, 'QidList) op-hook('qidListSymbol, '__, 'QidList 'QidList, 'QidList) op-hook('emptyQidSetSymbol, 'none, nil, 'QidSet) op-hook('qidSetSymbol, '_;_, 'QidSet 'QidSet, 'QidSet) op-hook('succSymbol, 's_, 'Nat, 'NzNat) op-hook('natListSymbol, '__, 'NatList 'NatList, 'NatList) op-hook('unboundedSymbol, 'unbounded, nil, 'Bound) op-hook('noParentSymbol, 'none, nil, 'Parent) op-hook('stringSymbol, ', nil, 'Char) op-hook('sortRenamingSymbol, 'sort_to_, 'Qid 'Qid, 'Renaming) op-hook('opRenamingSymbol, 'op_to_`[_`], 'Qid 'Qid 'AttrSet, 'Renaming) op-hook('opRenamingSymbol2, 'op_:_->_to_`[_`], 'Qid 'TypeList 'Type 'Qid 'AttrSet, 'Renaming) op-hook('labelRenamingSymbol, 'label_to_, 'Qid 'Qid, 'Renaming) op-hook('stratRenamingSymbol, 'strat_to_, 'Qid 'Qid, 'Renaming) op-hook('stratRenamingSymbol2, 'strat_:_@_to_, 'Qid 'TypeList 'Type 'Qid, 'Renaming) op-hook('renamingSetSymbol, '_`,_, 'RenamingSet 'RenamingSet, 'RenamingSet) op-hook('sumSymbol, '_+_, 'ModuleExpression 'ModuleExpression, 'ModuleExpression) op-hook('renamingSymbol, '_*`(_`), 'ModuleExpression 'RenamingSet, 'ModuleExpression) op-hook('instantiationSymbol, '_`{_`}, 'Expression 'NeParameterList, 'Expression) op-hook('termHookSymbol, 'term-hook, 'Qid 'Term, 'Hook) op-hook('hookListSymbol, '__, 'HookList 'HookList, 'HookList) op-hook('idHookSymbol, 'id-hook, 'Qid 'QidList, 'Hook) op-hook('opHookSymbol, 'op-hook, 'Qid 'Qid 'QidList 'Qid, 'Hook) op-hook('assocSymbol, 'assoc, nil, 'Attr) op-hook('commSymbol, 'comm, nil, 'Attr) op-hook('idemSymbol, 'idem, nil, 'Attr) op-hook('iterSymbol, 'iter, nil, 'Attr) op-hook('idSymbol, 'id, 'Term, 'Attr) op-hook('leftIdSymbol, 'left-id, 'Term, 'Attr) op-hook('rightIdSymbol, 'right-id, 'Term, 'Attr) op-hook('stratSymbol, 'strat, 'NeNatList, 'Attr) op-hook('memoSymbol, 'memo, nil, 'Attr) op-hook('precSymbol, 'prec, 'Nat, 'Attr) op-hook('gatherSymbol, 'gather, 'QidList, 'Attr) op-hook('formatSymbol, 'format, 'QidList, 'Attr) op-hook('latexSymbol, 'latex, 'String, 'Attr) op-hook('ctorSymbol, 'ctor, nil, 'Attr) op-hook('frozenSymbol, 'frozen, 'NeNatList, 'Attr) op-hook('polySymbol, 'poly, 'NeNatList, 'Attr) op-hook('configSymbol, 'config, nil, 'Attr) op-hook('objectSymbol, 'object, nil, 'Attr) op-hook('msgSymbol, 'msg, nil, 'Attr) op-hook('portalSymbol, 'portal, nil, 'Attr) op-hook('pconstSymbol, 'pconst, nil, 'Attr) op-hook('specialSymbol, 'special, 'NeHookList, 'Attr) op-hook('labelSymbol, 'label, 'Qid, 'Attr) op-hook('metadataSymbol, 'metadata, 'String, 'Attr) op-hook('owiseSymbol, 'owise, nil, 'Attr) op-hook('variantAttrSymbol, 'variant, nil, 'Attr) op-hook('narrowingSymbol, 'narrowing, nil, 'Attr) op-hook('nonexecSymbol, 'nonexec, nil, 'Attr) op-hook('printSymbol, 'print, 'QidList, 'Attr) op-hook('emptyAttrSetSymbol, 'none, nil, 'AttrSet) op-hook('attrSetSymbol, '__, 'AttrSet 'AttrSet, 'AttrSet) op-hook('opDeclSymbol, 'op_:_->_`[_`]., 'Qid 'TypeList 'Type 'AttrSet, 'OpDecl) op-hook('opDeclSetSymbol, '__, 'OpDeclSet 'OpDeclSet, 'OpDeclSet) op-hook('emptyOpDeclSetSymbol, 'none, nil, 'OpDeclSet) op-hook('mbSymbol, 'mb_:_`[_`]., 'Term 'Sort 'AttrSet, 'MembAx) op-hook('cmbSymbol, 'cmb_:_if_`[_`]., 'Term 'Sort 'EqCondition 'AttrSet, 'MembAx) op-hook('emptyMembAxSetSymbol, 'none, nil, 'MembAxSet) op-hook('membAxSetSymbol, '__, 'MembAxSet 'MembAxSet, 'MembAxSet) op-hook('eqSymbol, 'eq_=_`[_`]., 'Term 'Term 'AttrSet, 'Equation) op-hook('ceqSymbol, 'ceq_=_if_`[_`]., 'Term 'Term 'EqCondition 'AttrSet, 'Equation) op-hook('emptyEquationSetSymbol, 'none, nil, 'EquationSet) op-hook('equationSetSymbol, '__, 'EquationSet 'EquationSet, 'EquationSet) op-hook('rlSymbol, 'rl_=>_`[_`]., 'Term 'Term 'AttrSet, 'Rule) op-hook('crlSymbol, 'crl_=>_if_`[_`]., 'Term 'Term 'Condition 'AttrSet, 'Rule) op-hook('emptyRuleSetSymbol, 'none, nil, 'RuleSet) op-hook('ruleSetSymbol, '__, 'RuleSet 'RuleSet, 'RuleSet) op-hook('stratDeclSymbol, 'strat_:_@_`[_`]., 'Qid 'TypeList 'Type 'AttrSet, 'StratDecl) op-hook('emptyStratDeclSetSymbol, 'none, nil, 'StratDeclSet) op-hook('stratDeclSetSymbol, '__, 'StratDeclSet 'StratDeclSet, 'StratDeclSet) op-hook('sdSymbol, 'sd_:=_`[_`]., 'CallStrategy 'Strategy 'AttrSet, 'StratDefinition) op-hook('csdSymbol, 'csd_:=_if_`[_`]., 'CallStrategy 'Strategy 'EqCondition 'AttrSet, 'StratDefinition) op-hook('emptyStratDefSetSymbol, 'none, nil, 'StratDefSet) op-hook('stratDefSetSymbol, '__, 'StratDefSet 'StratDefSet, 'StratDefSet) op-hook('fmodSymbol, 'fmod_is_sorts_.____endfm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet, 'FModule) op-hook('fthSymbol, 'fth_is_sorts_.____endfth, 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet, 'FTheory) op-hook('modSymbol, 'mod_is_sorts_._____endm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet, 'SModule) op-hook('thSymbol, 'th_is_sorts_._____endth, 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet, 'STheory) op-hook('smodSymbol, 'smod_is_sorts_._______endsm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet, 'StratModule) op-hook('sthSymbol, 'sth_is_sorts_._______endsth, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet, 'StratTheory) op-hook('sortMappingSymbol, 'sort_to_., 'Sort 'Sort, 'SortMapping) op-hook('emptySortMappingSetSymbol, 'none, nil, 'SortMappingSet) op-hook('sortMappingSetSymbol, '__, 'SortMappingSet 'SortMappingSet, 'SortMappingSet) op-hook('opMappingSymbol, 'op_to_., 'Qid 'Qid, 'OpMapping) op-hook('opSpecificMappingSymbol, 'op_:_->_to_., 'Qid 'TypeList 'Type 'Qid, 'OpMapping) op-hook('opTermMappingSymbol, 'op_to`term_., 'Term 'Term, 'OpMapping) op-hook('emptyOpMappingSetSymbol, 'none, nil, 'OpMappingSet) op-hook('opMappingSetSymbol, '__, 'OpMappingSet 'OpMappingSet, 'OpMappingSet) op-hook('stratMappingSymbol, 'strat_to_., 'Qid 'Qid, 'StratMapping) op-hook('stratSpecificMappingSymbol, 'strat_:_@_to_., 'Qid 'TypeList 'Type 'Qid, 'StratMapping) op-hook('stratExprMappingSymbol, 'strat_to`expr_., 'CallStrategy 'Strategy, 'StratMapping) op-hook('emptyStratMappingSetSymbol, 'none, nil, 'StratMappingSet) op-hook('stratMappingSetSymbol, '__, 'StratMappingSet 'StratMappingSet, 'StratMappingSet) op-hook('viewSymbol, 'view_from_to_is___endv, 'Header 'ModuleExpression 'ModuleExpression 'SortMappingSet 'OpMappingSet 'StratMappingSet, 'View) op-hook('anyTypeSymbol, 'anyType, nil, 'Type?) op-hook('unificandPairSymbol, '_=?_, 'Term 'Term, 'UnificandPair) op-hook('unificationConjunctionSymbol, '_/\_, 'UnificationProblem 'UnificationProblem, 'UnificationProblem) op-hook('patternSubjectPairSymbol, '_<=?_, 'Term 'Term, 'PatternSubjectPair) op-hook('matchingConjunctionSymbol, '_/\_, 'MatchingProblem 'MatchingProblem, 'MatchingProblem) op-hook('resultPairSymbol, '`{_`,_`}, 'Term 'Type, 'ResultPair) op-hook('resultTripleSymbol, '`{_`,_`,_`}, 'Term 'Type 'Substitution, 'ResultTriple) op-hook('result4TupleSymbol, '`{_`,_`,_`,_`}, 'Term 'Type 'Substitution 'Context, 'Result4Tuple) op-hook('matchPairSymbol, '`{_`,_`}, 'Substitution 'Context, 'MatchPair) op-hook('unificationTripleSymbol, '`{_`,_`,_`}, 'Substitution 'Substitution 'Qid, 'UnificationTriple) op-hook('variantSymbol, '`{_`,_`,_`,_`,_`}, 'Term 'Substitution 'Qid 'Parent 'Bool, 'Variant) op-hook('narrowingApplyResultSymbol, '`{_`,_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Context 'Qid 'Substitution 'Substitution 'Qid, 'NarrowingApplyResult) op-hook('narrowingSearchResultSymbol, '`{_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Substitution 'Qid 'Substitution 'Qid, 'NarrowingSearchResult) op-hook('traceStepSymbol, '`{_`,_`,_`}, 'Term 'Type 'Rule, 'TraceStep) op-hook('nilTraceSymbol, 'nil, nil, 'Trace) op-hook('traceSymbol, '__, 'Trace 'Trace, 'Trace) op-hook('narrowingStepSymbol, '`{_`,_`,_`,_`,_`,_`,_`}, 'Context 'Qid 'Substitution 'Qid 'Term 'Type 'Substitution, 'NarrowingStep) op-hook('nilNarrowingTraceSymbol, 'nil, nil, 'NarrowingTrace) op-hook('narrowingTraceSymbol, '__, 'NarrowingTrace 'NarrowingTrace, 'NarrowingTrace) op-hook('narrowingSearchPathResultSymbol, '`{_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Substitution 'NarrowingTrace 'Substitution 'Qid, 'NarrowingSearchPathResult) op-hook('smtResultSymbol, '`{_`,_`,_`,_`}, 'Term 'Substitution 'Term 'Nat, 'SmtResult) op-hook('noParseSymbol, 'noParse, 'Nat, 'ResultPair?) op-hook('ambiguitySymbol, 'ambiguity, 'ResultPair 'ResultPair, 'ResultPair?) op-hook('failure2Symbol, 'failure, nil, 'ResultPair?) op-hook('failure3Symbol, 'failure, nil, 'ResultTriple?) op-hook('failureIncomplete3Symbol, 'failureIncomplete, nil, 'ResultTriple?) op-hook('failure4Symbol, 'failure, nil, 'Result4Tuple?) op-hook('noUnifierPairSymbol, 'noUnifier, nil, 'UnificationPair?) op-hook('noUnifierTripleSymbol, 'noUnifier, nil, 'UnificationTriple?) op-hook('noUnifierIncompletePairSymbol, 'noUnifierIncomplete, nil, 'UnificationPair?) op-hook('noUnifierIncompleteTripleSymbol, 'noUnifierIncomplete, nil, 'UnificationTriple?) op-hook('noVariantSymbol, 'noVariant, nil, 'Variant?) op-hook('noVariantIncompleteSymbol, 'noVariantIncomplete, nil, 'Variant?) op-hook('narrowingApplyFailureSymbol, 'failure, nil, 'NarrowingApplyResult?) op-hook('narrowingApplyFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingApplyResult?) op-hook('narrowingSearchFailureSymbol, 'failure, nil, 'NarrowingSearchResult?) op-hook('narrowingSearchFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingSearchResult?) op-hook('narrowingSearchPathFailureSymbol, 'failure, nil, 'NarrowingSearchPathResult?) op-hook('narrowingSearchPathFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingSearchPathResult?) op-hook('noMatchSubstSymbol, 'noMatch, nil, 'Substitution?) op-hook('noMatchIncompleteSubstSymbol, 'noMatchIncomplete, nil, 'Substitution?) op-hook('noMatchPairSymbol, 'noMatch, nil, 'MatchPair?) op-hook('failureTraceSymbol, 'failure, nil, 'Trace?) op-hook('smtFailureSymbol, 'failure, nil, 'SmtResult?) op-hook('noStratParseSymbol, 'noStratParse, 'Nat, 'Strategy?) op-hook('stratAmbiguitySymbol, 'ambiguity, 'Strategy 'Strategy, 'Strategy?) op-hook('mixfixSymbol, 'mixfix, nil, 'PrintOption) op-hook('withParensSymbol, 'with-parens, nil, 'PrintOption) op-hook('withSortsSymbol, 'with-sorts, nil, 'PrintOption) op-hook('flatSymbol, 'flat, nil, 'PrintOption) op-hook('formatPrintOptionSymbol, 'format, nil, 'PrintOption) op-hook('numberSymbol, 'number, nil, 'PrintOption) op-hook('ratSymbol, 'rat, nil, 'PrintOption) op-hook('emptyPrintOptionSetSymbol, 'none, nil, 'PrintOptionSet) op-hook('printOptionSetSymbol, '__, 'PrintOptionSet 'PrintOptionSet, 'PrintOptionSet) op-hook('delaySymbol, 'delay, nil, 'VariantOption) op-hook('filterSymbol, 'filter, nil, 'VariantOption) op-hook('emptyVariantOptionSetSymbol, 'none, nil, 'VariantOptionSet) op-hook('variantOptionSetSymbol, '__, 'VariantOptionSet 'VariantOptionSet, 'VariantOptionSet) op-hook('breadthFirstSymbol, 'breadthFirst, nil, 'SrewriteOption) op-hook('depthFirstSymbol, 'depthFirst, nil, 'SrewriteOption) op-hook('legacyUnificationPairSymbol, '`{_`,_`}, 'Substitution 'Nat, 'UnificationPair) op-hook('legacyUnificationTripleSymbol, '`{_`,_`,_`}, 'Substitution 'Substitution 'Nat, 'UnificationTriple) op-hook('legacyVariantSymbol, '`{_`,_`,_`,_`,_`}, 'Term 'Substitution 'Nat 'Parent 'Bool, 'Variant) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op 'metaRewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaRewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSearch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSearchPath : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Trace?`] [special( id-hook('MetaLevelOpSymbol, 'metaSearchPath) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSmtSearch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[SmtResult?`] [special( id-hook('MetaLevelOpSymbol, 'metaSmtSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSrewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[StrategyList`,Strategy?`] '`[SrewriteOption`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaSrewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaUnify : '`[Module`] '`[UnificationProblem`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'legacyMetaVariantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [none] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantMatch : '`[Module`] '`[MatchingProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Substitution?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantMatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaVariantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [none] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaXapply : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Substitution?`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Result4Tuple?`] [special( id-hook('MetaLevelOpSymbol, 'metaXapply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaXmatch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaXmatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metadata : 'String -> 'Attr [ctor] . op 'min : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'minimalSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMinimalSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'mixfix : nil -> 'PrintOption [ctor] . op 'modExp : '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[FindResult`,NatList`,Bound`,Parent`] [special( id-hook('NumberOpSymbol, 'modExp) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'mod_is_sorts_._____endm : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet -> 'SModule [ctor gather('& '& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'msg : nil -> 'Attr [ctor] . op 'narrowing : nil -> 'Attr [ctor] . op 'nil : nil -> 'EqCondition [ctor] . op 'nil : nil -> 'HookList [ctor] . op 'nil : nil -> 'ImportList [ctor] . op 'nil : nil -> 'NarrowingTrace [ctor] . op 'nil : nil -> 'NatList [ctor] . op 'nil : nil -> 'ParameterDeclList [ctor] . op 'nil : nil -> 'QidList [ctor] . op 'nil : nil -> 'Trace [ctor] . op 'nil : nil -> 'TypeList [ctor] . op 'noMatch : nil -> 'MatchPair? [ctor] . op 'noMatch : nil -> 'Substitution? [ctor] . op 'noMatchIncomplete : nil -> 'Substitution? [ctor] . op 'noParse : 'Nat -> 'ResultPair? [ctor] . op 'noStratParse : 'Nat -> 'Strategy? [ctor] . op 'noUnifier : nil -> 'UnificationPair? [ctor] . op 'noUnifier : nil -> 'UnificationTriple? [ctor] . op 'noUnifierIncomplete : nil -> 'UnificationPair? [ctor] . op 'noUnifierIncomplete : nil -> 'UnificationTriple? [ctor] . op 'noVariant : nil -> 'Variant? [ctor] . op 'noVariantIncomplete : nil -> 'Variant? [ctor] . op 'none : nil -> 'AttrSet [ctor] . op 'none : nil -> 'EmptyQidSet [ctor] . op 'none : nil -> 'EquationSet [ctor] . op 'none : nil -> 'MembAxSet [ctor] . op 'none : nil -> 'OpDeclSet [ctor] . op 'none : nil -> 'OpMappingSet [ctor] . op 'none : nil -> 'Parent [none] . op 'none : nil -> 'PrintOptionSet [ctor] . op 'none : nil -> 'QidSet [ctor] . op 'none : nil -> 'RuleSet [ctor] . op 'none : nil -> 'SortMappingSet [ctor] . op 'none : nil -> 'StratDeclSet [ctor] . op 'none : nil -> 'StratDefSet [ctor] . op 'none : nil -> 'StratMappingSet [ctor] . op 'none : nil -> 'SubsortDeclSet [ctor] . op 'none : nil -> 'Substitution [ctor] . op 'none : nil -> 'VariantOptionSet [ctor] . op 'nonexec : nil -> 'Attr [ctor] . op 'not : 'Strategy -> 'Strategy [ctor] . op 'notFound : nil -> 'FindResult [ctor] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op 'number : nil -> 'PrintOption [ctor] . op 'object : nil -> 'Attr [ctor] . op 'occurs : 'Nat 'NatList -> 'Bool [none] . op 'occurs : 'Qid 'QidList -> 'Bool [none] . op 'one : 'Strategy -> 'Strategy [ctor] . op 'op-hook : 'Qid 'Qid 'QidList 'Qid -> 'Hook [ctor format('nssss 'd)] . op 'op_:_->_`[_`]. : 'Qid 'TypeList 'Type 'AttrSet -> 'OpDecl [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'op_:_->_to_. : 'Qid 'TypeList 'Type 'Qid -> 'OpMapping [ctor] . op 'op_:_->_to_`[_`] : 'Qid 'TypeList 'Type 'Qid 'AttrSet -> 'Renaming [ctor format('d 'd 'd 'd 'd 'd 'd 'd 's 'd 'd 'd)] . op 'op_to_. : 'Qid 'Qid -> 'OpMapping [ctor] . op 'op_to_`[_`] : 'Qid 'Qid 'AttrSet -> 'Renaming [ctor format('d 'd 'd 'd 's 'd 'd 'd)] . op 'op_to`term_. : 'Term 'Term -> 'OpMapping [ctor] . op 'owise : nil -> 'Attr [ctor] . op 'pconst : nil -> 'Attr [ctor] . op 'poly : 'NeNatList -> 'Attr [ctor] . op 'portal : nil -> 'Attr [ctor] . op 'prec : 'Nat -> 'Attr [ctor] . op 'print : 'QidList -> 'Attr [ctor] . op 'protecting_. : 'ModuleExpression -> 'Import [ctor] . op 'qid : '`[String`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('QuotedIdentifierOpSymbol, 'qid) op-hook('quotedIdentifierSymbol, ', nil, 'Qid) op-hook('stringSymbol, ', nil, 'Char))] . op 'rat : nil -> 'PrintOption [ctor] . op 'reverse : 'NatList -> 'NatList [none] . op 'reverse : 'NeNatList -> 'NeNatList [none] . op 'reverse : 'NeQidList -> 'NeQidList [none] . op 'reverse : 'QidList -> 'QidList [none] . op 'rfind : 'String 'String 'Nat -> 'FindResult [special( id-hook('StringOpSymbol, 'rfind) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('notFoundTerm, 'notFound.FindResult))] . op 'right-id : 'Term -> 'Attr [ctor] . op 'rl_=>_`[_`]. : 'Term 'Term 'AttrSet -> 'Rule [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 's_ : 'Nat -> 'NzNat [iter ctor special( id-hook('SuccSymbol, nil) term-hook('zeroTerm, '0.Zero))] . op 'sameKind : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaSameKind) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'sd : 'Nat 'Nat -> 'Nat [comm special( id-hook('CUI_NumberOpSymbol, 'sd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'sd_:=_`[_`]. : 'CallStrategy 'Strategy 'AttrSet -> 'StratDefinition [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 'size : 'NatList -> 'Nat [none] . op 'size : 'NeNatList -> 'NzNat [none] . op 'size : 'NeQidList -> 'NzNat [none] . op 'size : 'QidList -> 'Nat [none] . op 'smod_is_sorts_._______endsm : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet -> 'StratModule [ctor gather('& '& '& '& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'sortLeq : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaSortLeq) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'sort_to_ : 'Qid 'Qid -> 'Renaming [ctor] . op 'sort_to_. : 'Sort 'Sort -> 'SortMapping [ctor] . op 'special : 'NeHookList -> 'Attr [ctor] . op 'sth_is_sorts_._______endsth : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet -> 'StratTheory [ctor gather('& '& '& '& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'strat : 'NeNatList -> 'Attr [ctor] . op 'strat_:_@_`[_`]. : 'Qid 'TypeList 'Type 'AttrSet -> 'StratDecl [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'strat_:_@_to_ : 'Qid 'TypeList 'Type 'Qid -> 'Renaming [ctor] . op 'strat_:_@_to_. : 'Qid 'TypeList 'Type 'Qid -> 'StratMapping [ctor] . op 'strat_to_ : 'Qid 'Qid -> 'Renaming [ctor] . op 'strat_to_. : 'Qid 'Qid -> 'StratMapping [ctor] . op 'strat_to`expr_. : 'CallStrategy 'Strategy -> 'StratMapping [ctor] . op 'string : 'Qid -> 'String [special( id-hook('QuotedIdentifierOpSymbol, 'string) op-hook('quotedIdentifierSymbol, ', nil, 'Qid) op-hook('stringSymbol, ', nil, 'Char))] . op 'subsort_<_. : 'Sort 'Sort -> 'SubsortDecl [ctor] . op 'substr : 'String 'Nat 'Nat -> 'String [special( id-hook('StringOpSymbol, 'substr) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'tail : 'NeNatList -> 'NatList [none] . op 'tail : 'NeQidList -> 'QidList [none] . op 'term-hook : 'Qid 'Term -> 'Hook [ctor format('nssss 'd)] . op 'test : 'Strategy -> 'Strategy [ctor] . op 'th_is_sorts_._____endth : 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet -> 'STheory [ctor gather('& '& '& '& '& '& '& '&) format('d 'd 'd 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'top : 'RuleApplication -> 'Strategy [ctor] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . op 'try : 'Strategy -> 'Strategy [ctor] . op 'unbounded : nil -> 'Bound [ctor] . op 'union : 'NeQidSet 'QidSet -> 'NeQidSet [none] . op 'union : 'QidSet 'NeQidSet -> 'NeQidSet [none] . op 'union : 'QidSet 'QidSet -> 'QidSet [none] . op 'upEqs : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[EquationSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpEqs) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upImports : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ImportList`] [special( id-hook('MetaLevelOpSymbol, 'metaUpImports) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upMbs : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[MembAxSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpMbs) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upModule : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[Module`] [special( id-hook('MetaLevelOpSymbol, 'metaUpModule) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upOpDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[OpDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpOpDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upRls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[RuleSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpRls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSds : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[StratDefSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSds) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSorts : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upStratDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[StratDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpStratDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSubsortDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[SubsortDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSubsortDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upTerm : 'Universal -> 'Term [poly(1) special( id-hook('MetaLevelOpSymbol, 'metaUpTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upView : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[View`] [special( id-hook('MetaLevelOpSymbol, 'metaUpView) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upperCase : 'String -> 'String [special( id-hook('StringOpSymbol, 'upperCase) op-hook('stringSymbol, ', nil, 'Char))] . op 'variant : nil -> 'Attr [ctor] . op 'view_from_to_is___endv : 'Header 'ModuleExpression 'ModuleExpression 'SortMappingSet 'OpMappingSet 'StratMappingSet -> 'View [ctor gather('& '& '& '& '& '&) format('d 'd 'd 'd 'd 'd 'd 'n++i 'ni 'ni 'n--i 'd)] . op 'wellFormed : 'Module -> 'Bool [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedModule) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : '`[Module`] '`[Substitution?`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedSubstitution) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'with-parens : nil -> 'PrintOption [ctor] . op 'with-sorts : nil -> 'PrintOption [ctor] . op 'xmatch_s.t._ : 'Term 'EqCondition -> 'Strategy [ctor prec(21)] . op 'xmatchrew_s.t._by_ : 'Term 'EqCondition 'UsingPairSet -> 'Strategy [ctor] . op '|_| : 'NeQidSet -> 'NzNat [none] . op '|_| : 'QidSet -> 'Nat [none] . ========================================== reduce in META-LEVEL : upOpDecls('META-LEVEL, false) . rewrites: 1 result OpDeclSet: op '$applySubstitution : 'NeTermList 'Substitution -> 'Term [ none] . op '_/\_ : 'MatchingProblem 'MatchingProblem -> 'MatchingProblem [assoc comm ctor prec(73)] . op '_/\_ : 'UnificationProblem 'UnificationProblem -> 'UnificationProblem [ assoc comm ctor prec(73)] . op '_;_ : 'NeVariableSet 'VariableSet -> 'NeVariableSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'VariableSet 'VariableSet -> 'VariableSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_<=?_ : 'Term 'Term -> 'PatternSubjectPair [ctor prec(71)] . op '_=?_ : 'Term 'Term -> 'UnificandPair [ctor prec(71)] . op '__ : 'NarrowingTrace 'NarrowingTrace -> 'NarrowingTrace [assoc ctor id( 'nil.NarrowingTrace)] . op '__ : 'PrintOptionSet 'PrintOptionSet -> 'PrintOptionSet [assoc comm ctor id('none.PrintOptionSet)] . op '__ : 'Trace 'Trace -> 'Trace [assoc ctor id('nil.Trace) format('d 'n 'd)] . op '__ : 'VariantOptionSet 'VariantOptionSet -> 'VariantOptionSet [assoc comm ctor id('none.VariantOptionSet)] . op '`{_`,_`,_`,_`,_`,_`,_`} : 'Context 'Qid 'Substitution 'Qid 'Term 'Type 'Substitution -> 'NarrowingStep [ctor format('ni 'n++i 'd 'ni 'd 's 'd 'ni 'd 'ni 'd 's 'd 's 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Context 'Qid 'Substitution 'Substitution 'Qid -> 'NarrowingApplyResult [ctor format('d 'n++i 'd 's 'd 'ni 'd 'ni 'd 's 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Substitution 'NarrowingTrace 'Substitution 'Qid -> 'NarrowingSearchPathResult [ctor format('d 'n++i 'd 's 'd 's 'd 's 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Substitution 'Qid 'Substitution 'Qid -> 'NarrowingSearchResult [ctor format('d 'n++i 'd 's 'd 's 'd 'ni 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`} : 'Term 'Substitution 'Nat 'Parent 'Bool -> 'Variant [ ctor] . op '`{_`,_`,_`,_`,_`} : 'Term 'Substitution 'Qid 'Parent 'Bool -> 'Variant [ ctor] . op '`{_`,_`,_`,_`} : 'Term 'Substitution 'Term 'Nat -> 'SmtResult [ctor] . op '`{_`,_`,_`,_`} : 'Term 'Type 'Substitution 'Context -> 'Result4Tuple [ctor] . op '`{_`,_`,_`} : 'Substitution 'Substitution 'Nat -> 'UnificationTriple [ctor] . op '`{_`,_`,_`} : 'Substitution 'Substitution 'Qid -> 'UnificationTriple [ctor] . op '`{_`,_`,_`} : 'Term 'Type 'Rule -> 'TraceStep [ctor] . op '`{_`,_`,_`} : 'Term 'Type 'Substitution -> 'ResultTriple [ctor] . op '`{_`,_`} : 'Substitution 'Context -> 'MatchPair [ctor] . op '`{_`,_`} : 'Substitution 'Nat -> 'UnificationPair [ctor] . op '`{_`,_`} : 'Substitution 'Qid -> 'UnificationPair [ctor] . op '`{_`,_`} : 'Term 'Type -> 'ResultPair [ctor] . op 'ambiguity : 'ResultPair 'ResultPair -> 'ResultPair? [ctor] . op 'ambiguity : 'Strategy 'Strategy -> 'Strategy? [ctor] . op 'anyType : nil -> 'Type? [ctor] . op 'applySubstitution : 'Module 'Term 'Substitution -> 'Term [none] . op 'breadthFirst : nil -> 'SrewriteOption [ctor] . op 'completeName : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaCompleteName) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'delay : nil -> 'VariantOption [ctor] . op 'depthFirst : nil -> 'SrewriteOption [ctor] . op 'downTerm : 'Term 'Universal -> 'Universal [poly(2 0) special( id-hook('MetaLevelOpSymbol, 'metaDownTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'failure : nil -> 'NarrowingApplyResult? [ctor] . op 'failure : nil -> 'NarrowingSearchPathResult? [ctor] . op 'failure : nil -> 'NarrowingSearchResult? [ctor] . op 'failure : nil -> 'Result4Tuple? [ctor] . op 'failure : nil -> 'ResultPair? [ctor] . op 'failure : nil -> 'ResultTriple? [ctor] . op 'failure : nil -> 'SmtResult? [ctor] . op 'failure : nil -> 'Trace? [ctor] . op 'failureIncomplete : nil -> 'NarrowingApplyResult? [ctor] . op 'failureIncomplete : nil -> 'NarrowingSearchPathResult? [ctor] . op 'failureIncomplete : nil -> 'NarrowingSearchResult? [ctor] . op 'failureIncomplete : nil -> 'ResultTriple? [ctor] . op 'filter : nil -> 'VariantOption [ctor] . op 'flat : nil -> 'PrintOption [ctor] . op 'format : nil -> 'PrintOption [ctor] . op 'getAccumulatedSubstitution : 'NarrowingSearchResult -> 'Substitution [none] . op 'getAccumulatedSubstitution : 'NarrowingStep -> 'Substitution [none] . op 'getContext : 'MatchPair -> 'Context [none] . op 'getContext : 'NarrowingApplyResult -> 'Context [none] . op 'getContext : 'NarrowingStep -> 'Context [none] . op 'getContext : 'Result4Tuple -> 'Context [none] . op 'getInitialSubstitution : 'NarrowingSearchPathResult -> 'Substitution [none] . op 'getInitialTerm : 'NarrowingSearchPathResult -> 'Term [none] . op 'getInitialType : 'NarrowingSearchPathResult -> 'Type [none] . op 'getKind : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGetKind) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'getKinds : '`[Module`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGetKinds) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'getLabel : 'NarrowingApplyResult -> 'Qid [none] . op 'getLabel : 'NarrowingStep -> 'Qid [none] . op 'getLhsSubstitution : 'UnificationTriple -> 'Substitution [none] . op 'getMoreVariantsInLayerFlag : 'Variant -> 'Bool [none] . op 'getParent : 'Variant -> 'Parent [none] . op 'getRhsSubstitution : 'UnificationTriple -> 'Substitution [none] . op 'getRule : 'TraceStep -> 'Rule [none] . op 'getRuleSubstitution : 'NarrowingApplyResult -> 'Substitution [none] . op 'getStateVariableFamily : 'NarrowingSearchResult -> 'Qid [none] . op 'getSubstitution : 'MatchPair -> 'Substitution [none] . op 'getSubstitution : 'Result4Tuple -> 'Substitution [none] . op 'getSubstitution : 'ResultTriple -> 'Substitution [none] . op 'getSubstitution : 'UnificationPair -> 'Substitution [none] . op 'getSubstitution : 'Variant -> 'Substitution [none] . op 'getTerm : 'NarrowingApplyResult -> 'Term [none] . op 'getTerm : 'NarrowingSearchResult -> 'Term [none] . op 'getTerm : 'NarrowingStep -> 'Term [none] . op 'getTerm : 'Result4Tuple -> 'Term [none] . op 'getTerm : 'ResultPair -> 'Term [none] . op 'getTerm : 'ResultTriple -> 'Term [none] . op 'getTerm : 'TraceStep -> 'Term [none] . op 'getTerm : 'Variant -> 'Term [none] . op 'getTermSubstitution : 'NarrowingApplyResult -> 'Substitution [none] . op 'getTrace : 'NarrowingSearchPathResult -> 'NarrowingTrace [none] . op 'getType : 'NarrowingApplyResult -> 'Type [none] . op 'getType : 'NarrowingSearchResult -> 'Type [none] . op 'getType : 'NarrowingStep -> 'Type [none] . op 'getType : 'Result4Tuple -> 'Type [none] . op 'getType : 'ResultPair -> 'Type [none] . op 'getType : 'ResultTriple -> 'Type [none] . op 'getType : 'TraceStep -> 'Type [none] . op 'getUnifier : 'NarrowingSearchPathResult -> 'Substitution [none] . op 'getUnifier : 'NarrowingSearchResult -> 'Substitution [none] . op 'getUnifier : 'NarrowingStep -> 'Substitution [none] . op 'getUnifierVariableFamily : 'NarrowingSearchPathResult -> 'Qid [none] . op 'getUnifierVariableFamily : 'NarrowingSearchResult -> 'Qid [none] . op 'getUnifierVariableFamily : 'NarrowingStep -> 'Qid [none] . op 'getVariableFamily : 'NarrowingApplyResult -> 'Qid [none] . op 'getVariableFamily : 'UnificationPair -> 'Qid [none] . op 'getVariableFamily : 'UnificationTriple -> 'Qid [none] . op 'getVariableFamily : 'Variant -> 'Qid [none] . op 'glbSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGlbSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'leastSort : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaLeastSort) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'lesserSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaLesserSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'maximalAritySet : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMaximalAritySet) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'maximalSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMaximalSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaApply : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Substitution?`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaApply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaCheck : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaCheck) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'legacyMetaDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'metaDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaFrewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaFrewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetIrredundantVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaGetIrredundantVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetIrredundantVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'metaGetIrredundantVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaGetVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'metaGetVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaIrredundantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'metaIrredundantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaIrredundantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaIrredundantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaMatch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Substitution?`] [special( id-hook('MetaLevelOpSymbol, 'metaMatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrow : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[Bool`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaNarrow2) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrow : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaNarrow) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingApply : 'Module 'Term 'TermList 'Qid 'Nat -> 'NarrowingApplyResult? [none] . op 'metaNarrowingApply : 'Module 'Term 'TermList 'Qid 'VariantOptionSet 'Nat -> 'NarrowingApplyResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingApply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingSearch : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'Nat -> 'NarrowingSearchResult? [none] . op 'metaNarrowingSearch : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'VariantOptionSet 'Nat -> 'NarrowingSearchResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingSearchPath : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'Nat -> 'NarrowingSearchPathResult? [none] . op 'metaNarrowingSearchPath : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'VariantOptionSet 'Nat -> 'NarrowingSearchPathResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingSearchPath) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNormalize : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaNormalize) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaParse : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [ none] . op 'metaParse : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaParse) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaParseStrategy : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[StrategyList`,Strategy?`] [special( id-hook('MetaLevelOpSymbol, 'metaParseStrategy) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaPrettyPrint) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrettyPrintStrategy : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[StrategyList`,Strategy?`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaPrettyPrintStrategy) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrintToString : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[String`] [special( id-hook('MetaLevelOpSymbol, 'metaPrintToString) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaReduce : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaReduce) op-hook('qidSymbol, ', nil, 'Qid) op-hook('metaTermSymbol, '_`[_`], 'Qid 'NeGroundTermList, 'GroundTerm) op-hook('metaArgSymbol, '_`,_, 'NeGroundTermList 'GroundTermList, 'NeGroundTermList) op-hook('emptyTermListSymbol, 'empty, nil, 'GroundTermList) op-hook('assignmentSymbol, '_<-_, 'Variable 'Term, 'Assignment) op-hook('emptySubstitutionSymbol, 'none, nil, 'Substitution) op-hook('substitutionSymbol, '_;_, 'Substitution 'Substitution, 'Substitution) op-hook('holeSymbol, '`[`], nil, 'Context) op-hook('noConditionSymbol, 'nil, nil, 'EqCondition) op-hook('equalityConditionSymbol, '_=_, 'Term 'Term, 'EqCondition) op-hook('sortTestConditionSymbol, '_:_, 'Term 'Sort, 'EqCondition) op-hook('matchConditionSymbol, '_:=_, 'Term 'Term, 'EqCondition) op-hook('rewriteConditionSymbol, '_=>_, 'Term 'Term, 'Condition) op-hook('conjunctionSymbol, '_/\_, 'EqCondition 'EqCondition, 'EqCondition) op-hook('failStratSymbol, 'fail, nil, 'Strategy) op-hook('idleStratSymbol, 'idle, nil, 'Strategy) op-hook('allStratSymbol, 'all, nil, 'RuleApplication) op-hook('applicationStratSymbol, '_`[_`]`{_`}, 'Qid 'Substitution 'StrategyList, 'RuleApplication) op-hook('topStratSymbol, 'top, 'RuleApplication, 'Strategy) op-hook('matchStratSymbol, 'match_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('xmatchStratSymbol, 'xmatch_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('amatchStratSymbol, 'amatch_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('unionStratSymbol, '_|_, 'Strategy 'Strategy, 'Strategy) op-hook('concatStratSymbol, '_;_, 'Strategy 'Strategy, 'Strategy) op-hook('orelseStratSymbol, '_or-else_, 'Strategy 'Strategy, 'Strategy) op-hook('plusStratSymbol, '_+, 'Strategy, 'Strategy) op-hook('conditionalStratSymbol, '_?_:_, 'Strategy 'Strategy 'Strategy, 'Strategy) op-hook('matchrewStratSymbol, 'matchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('xmatchrewStratSymbol, 'xmatchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('amatchrewStratSymbol, 'amatchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('callStratSymbol, '_`[`[_`]`], 'Qid 'TermList, 'CallStrategy) op-hook('oneStratSymbol, 'one, 'Strategy, 'Strategy) op-hook('starStratSymbol, '_*, 'Strategy, 'Strategy) op-hook('normalizationStratSymbol, '_!, 'Strategy, 'Strategy) op-hook('notStratSymbol, 'not, 'Strategy, 'Strategy) op-hook('testStratSymbol, 'test, 'Strategy, 'Strategy) op-hook('tryStratSymbol, 'try, 'Strategy, 'Strategy) op-hook('usingStratSymbol, '_using_, 'Variable 'Strategy, 'UsingPair) op-hook('usingListStratSymbol, '_`,_, 'UsingPairSet 'UsingPairSet, 'UsingPairSet) op-hook('emptyStratListSymbol, 'empty, nil, 'StrategyList) op-hook('stratListSymbol, '_`,_, 'StrategyList 'StrategyList, 'StrategyList) op-hook('headerSymbol, '_`{_`}, 'Qid 'ParameterDeclList, 'Header) op-hook('parameterDeclSymbol, '_::_, 'Sort 'ModuleExpression, 'ParameterDecl) op-hook('parameterDeclListSymbol, '_`,_, 'ParameterDeclList 'ParameterDeclList, 'ParameterDeclList) op-hook('protectingSymbol, 'protecting_., 'ModuleExpression, 'Import) op-hook('extendingSymbol, 'extending_., 'ModuleExpression, 'Import) op-hook('includingSymbol, 'including_., 'ModuleExpression, 'Import) op-hook('generatedBySymbol, 'generated-by_., 'ModuleExpression, 'Import) op-hook('nilImportListSymbol, 'nil, nil, 'ImportList) op-hook('importListSymbol, '__, 'ImportList 'ImportList, 'ImportList) op-hook('emptySortSetSymbol, 'none, nil, 'QidSet) op-hook('sortSetSymbol, '_;_, 'QidSet 'QidSet, 'QidSet) op-hook('subsortSymbol, 'subsort_<_., 'Sort 'Sort, 'SubsortDecl) op-hook('emptySubsortDeclSetSymbol, 'none, nil, 'SubsortDeclSet) op-hook('subsortDeclSetSymbol, '__, 'SubsortDeclSet 'SubsortDeclSet, 'SubsortDeclSet) op-hook('nilQidListSymbol, 'nil, nil, 'QidList) op-hook('qidListSymbol, '__, 'QidList 'QidList, 'QidList) op-hook('emptyQidSetSymbol, 'none, nil, 'QidSet) op-hook('qidSetSymbol, '_;_, 'QidSet 'QidSet, 'QidSet) op-hook('succSymbol, 's_, 'Nat, 'NzNat) op-hook('natListSymbol, '__, 'NatList 'NatList, 'NatList) op-hook('unboundedSymbol, 'unbounded, nil, 'Bound) op-hook('noParentSymbol, 'none, nil, 'Parent) op-hook('stringSymbol, ', nil, 'Char) op-hook('sortRenamingSymbol, 'sort_to_, 'Qid 'Qid, 'Renaming) op-hook('opRenamingSymbol, 'op_to_`[_`], 'Qid 'Qid 'AttrSet, 'Renaming) op-hook('opRenamingSymbol2, 'op_:_->_to_`[_`], 'Qid 'TypeList 'Type 'Qid 'AttrSet, 'Renaming) op-hook('labelRenamingSymbol, 'label_to_, 'Qid 'Qid, 'Renaming) op-hook('stratRenamingSymbol, 'strat_to_, 'Qid 'Qid, 'Renaming) op-hook('stratRenamingSymbol2, 'strat_:_@_to_, 'Qid 'TypeList 'Type 'Qid, 'Renaming) op-hook('renamingSetSymbol, '_`,_, 'RenamingSet 'RenamingSet, 'RenamingSet) op-hook('sumSymbol, '_+_, 'ModuleExpression 'ModuleExpression, 'ModuleExpression) op-hook('renamingSymbol, '_*`(_`), 'ModuleExpression 'RenamingSet, 'ModuleExpression) op-hook('instantiationSymbol, '_`{_`}, 'Expression 'NeParameterList, 'Expression) op-hook('termHookSymbol, 'term-hook, 'Qid 'Term, 'Hook) op-hook('hookListSymbol, '__, 'HookList 'HookList, 'HookList) op-hook('idHookSymbol, 'id-hook, 'Qid 'QidList, 'Hook) op-hook('opHookSymbol, 'op-hook, 'Qid 'Qid 'QidList 'Qid, 'Hook) op-hook('assocSymbol, 'assoc, nil, 'Attr) op-hook('commSymbol, 'comm, nil, 'Attr) op-hook('idemSymbol, 'idem, nil, 'Attr) op-hook('iterSymbol, 'iter, nil, 'Attr) op-hook('idSymbol, 'id, 'Term, 'Attr) op-hook('leftIdSymbol, 'left-id, 'Term, 'Attr) op-hook('rightIdSymbol, 'right-id, 'Term, 'Attr) op-hook('stratSymbol, 'strat, 'NeNatList, 'Attr) op-hook('memoSymbol, 'memo, nil, 'Attr) op-hook('precSymbol, 'prec, 'Nat, 'Attr) op-hook('gatherSymbol, 'gather, 'QidList, 'Attr) op-hook('formatSymbol, 'format, 'QidList, 'Attr) op-hook('latexSymbol, 'latex, 'String, 'Attr) op-hook('ctorSymbol, 'ctor, nil, 'Attr) op-hook('frozenSymbol, 'frozen, 'NeNatList, 'Attr) op-hook('polySymbol, 'poly, 'NeNatList, 'Attr) op-hook('configSymbol, 'config, nil, 'Attr) op-hook('objectSymbol, 'object, nil, 'Attr) op-hook('msgSymbol, 'msg, nil, 'Attr) op-hook('portalSymbol, 'portal, nil, 'Attr) op-hook('pconstSymbol, 'pconst, nil, 'Attr) op-hook('specialSymbol, 'special, 'NeHookList, 'Attr) op-hook('labelSymbol, 'label, 'Qid, 'Attr) op-hook('metadataSymbol, 'metadata, 'String, 'Attr) op-hook('owiseSymbol, 'owise, nil, 'Attr) op-hook('variantAttrSymbol, 'variant, nil, 'Attr) op-hook('narrowingSymbol, 'narrowing, nil, 'Attr) op-hook('nonexecSymbol, 'nonexec, nil, 'Attr) op-hook('printSymbol, 'print, 'QidList, 'Attr) op-hook('emptyAttrSetSymbol, 'none, nil, 'AttrSet) op-hook('attrSetSymbol, '__, 'AttrSet 'AttrSet, 'AttrSet) op-hook('opDeclSymbol, 'op_:_->_`[_`]., 'Qid 'TypeList 'Type 'AttrSet, 'OpDecl) op-hook('opDeclSetSymbol, '__, 'OpDeclSet 'OpDeclSet, 'OpDeclSet) op-hook('emptyOpDeclSetSymbol, 'none, nil, 'OpDeclSet) op-hook('mbSymbol, 'mb_:_`[_`]., 'Term 'Sort 'AttrSet, 'MembAx) op-hook('cmbSymbol, 'cmb_:_if_`[_`]., 'Term 'Sort 'EqCondition 'AttrSet, 'MembAx) op-hook('emptyMembAxSetSymbol, 'none, nil, 'MembAxSet) op-hook('membAxSetSymbol, '__, 'MembAxSet 'MembAxSet, 'MembAxSet) op-hook('eqSymbol, 'eq_=_`[_`]., 'Term 'Term 'AttrSet, 'Equation) op-hook('ceqSymbol, 'ceq_=_if_`[_`]., 'Term 'Term 'EqCondition 'AttrSet, 'Equation) op-hook('emptyEquationSetSymbol, 'none, nil, 'EquationSet) op-hook('equationSetSymbol, '__, 'EquationSet 'EquationSet, 'EquationSet) op-hook('rlSymbol, 'rl_=>_`[_`]., 'Term 'Term 'AttrSet, 'Rule) op-hook('crlSymbol, 'crl_=>_if_`[_`]., 'Term 'Term 'Condition 'AttrSet, 'Rule) op-hook('emptyRuleSetSymbol, 'none, nil, 'RuleSet) op-hook('ruleSetSymbol, '__, 'RuleSet 'RuleSet, 'RuleSet) op-hook('stratDeclSymbol, 'strat_:_@_`[_`]., 'Qid 'TypeList 'Type 'AttrSet, 'StratDecl) op-hook('emptyStratDeclSetSymbol, 'none, nil, 'StratDeclSet) op-hook('stratDeclSetSymbol, '__, 'StratDeclSet 'StratDeclSet, 'StratDeclSet) op-hook('sdSymbol, 'sd_:=_`[_`]., 'CallStrategy 'Strategy 'AttrSet, 'StratDefinition) op-hook('csdSymbol, 'csd_:=_if_`[_`]., 'CallStrategy 'Strategy 'EqCondition 'AttrSet, 'StratDefinition) op-hook('emptyStratDefSetSymbol, 'none, nil, 'StratDefSet) op-hook('stratDefSetSymbol, '__, 'StratDefSet 'StratDefSet, 'StratDefSet) op-hook('fmodSymbol, 'fmod_is_sorts_.____endfm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet, 'FModule) op-hook('fthSymbol, 'fth_is_sorts_.____endfth, 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet, 'FTheory) op-hook('modSymbol, 'mod_is_sorts_._____endm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet, 'SModule) op-hook('thSymbol, 'th_is_sorts_._____endth, 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet, 'STheory) op-hook('smodSymbol, 'smod_is_sorts_._______endsm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet, 'StratModule) op-hook('sthSymbol, 'sth_is_sorts_._______endsth, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet, 'StratTheory) op-hook('sortMappingSymbol, 'sort_to_., 'Sort 'Sort, 'SortMapping) op-hook('emptySortMappingSetSymbol, 'none, nil, 'SortMappingSet) op-hook('sortMappingSetSymbol, '__, 'SortMappingSet 'SortMappingSet, 'SortMappingSet) op-hook('opMappingSymbol, 'op_to_., 'Qid 'Qid, 'OpMapping) op-hook('opSpecificMappingSymbol, 'op_:_->_to_., 'Qid 'TypeList 'Type 'Qid, 'OpMapping) op-hook('opTermMappingSymbol, 'op_to`term_., 'Term 'Term, 'OpMapping) op-hook('emptyOpMappingSetSymbol, 'none, nil, 'OpMappingSet) op-hook('opMappingSetSymbol, '__, 'OpMappingSet 'OpMappingSet, 'OpMappingSet) op-hook('stratMappingSymbol, 'strat_to_., 'Qid 'Qid, 'StratMapping) op-hook('stratSpecificMappingSymbol, 'strat_:_@_to_., 'Qid 'TypeList 'Type 'Qid, 'StratMapping) op-hook('stratExprMappingSymbol, 'strat_to`expr_., 'CallStrategy 'Strategy, 'StratMapping) op-hook('emptyStratMappingSetSymbol, 'none, nil, 'StratMappingSet) op-hook('stratMappingSetSymbol, '__, 'StratMappingSet 'StratMappingSet, 'StratMappingSet) op-hook('viewSymbol, 'view_from_to_is___endv, 'Header 'ModuleExpression 'ModuleExpression 'SortMappingSet 'OpMappingSet 'StratMappingSet, 'View) op-hook('anyTypeSymbol, 'anyType, nil, 'Type?) op-hook('unificandPairSymbol, '_=?_, 'Term 'Term, 'UnificandPair) op-hook('unificationConjunctionSymbol, '_/\_, 'UnificationProblem 'UnificationProblem, 'UnificationProblem) op-hook('patternSubjectPairSymbol, '_<=?_, 'Term 'Term, 'PatternSubjectPair) op-hook('matchingConjunctionSymbol, '_/\_, 'MatchingProblem 'MatchingProblem, 'MatchingProblem) op-hook('resultPairSymbol, '`{_`,_`}, 'Term 'Type, 'ResultPair) op-hook('resultTripleSymbol, '`{_`,_`,_`}, 'Term 'Type 'Substitution, 'ResultTriple) op-hook('result4TupleSymbol, '`{_`,_`,_`,_`}, 'Term 'Type 'Substitution 'Context, 'Result4Tuple) op-hook('matchPairSymbol, '`{_`,_`}, 'Substitution 'Context, 'MatchPair) op-hook('unificationTripleSymbol, '`{_`,_`,_`}, 'Substitution 'Substitution 'Qid, 'UnificationTriple) op-hook('variantSymbol, '`{_`,_`,_`,_`,_`}, 'Term 'Substitution 'Qid 'Parent 'Bool, 'Variant) op-hook('narrowingApplyResultSymbol, '`{_`,_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Context 'Qid 'Substitution 'Substitution 'Qid, 'NarrowingApplyResult) op-hook('narrowingSearchResultSymbol, '`{_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Substitution 'Qid 'Substitution 'Qid, 'NarrowingSearchResult) op-hook('traceStepSymbol, '`{_`,_`,_`}, 'Term 'Type 'Rule, 'TraceStep) op-hook('nilTraceSymbol, 'nil, nil, 'Trace) op-hook('traceSymbol, '__, 'Trace 'Trace, 'Trace) op-hook('narrowingStepSymbol, '`{_`,_`,_`,_`,_`,_`,_`}, 'Context 'Qid 'Substitution 'Qid 'Term 'Type 'Substitution, 'NarrowingStep) op-hook('nilNarrowingTraceSymbol, 'nil, nil, 'NarrowingTrace) op-hook('narrowingTraceSymbol, '__, 'NarrowingTrace 'NarrowingTrace, 'NarrowingTrace) op-hook('narrowingSearchPathResultSymbol, '`{_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Substitution 'NarrowingTrace 'Substitution 'Qid, 'NarrowingSearchPathResult) op-hook('smtResultSymbol, '`{_`,_`,_`,_`}, 'Term 'Substitution 'Term 'Nat, 'SmtResult) op-hook('noParseSymbol, 'noParse, 'Nat, 'ResultPair?) op-hook('ambiguitySymbol, 'ambiguity, 'ResultPair 'ResultPair, 'ResultPair?) op-hook('failure2Symbol, 'failure, nil, 'ResultPair?) op-hook('failure3Symbol, 'failure, nil, 'ResultTriple?) op-hook('failureIncomplete3Symbol, 'failureIncomplete, nil, 'ResultTriple?) op-hook('failure4Symbol, 'failure, nil, 'Result4Tuple?) op-hook('noUnifierPairSymbol, 'noUnifier, nil, 'UnificationPair?) op-hook('noUnifierTripleSymbol, 'noUnifier, nil, 'UnificationTriple?) op-hook('noUnifierIncompletePairSymbol, 'noUnifierIncomplete, nil, 'UnificationPair?) op-hook('noUnifierIncompleteTripleSymbol, 'noUnifierIncomplete, nil, 'UnificationTriple?) op-hook('noVariantSymbol, 'noVariant, nil, 'Variant?) op-hook('noVariantIncompleteSymbol, 'noVariantIncomplete, nil, 'Variant?) op-hook('narrowingApplyFailureSymbol, 'failure, nil, 'NarrowingApplyResult?) op-hook('narrowingApplyFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingApplyResult?) op-hook('narrowingSearchFailureSymbol, 'failure, nil, 'NarrowingSearchResult?) op-hook('narrowingSearchFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingSearchResult?) op-hook('narrowingSearchPathFailureSymbol, 'failure, nil, 'NarrowingSearchPathResult?) op-hook('narrowingSearchPathFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingSearchPathResult?) op-hook('noMatchSubstSymbol, 'noMatch, nil, 'Substitution?) op-hook('noMatchIncompleteSubstSymbol, 'noMatchIncomplete, nil, 'Substitution?) op-hook('noMatchPairSymbol, 'noMatch, nil, 'MatchPair?) op-hook('failureTraceSymbol, 'failure, nil, 'Trace?) op-hook('smtFailureSymbol, 'failure, nil, 'SmtResult?) op-hook('noStratParseSymbol, 'noStratParse, 'Nat, 'Strategy?) op-hook('stratAmbiguitySymbol, 'ambiguity, 'Strategy 'Strategy, 'Strategy?) op-hook('mixfixSymbol, 'mixfix, nil, 'PrintOption) op-hook('withParensSymbol, 'with-parens, nil, 'PrintOption) op-hook('withSortsSymbol, 'with-sorts, nil, 'PrintOption) op-hook('flatSymbol, 'flat, nil, 'PrintOption) op-hook('formatPrintOptionSymbol, 'format, nil, 'PrintOption) op-hook('numberSymbol, 'number, nil, 'PrintOption) op-hook('ratSymbol, 'rat, nil, 'PrintOption) op-hook('emptyPrintOptionSetSymbol, 'none, nil, 'PrintOptionSet) op-hook('printOptionSetSymbol, '__, 'PrintOptionSet 'PrintOptionSet, 'PrintOptionSet) op-hook('delaySymbol, 'delay, nil, 'VariantOption) op-hook('filterSymbol, 'filter, nil, 'VariantOption) op-hook('emptyVariantOptionSetSymbol, 'none, nil, 'VariantOptionSet) op-hook('variantOptionSetSymbol, '__, 'VariantOptionSet 'VariantOptionSet, 'VariantOptionSet) op-hook('breadthFirstSymbol, 'breadthFirst, nil, 'SrewriteOption) op-hook('depthFirstSymbol, 'depthFirst, nil, 'SrewriteOption) op-hook('legacyUnificationPairSymbol, '`{_`,_`}, 'Substitution 'Nat, 'UnificationPair) op-hook('legacyUnificationTripleSymbol, '`{_`,_`,_`}, 'Substitution 'Substitution 'Nat, 'UnificationTriple) op-hook('legacyVariantSymbol, '`{_`,_`,_`,_`,_`}, 'Term 'Substitution 'Nat 'Parent 'Bool, 'Variant) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op 'metaRewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaRewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSearch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSearchPath : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Trace?`] [special( id-hook('MetaLevelOpSymbol, 'metaSearchPath) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSmtSearch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[SmtResult?`] [special( id-hook('MetaLevelOpSymbol, 'metaSmtSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSrewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[StrategyList`,Strategy?`] '`[SrewriteOption`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaSrewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaUnify : '`[Module`] '`[UnificationProblem`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'legacyMetaVariantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [none] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantMatch : '`[Module`] '`[MatchingProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Substitution?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantMatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaVariantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [none] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaXapply : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Substitution?`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Result4Tuple?`] [special( id-hook('MetaLevelOpSymbol, 'metaXapply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaXmatch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaXmatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'minimalSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMinimalSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'mixfix : nil -> 'PrintOption [ctor] . op 'nil : nil -> 'NarrowingTrace [ctor] . op 'nil : nil -> 'Trace [ctor] . op 'noMatch : nil -> 'MatchPair? [ctor] . op 'noMatch : nil -> 'Substitution? [ctor] . op 'noMatchIncomplete : nil -> 'Substitution? [ctor] . op 'noParse : 'Nat -> 'ResultPair? [ctor] . op 'noStratParse : 'Nat -> 'Strategy? [ctor] . op 'noUnifier : nil -> 'UnificationPair? [ctor] . op 'noUnifier : nil -> 'UnificationTriple? [ctor] . op 'noUnifierIncomplete : nil -> 'UnificationPair? [ctor] . op 'noUnifierIncomplete : nil -> 'UnificationTriple? [ctor] . op 'noVariant : nil -> 'Variant? [ctor] . op 'noVariantIncomplete : nil -> 'Variant? [ctor] . op 'none : nil -> 'Parent [none] . op 'none : nil -> 'PrintOptionSet [ctor] . op 'none : nil -> 'VariantOptionSet [ctor] . op 'number : nil -> 'PrintOption [ctor] . op 'rat : nil -> 'PrintOption [ctor] . op 'sameKind : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaSameKind) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'sortLeq : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaSortLeq) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upEqs : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[EquationSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpEqs) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upImports : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ImportList`] [special( id-hook('MetaLevelOpSymbol, 'metaUpImports) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upMbs : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[MembAxSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpMbs) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upModule : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[Module`] [special( id-hook('MetaLevelOpSymbol, 'metaUpModule) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upOpDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[OpDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpOpDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upRls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[RuleSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpRls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSds : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[StratDefSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSds) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSorts : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upStratDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[StratDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpStratDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSubsortDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[SubsortDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSubsortDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upTerm : 'Universal -> 'Term [poly(1) special( id-hook('MetaLevelOpSymbol, 'metaUpTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upView : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[View`] [special( id-hook('MetaLevelOpSymbol, 'metaUpView) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : 'Module -> 'Bool [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedModule) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : '`[Module`] '`[Substitution?`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedSubstitution) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'with-parens : nil -> 'PrintOption [ctor] . op 'with-sorts : nil -> 'PrintOption [ctor] . ========================================== reduce in META-LEVEL : upOpDecls('IDENTICAL, true) . rewrites: 0 result [OpDeclSet]: upOpDecls('IDENTICAL, true) ========================================== reduce in META-LEVEL : upModule('META-LEVEL, true) . rewrites: 2 result FModule: fmod 'META-LEVEL is nil sorts 'Assignment ; 'Attr ; 'AttrSet ; 'Bool ; 'Bound ; 'CallStrategy ; 'Char ; 'Condition ; 'Constant ; 'Context ; 'EmptyCommaList ; 'EmptyQidSet ; 'EqCondition ; 'Equation ; 'EquationSet ; 'Expression ; 'FModule ; 'FTheory ; 'FindResult ; 'GTermList ; 'GroundTerm ; 'GroundTermList ; 'Header ; 'Hook ; 'HookList ; 'Import ; 'ImportList ; 'Kind ; 'KindSet ; 'MatchOrUnificationPair ; 'MatchPair ; 'MatchPair? ; 'MatchingProblem ; 'MembAx ; 'MembAxSet ; 'Module ; 'ModuleExpression ; 'NarrowingApplyResult ; 'NarrowingApplyResult? ; 'NarrowingSearchPathResult ; 'NarrowingSearchPathResult? ; 'NarrowingSearchResult ; 'NarrowingSearchResult? ; 'NarrowingStep ; 'NarrowingTrace ; 'Nat ; 'NatList ; 'NeCTermList ; 'NeGroundTermList ; 'NeHookList ; 'NeKindSet ; 'NeNatList ; 'NeParameterDeclList ; 'NeParameterList ; 'NeQidList ; 'NeQidSet ; 'NeSortSet ; 'NeTermList ; 'NeTypeList ; 'NeTypeSet ; 'NeVariableSet ; 'NzNat ; 'OpDecl ; 'OpDeclSet ; 'OpMapping ; 'OpMappingSet ; 'ParameterDecl ; 'ParameterDeclList ; 'ParameterList ; 'Parent ; 'PatternSubjectPair ; 'PrintOption ; 'PrintOptionSet ; 'Qid ; 'QidList ; 'QidSet ; 'Renaming ; 'RenamingSet ; 'Result4Tuple ; 'Result4Tuple? ; 'ResultPair ; 'ResultPair? ; 'ResultTriple ; 'ResultTriple? ; 'Rule ; 'RuleApplication ; 'RuleSet ; 'SModule ; 'STheory ; 'SmtResult ; 'SmtResult? ; 'Sort ; 'SortMapping ; 'SortMappingSet ; 'SortSet ; 'SrewriteOption ; 'StratDecl ; 'StratDeclSet ; 'StratDefSet ; 'StratDefinition ; 'StratMapping ; 'StratMappingSet ; 'StratModule ; 'StratTheory ; 'Strategy ; 'Strategy? ; 'StrategyList ; 'String ; 'SubsortDecl ; 'SubsortDeclSet ; 'Substitution ; 'Substitution? ; 'Term ; 'TermList ; 'TermQid ; 'Trace ; 'Trace? ; 'TraceStep ; 'Type ; 'Type? ; 'TypeList ; 'TypeListSet ; 'TypeSet ; 'UnificandPair ; 'UnificationPair ; 'UnificationPair? ; 'UnificationProblem ; 'UnificationTriple ; 'UnificationTriple? ; 'UsingPair ; 'UsingPairSet ; 'Variable ; 'VariableSet ; 'Variant ; 'Variant? ; 'VariantOption ; 'VariantOptionSet ; 'View ; 'ViewExpression ; 'Zero . subsort 'Assignment < 'Substitution . subsort 'Attr < 'AttrSet . subsort 'CallStrategy < 'Strategy . subsort 'Char < 'String . subsort 'Constant < 'GroundTerm . subsort 'Constant < 'TermQid . subsort 'Context < 'NeCTermList . subsort 'EmptyCommaList < 'GroundTermList . subsort 'EmptyCommaList < 'ParameterList . subsort 'EmptyQidSet < 'KindSet . subsort 'EmptyQidSet < 'SortSet . subsort 'EmptyQidSet < 'VariableSet . subsort 'EqCondition < 'Condition . subsort 'Equation < 'EquationSet . subsort 'Expression < 'ModuleExpression . subsort 'Expression < 'ViewExpression . subsort 'FModule < 'SModule . subsort 'FTheory < 'STheory . subsort 'GroundTerm < 'NeGroundTermList . subsort 'GroundTerm < 'Term . subsort 'GroundTermList < 'TermList . subsort 'Hook < 'NeHookList . subsort 'Import < 'ImportList . subsort 'Kind < 'NeKindSet . subsort 'Kind < 'Type . subsort 'KindSet < 'TypeSet . subsort 'MatchPair < 'MatchOrUnificationPair . subsort 'MatchPair < 'MatchPair? . subsort 'MembAx < 'MembAxSet . subsort 'NarrowingApplyResult < 'NarrowingApplyResult? . subsort 'NarrowingSearchPathResult < 'NarrowingSearchPathResult? . subsort 'NarrowingSearchResult < 'NarrowingSearchResult? . subsort 'NarrowingStep < 'NarrowingTrace . subsort 'Nat < 'Bound . subsort 'Nat < 'FindResult . subsort 'Nat < 'NeNatList . subsort 'Nat < 'Parent . subsort 'NeCTermList < 'GTermList . subsort 'NeGroundTermList < 'GroundTermList . subsort 'NeGroundTermList < 'NeTermList . subsort 'NeHookList < 'HookList . subsort 'NeKindSet < 'KindSet . subsort 'NeKindSet < 'NeTypeSet . subsort 'NeNatList < 'NatList . subsort 'NeParameterDeclList < 'ParameterDeclList . subsort 'NeParameterList < 'ParameterList . subsort 'NeQidList < 'QidList . subsort 'NeQidSet < 'QidSet . subsort 'NeSortSet < 'NeTypeSet . subsort 'NeSortSet < 'SortSet . subsort 'NeTermList < 'TermList . subsort 'NeTypeList < 'NeQidList . subsort 'NeTypeList < 'TypeList . subsort 'NeTypeSet < 'NeQidSet . subsort 'NeTypeSet < 'TypeSet . subsort 'NeVariableSet < 'NeQidSet . subsort 'NeVariableSet < 'VariableSet . subsort 'NzNat < 'Nat . subsort 'OpDecl < 'OpDeclSet . subsort 'OpMapping < 'OpMappingSet . subsort 'ParameterDecl < 'NeParameterDeclList . subsort 'PatternSubjectPair < 'MatchingProblem . subsort 'PrintOption < 'PrintOptionSet . subsort 'Qid < 'Header . subsort 'Qid < 'NeQidList . subsort 'Qid < 'NeQidSet . subsort 'Renaming < 'RenamingSet . subsort 'Result4Tuple < 'Result4Tuple? . subsort 'ResultPair < 'ResultPair? . subsort 'ResultTriple < 'ResultTriple? . subsort 'Rule < 'RuleSet . subsort 'RuleApplication < 'Strategy . subsort 'SModule < 'Module . subsort 'SModule < 'StratModule . subsort 'STheory < 'Module . subsort 'STheory < 'StratTheory . subsort 'SmtResult < 'SmtResult? . subsort 'Sort < 'Expression . subsort 'Sort < 'NeSortSet . subsort 'Sort < 'Type . subsort 'SortMapping < 'SortMappingSet . subsort 'SortSet < 'TypeSet . subsort 'StratDecl < 'StratDeclSet . subsort 'StratDefinition < 'StratDefSet . subsort 'StratMapping < 'StratMappingSet . subsort 'StratModule < 'Module . subsort 'StratTheory < 'Module . subsort 'Strategy < 'Strategy? . subsort 'Strategy < 'StrategyList . subsort 'SubsortDecl < 'SubsortDeclSet . subsort 'Substitution < 'Substitution? . subsort 'Term < 'NeTermList . subsort 'TermList < 'GTermList . subsort 'TermQid < 'Qid . subsort 'TermQid < 'Term . subsort 'Trace < 'Trace? . subsort 'TraceStep < 'Trace . subsort 'Type < 'NeTypeList . subsort 'Type < 'NeTypeSet . subsort 'Type < 'Qid . subsort 'Type < 'Type? . subsort 'TypeList < 'QidList . subsort 'TypeList < 'TypeListSet . subsort 'TypeSet < 'QidSet . subsort 'TypeSet < 'TypeListSet . subsort 'UnificandPair < 'UnificationProblem . subsort 'UnificationPair < 'MatchOrUnificationPair . subsort 'UnificationPair < 'UnificationPair? . subsort 'UnificationTriple < 'UnificationTriple? . subsort 'UsingPair < 'UsingPairSet . subsort 'Variable < 'NeVariableSet . subsort 'Variable < 'TermQid . subsort 'VariableSet < 'QidSet . subsort 'Variant < 'Variant? . subsort 'VariantOption < 'VariantOptionSet . subsort 'ViewExpression < 'NeParameterList . subsort 'Zero < 'Nat . op '$applySubstitution : 'NeTermList 'Substitution -> 'Term [none] . op '$card : 'QidSet 'Nat -> 'Nat [none] . op '$diff : 'QidSet 'QidSet 'QidSet -> 'QidSet [none] . op '$intersect : 'QidSet 'QidSet 'QidSet -> 'QidSet [none] . op '$reverse : 'NatList 'NatList -> 'NatList [none] . op '$reverse : 'QidList 'QidList -> 'QidList [none] . op '$size : 'NatList 'Nat -> 'Nat [none] . op '$size : 'QidList 'Nat -> 'Nat [none] . op '0 : nil -> 'Zero [ctor] . op ' : nil -> 'Constant [special( id-hook('QuotedIdentifierSymbol, 'constantQid))] . op ' : nil -> 'Kind [special( id-hook('QuotedIdentifierSymbol, 'kindQid))] . op ' : nil -> 'Qid [special( id-hook('QuotedIdentifierSymbol, nil))] . op ' : nil -> 'Sort [special( id-hook('QuotedIdentifierSymbol, 'sortQid))] . op ' : nil -> 'Variable [special( id-hook('QuotedIdentifierSymbol, 'variableQid))] . op ' : nil -> 'Char [special( id-hook('StringSymbol, nil))] . op ' : nil -> 'String [special( id-hook('StringSymbol, nil))] . op '_! : 'Strategy -> 'Strategy [ctor] . op '_&_ : 'Nat 'Nat -> 'Nat [assoc comm prec(53) special( id-hook('ACU_NumberOpSymbol, '&) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_* : 'Strategy -> 'Strategy [ctor] . op '_*_ : 'Nat 'Nat -> 'Nat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'NzNat 'NzNat -> 'NzNat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*`(_`) : 'ModuleExpression 'RenamingSet -> 'ModuleExpression [ctor prec( 39) format('d 'd 's 'n++i 'n--i 'd)] . op '_+ : 'Strategy -> 'Strategy [ctor] . op '_+_ : 'ModuleExpression 'ModuleExpression -> 'ModuleExpression [assoc comm ctor] . op '_+_ : 'Nat 'Nat -> 'Nat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'String 'String -> 'String [prec(33) gather('E 'e) special( id-hook('StringOpSymbol, '+) op-hook('stringSymbol, ', nil, 'Char))] . op '_/\_ : 'Condition 'Condition -> 'Condition [assoc ctor id( 'nil.EqCondition) prec(73)] . op '_/\_ : 'EqCondition 'EqCondition -> 'EqCondition [assoc ctor id( 'nil.EqCondition) prec(73)] . op '_/\_ : 'MatchingProblem 'MatchingProblem -> 'MatchingProblem [assoc comm ctor prec(73)] . op '_/\_ : 'UnificationProblem 'UnificationProblem -> 'UnificationProblem [ assoc comm ctor prec(73)] . op '_::_ : 'Sort 'ModuleExpression -> 'ParameterDecl [none] . op '_:=_ : 'Term 'Term -> 'EqCondition [ctor prec(71)] . op '_:_ : 'Term 'Sort -> 'EqCondition [ctor prec(71)] . op '_;_ : 'EmptyQidSet 'EmptyQidSet -> 'EmptyQidSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'KindSet 'KindSet -> 'KindSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeKindSet 'KindSet -> 'NeKindSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeQidSet 'QidSet -> 'NeQidSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeSortSet 'SortSet -> 'NeSortSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeTypeSet 'TypeSet -> 'NeTypeSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeVariableSet 'VariableSet -> 'NeVariableSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'QidSet 'QidSet -> 'QidSet [assoc comm ctor id('none.EmptyQidSet) prec(43)] . op '_;_ : 'SortSet 'SortSet -> 'SortSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'Strategy 'Strategy -> 'Strategy [assoc ctor id('idle.Strategy) prec(39) gather('e 'E)] . op '_;_ : 'Substitution 'Substitution -> 'Substitution [assoc comm ctor id( 'none.Substitution) prec(65)] . op '_;_ : 'TypeListSet 'TypeListSet -> 'TypeListSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'TypeSet 'TypeSet -> 'TypeSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'VariableSet 'VariableSet -> 'VariableSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_<-_ : 'Variable 'Term -> 'Assignment [ctor prec(63) format('n++i 'd 'd '--)] . op '_<<_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '<<) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_<=?_ : 'Term 'Term -> 'PatternSubjectPair [ctor prec(71)] . op '_<=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<=_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '<=) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '<) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_=/=_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '_=>_ : 'Term 'Term -> 'Condition [ctor prec(71)] . op '_=?_ : 'Term 'Term -> 'UnificandPair [ctor prec(71)] . op '_=_ : 'Term 'Term -> 'EqCondition [ctor prec(71)] . op '_>=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>=_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '>=) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>>_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '>>) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_>_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '>) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_?_:_ : 'Strategy 'Strategy 'Strategy -> 'Strategy [ctor prec(55)] . op '_\_ : 'QidSet 'QidSet -> 'QidSet [gather('E 'e)] . op '_^_ : 'Nat 'Nat -> 'Nat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_^_ : 'NzNat 'Nat -> 'NzNat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '__ : 'AttrSet 'AttrSet -> 'AttrSet [assoc comm ctor id('none.AttrSet)] . op '__ : 'EquationSet 'EquationSet -> 'EquationSet [assoc comm ctor id( 'none.EquationSet) format('d 'ni 'd)] . op '__ : 'HookList 'HookList -> 'HookList [assoc ctor id('nil.HookList)] . op '__ : 'HookList 'NeHookList -> 'NeHookList [assoc ctor id('nil.HookList)] . op '__ : 'ImportList 'ImportList -> 'ImportList [assoc ctor id( 'nil.ImportList) format('d 'ni 'd)] . op '__ : 'MembAxSet 'MembAxSet -> 'MembAxSet [assoc comm ctor id( 'none.MembAxSet) format('d 'ni 'd)] . op '__ : 'NarrowingTrace 'NarrowingTrace -> 'NarrowingTrace [assoc ctor id( 'nil.NarrowingTrace)] . op '__ : 'NatList 'NatList -> 'NatList [assoc ctor id('nil.NatList) prec(25)] . op '__ : 'NatList 'NeNatList -> 'NeNatList [assoc ctor id('nil.NatList) prec( 25)] . op '__ : 'NeHookList 'HookList -> 'NeHookList [assoc ctor id('nil.HookList)] . op '__ : 'NeNatList 'NatList -> 'NeNatList [assoc ctor id('nil.NatList) prec( 25)] . op '__ : 'NeQidList 'QidList -> 'NeQidList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'NeTypeList 'TypeList -> 'NeTypeList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'OpDeclSet 'OpDeclSet -> 'OpDeclSet [assoc comm ctor id( 'none.OpDeclSet) format('d 'ni 'd)] . op '__ : 'OpMappingSet 'OpMappingSet -> 'OpMappingSet [assoc comm ctor id( 'none.OpMappingSet) format('d 'ni 'd)] . op '__ : 'PrintOptionSet 'PrintOptionSet -> 'PrintOptionSet [assoc comm ctor id('none.PrintOptionSet)] . op '__ : 'QidList 'NeQidList -> 'NeQidList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'QidList 'QidList -> 'QidList [assoc ctor id('nil.TypeList) prec( 25)] . op '__ : 'RuleSet 'RuleSet -> 'RuleSet [assoc comm ctor id('none.RuleSet) format('d 'ni 'd)] . op '__ : 'SortMappingSet 'SortMappingSet -> 'SortMappingSet [assoc comm ctor id('none.SortMappingSet) format('d 'ni 'd)] . op '__ : 'StratDeclSet 'StratDeclSet -> 'StratDeclSet [assoc comm ctor id( 'none.StratDeclSet) format('d 'ni 'd)] . op '__ : 'StratDefSet 'StratDefSet -> 'StratDefSet [assoc comm ctor id( 'none.StratDefSet) format('d 'ni 'd)] . op '__ : 'StratMappingSet 'StratMappingSet -> 'StratMappingSet [assoc comm ctor id('none.StratMappingSet) format('d 'ni 'd)] . op '__ : 'SubsortDeclSet 'SubsortDeclSet -> 'SubsortDeclSet [assoc comm ctor id('none.SubsortDeclSet) format('d 'ni 'd)] . op '__ : 'Trace 'Trace -> 'Trace [assoc ctor id('nil.Trace) format('d 'n 'd)] . op '__ : 'TypeList 'NeTypeList -> 'NeTypeList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'TypeList 'TypeList -> 'TypeList [assoc ctor id('nil.TypeList) prec( 25)] . op '__ : 'VariantOptionSet 'VariantOptionSet -> 'VariantOptionSet [assoc comm ctor id('none.VariantOptionSet)] . op '_`,_ : 'EmptyCommaList 'EmptyCommaList -> 'EmptyCommaList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'GTermList 'GTermList -> 'GTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'GroundTermList 'GroundTermList -> 'GroundTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'GroundTermList 'NeGroundTermList -> 'NeGroundTermList [assoc ctor id('empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeCTermList 'TermList -> 'NeCTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeGroundTermList 'GroundTermList -> 'NeGroundTermList [assoc ctor id('empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeParameterDeclList 'ParameterDeclList -> 'NeParameterDeclList [ assoc ctor id('nil.ParameterDeclList) prec(121)] . op '_`,_ : 'NeParameterList 'ParameterList -> 'NeParameterList [assoc ctor id('empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeTermList 'TermList -> 'NeTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'ParameterDeclList 'NeParameterDeclList -> 'NeParameterDeclList [ assoc ctor id('nil.ParameterDeclList) prec(121)] . op '_`,_ : 'ParameterDeclList 'ParameterDeclList -> 'ParameterDeclList [assoc ctor id('nil.ParameterDeclList) prec(121)] . op '_`,_ : 'ParameterList 'NeParameterList -> 'NeParameterList [assoc ctor id('empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'ParameterList 'ParameterList -> 'ParameterList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'RenamingSet 'RenamingSet -> 'RenamingSet [assoc comm ctor prec( 43) format('d 'd 'ni 'd)] . op '_`,_ : 'StrategyList 'StrategyList -> 'StrategyList [assoc ctor id( 'empty.StrategyList)] . op '_`,_ : 'TermList 'NeCTermList -> 'NeCTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'TermList 'NeTermList -> 'NeTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'TermList 'TermList -> 'TermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'UsingPairSet 'UsingPairSet -> 'UsingPairSet [assoc comm ctor prec(61)] . op '_`[_`] : 'Qid 'NeCTermList -> 'Context [ctor] . op '_`[_`] : 'Qid 'NeGroundTermList -> 'GroundTerm [ctor] . op '_`[_`] : 'Qid 'NeTermList -> 'Term [ctor] . op '_`[_`]`{_`} : 'Qid 'Substitution 'StrategyList -> 'RuleApplication [ctor prec(21)] . op '_`[`[_`]`] : 'Qid 'TermList -> 'CallStrategy [ctor prec(21)] . op '_`{_`} : 'Expression 'NeParameterList -> 'Expression [ctor prec(37)] . op '_`{_`} : 'ModuleExpression 'NeParameterList -> 'ModuleExpression [ctor prec(37)] . op '_`{_`} : 'Qid 'ParameterDeclList -> 'Header [ctor] . op '_`{_`} : 'ViewExpression 'NeParameterList -> 'ViewExpression [ctor prec( 37)] . op '_and-then_ : 'Bool 'Bool -> 'Bool [strat(1 0) prec(55) gather('e 'E)] . op '_and_ : 'Bool 'Bool -> 'Bool [assoc comm prec(55)] . op '_divides_ : 'NzNat 'Nat -> 'Bool [prec(51) special( id-hook('NumberOpSymbol, 'divides) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op '_in_ : 'Qid 'QidSet -> 'Bool [none] . op '_or-else_ : 'Bool 'Bool -> 'Bool [strat(1 0) prec(59) gather('e 'E)] . op '_or-else_ : 'Strategy 'Strategy -> 'Strategy [assoc ctor prec(43) gather( 'e 'E)] . op '_or_ : 'Bool 'Bool -> 'Bool [assoc comm prec(59)] . op '_psubset_ : 'QidSet 'QidSet -> 'Bool [none] . op '_quo_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'quo) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_rem_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'rem) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_subset_ : 'QidSet 'QidSet -> 'Bool [none] . op '_using_ : 'Variable 'Strategy -> 'UsingPair [ctor prec(21)] . op '_xor_ : 'Bool 'Bool -> 'Bool [assoc comm prec(57)] . op '_xor_ : 'Nat 'Nat -> 'Nat [assoc comm prec(55) special( id-hook('ACU_NumberOpSymbol, 'xor) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'Nat 'Nat -> 'Nat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'Strategy 'Strategy -> 'Strategy [assoc comm ctor id( 'fail.Strategy) prec(41) gather('e 'E)] . op '`[_`] : 'Qid -> 'Module [none] . op '`[`] : nil -> 'Context [ctor] . op '`{_`,_`,_`,_`,_`,_`,_`} : 'Context 'Qid 'Substitution 'Qid 'Term 'Type 'Substitution -> 'NarrowingStep [ctor format('ni 'n++i 'd 'ni 'd 's 'd 'ni 'd 'ni 'd 's 'd 's 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Context 'Qid 'Substitution 'Substitution 'Qid -> 'NarrowingApplyResult [ctor format('d 'n++i 'd 's 'd 'ni 'd 'ni 'd 's 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Substitution 'NarrowingTrace 'Substitution 'Qid -> 'NarrowingSearchPathResult [ctor format('d 'n++i 'd 's 'd 's 'd 's 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Substitution 'Qid 'Substitution 'Qid -> 'NarrowingSearchResult [ctor format('d 'n++i 'd 's 'd 's 'd 'ni 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`} : 'Term 'Substitution 'Nat 'Parent 'Bool -> 'Variant [ ctor] . op '`{_`,_`,_`,_`,_`} : 'Term 'Substitution 'Qid 'Parent 'Bool -> 'Variant [ ctor] . op '`{_`,_`,_`,_`} : 'Term 'Substitution 'Term 'Nat -> 'SmtResult [ctor] . op '`{_`,_`,_`,_`} : 'Term 'Type 'Substitution 'Context -> 'Result4Tuple [ ctor] . op '`{_`,_`,_`} : 'Substitution 'Substitution 'Nat -> 'UnificationTriple [ ctor] . op '`{_`,_`,_`} : 'Substitution 'Substitution 'Qid -> 'UnificationTriple [ ctor] . op '`{_`,_`,_`} : 'Term 'Type 'Rule -> 'TraceStep [ctor] . op '`{_`,_`,_`} : 'Term 'Type 'Substitution -> 'ResultTriple [ctor] . op '`{_`,_`} : 'Substitution 'Context -> 'MatchPair [ctor] . op '`{_`,_`} : 'Substitution 'Nat -> 'UnificationPair [ctor] . op '`{_`,_`} : 'Substitution 'Qid -> 'UnificationPair [ctor] . op '`{_`,_`} : 'Term 'Type -> 'ResultPair [ctor] . op 'all : nil -> 'RuleApplication [ctor] . op 'amatch_s.t._ : 'Term 'EqCondition -> 'Strategy [ctor prec(21)] . op 'amatchrew_s.t._by_ : 'Term 'EqCondition 'UsingPairSet -> 'Strategy [ctor] . op 'ambiguity : 'ResultPair 'ResultPair -> 'ResultPair? [ctor] . op 'ambiguity : 'Strategy 'Strategy -> 'Strategy? [ctor] . op 'anyType : nil -> 'Type? [ctor] . op 'append : 'NatList 'NatList -> 'NatList [none] . op 'append : 'NatList 'NeNatList -> 'NeNatList [none] . op 'append : 'NeNatList 'NatList -> 'NeNatList [none] . op 'append : 'NeQidList 'QidList -> 'NeQidList [none] . op 'append : 'QidList 'NeQidList -> 'NeQidList [none] . op 'append : 'QidList 'QidList -> 'QidList [none] . op 'applySubstitution : 'Module 'Term 'Substitution -> 'Term [none] . op 'ascii : 'Char -> 'Nat [special( id-hook('StringOpSymbol, 'ascii) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'assoc : nil -> 'Attr [ctor] . op 'breadthFirst : nil -> 'SrewriteOption [ctor] . op 'ceq_=_if_`[_`]. : 'Term 'Term 'EqCondition 'AttrSet -> 'Equation [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'char : '`[FindResult`,NatList`,Bound`,Parent`] -> '`[String`] [special( id-hook('StringOpSymbol, 'char) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'cmb_:_if_`[_`]. : 'Term 'Sort 'EqCondition 'AttrSet -> 'MembAx [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'comm : nil -> 'Attr [ctor] . op 'completeName : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaCompleteName) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'config : nil -> 'Attr [ctor] . op 'crl_=>_if_`[_`]. : 'Term 'Term 'Condition 'AttrSet -> 'Rule [ctor format( 'd 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'csd_:=_if_`[_`]. : 'CallStrategy 'Strategy 'EqCondition 'AttrSet -> 'StratDefinition [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'ctor : nil -> 'Attr [ctor] . op 'delay : nil -> 'VariantOption [ctor] . op 'delete : 'Qid 'QidSet -> 'QidSet [none] . op 'depthFirst : nil -> 'SrewriteOption [ctor] . op 'downTerm : 'Term 'Universal -> 'Universal [poly(2 0) special( id-hook('MetaLevelOpSymbol, 'metaDownTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'empty : nil -> 'EmptyCommaList [ctor] . op 'empty : nil -> 'GroundTermList [ctor] . op 'empty : nil -> 'StrategyList [ctor] . op 'eq_=_`[_`]. : 'Term 'Term 'AttrSet -> 'Equation [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 'extending_. : 'ModuleExpression -> 'Import [ctor] . op 'fail : nil -> 'Strategy [ctor] . op 'failure : nil -> 'NarrowingApplyResult? [ctor] . op 'failure : nil -> 'NarrowingSearchPathResult? [ctor] . op 'failure : nil -> 'NarrowingSearchResult? [ctor] . op 'failure : nil -> 'Result4Tuple? [ctor] . op 'failure : nil -> 'ResultPair? [ctor] . op 'failure : nil -> 'ResultTriple? [ctor] . op 'failure : nil -> 'SmtResult? [ctor] . op 'failure : nil -> 'Trace? [ctor] . op 'failureIncomplete : nil -> 'NarrowingApplyResult? [ctor] . op 'failureIncomplete : nil -> 'NarrowingSearchPathResult? [ctor] . op 'failureIncomplete : nil -> 'NarrowingSearchResult? [ctor] . op 'failureIncomplete : nil -> 'ResultTriple? [ctor] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'filter : nil -> 'VariantOption [ctor] . op 'find : 'String 'String 'Nat -> 'FindResult [special( id-hook('StringOpSymbol, 'find) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('notFoundTerm, 'notFound.FindResult))] . op 'flat : nil -> 'PrintOption [ctor] . op 'fmod_is_sorts_.____endfm : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet -> 'FModule [ctor gather('& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'format : 'QidList -> 'Attr [ctor] . op 'format : nil -> 'PrintOption [ctor] . op 'front : 'NeNatList -> 'NatList [none] . op 'front : 'NeQidList -> 'QidList [none] . op 'frozen : 'NeNatList -> 'Attr [ctor] . op 'fth_is_sorts_.____endfth : 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet -> 'FTheory [ctor gather('& '& '& '& '& '& '&) format('d 'd 'd 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'gather : 'QidList -> 'Attr [ctor] . op 'gcd : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'gcd : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'generated-by_. : 'ModuleExpression -> 'Import [ctor] . op 'getAccumulatedSubstitution : 'NarrowingSearchResult -> 'Substitution [ none] . op 'getAccumulatedSubstitution : 'NarrowingStep -> 'Substitution [none] . op 'getContext : 'MatchPair -> 'Context [none] . op 'getContext : 'NarrowingApplyResult -> 'Context [none] . op 'getContext : 'NarrowingStep -> 'Context [none] . op 'getContext : 'Result4Tuple -> 'Context [none] . op 'getEqs : 'Module -> 'EquationSet [none] . op 'getFrom : 'View -> 'ModuleExpression [none] . op 'getImports : 'Module -> 'ImportList [none] . op 'getInitialSubstitution : 'NarrowingSearchPathResult -> 'Substitution [ none] . op 'getInitialTerm : 'NarrowingSearchPathResult -> 'Term [none] . op 'getInitialType : 'NarrowingSearchPathResult -> 'Type [none] . op 'getKind : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGetKind) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'getKinds : '`[Module`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGetKinds) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'getLabel : 'NarrowingApplyResult -> 'Qid [none] . op 'getLabel : 'NarrowingStep -> 'Qid [none] . op 'getLhsSubstitution : 'UnificationTriple -> 'Substitution [none] . op 'getMbs : 'Module -> 'MembAxSet [none] . op 'getMoreVariantsInLayerFlag : 'Variant -> 'Bool [none] . op 'getName : 'Constant -> 'Qid [none] . op 'getName : 'Module -> 'Qid [none] . op 'getName : 'Variable -> 'Qid [none] . op 'getName : 'View -> 'Qid [none] . op 'getOpMappings : 'View -> 'OpMappingSet [none] . op 'getOps : 'Module -> 'OpDeclSet [none] . op 'getParent : 'Variant -> 'Parent [none] . op 'getRhsSubstitution : 'UnificationTriple -> 'Substitution [none] . op 'getRls : 'Module -> 'RuleSet [none] . op 'getRule : 'TraceStep -> 'Rule [none] . op 'getRuleSubstitution : 'NarrowingApplyResult -> 'Substitution [none] . op 'getSds : 'Module -> 'StratDefSet [none] . op 'getSortMappings : 'View -> 'SortMappingSet [none] . op 'getSorts : 'Module -> 'SortSet [none] . op 'getStateVariableFamily : 'NarrowingSearchResult -> 'Qid [none] . op 'getStratMappings : 'View -> 'StratMappingSet [none] . op 'getStrats : 'Module -> 'StratDeclSet [none] . op 'getSubsorts : 'Module -> 'SubsortDeclSet [none] . op 'getSubstitution : 'MatchPair -> 'Substitution [none] . op 'getSubstitution : 'Result4Tuple -> 'Substitution [none] . op 'getSubstitution : 'ResultTriple -> 'Substitution [none] . op 'getSubstitution : 'UnificationPair -> 'Substitution [none] . op 'getSubstitution : 'Variant -> 'Substitution [none] . op 'getTerm : 'NarrowingApplyResult -> 'Term [none] . op 'getTerm : 'NarrowingSearchResult -> 'Term [none] . op 'getTerm : 'NarrowingStep -> 'Term [none] . op 'getTerm : 'Result4Tuple -> 'Term [none] . op 'getTerm : 'ResultPair -> 'Term [none] . op 'getTerm : 'ResultTriple -> 'Term [none] . op 'getTerm : 'TraceStep -> 'Term [none] . op 'getTerm : 'Variant -> 'Term [none] . op 'getTermSubstitution : 'NarrowingApplyResult -> 'Substitution [none] . op 'getTo : 'View -> 'ModuleExpression [none] . op 'getTrace : 'NarrowingSearchPathResult -> 'NarrowingTrace [none] . op 'getType : 'Constant -> 'Type [none] . op 'getType : 'NarrowingApplyResult -> 'Type [none] . op 'getType : 'NarrowingSearchResult -> 'Type [none] . op 'getType : 'NarrowingStep -> 'Type [none] . op 'getType : 'Result4Tuple -> 'Type [none] . op 'getType : 'ResultPair -> 'Type [none] . op 'getType : 'ResultTriple -> 'Type [none] . op 'getType : 'TraceStep -> 'Type [none] . op 'getType : 'Variable -> 'Type [none] . op 'getUnifier : 'NarrowingSearchPathResult -> 'Substitution [none] . op 'getUnifier : 'NarrowingSearchResult -> 'Substitution [none] . op 'getUnifier : 'NarrowingStep -> 'Substitution [none] . op 'getUnifierVariableFamily : 'NarrowingSearchPathResult -> 'Qid [none] . op 'getUnifierVariableFamily : 'NarrowingSearchResult -> 'Qid [none] . op 'getUnifierVariableFamily : 'NarrowingStep -> 'Qid [none] . op 'getVariableFamily : 'NarrowingApplyResult -> 'Qid [none] . op 'getVariableFamily : 'UnificationPair -> 'Qid [none] . op 'getVariableFamily : 'UnificationTriple -> 'Qid [none] . op 'getVariableFamily : 'Variant -> 'Qid [none] . op 'glbSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [ special( id-hook('MetaLevelOpSymbol, 'metaGlbSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'head : 'NeNatList -> 'Nat [none] . op 'head : 'NeQidList -> 'Qid [none] . op 'id : 'Term -> 'Attr [ctor] . op 'id-hook : 'Qid 'QidList -> 'Hook [ctor format('nssss 'd)] . op 'idem : nil -> 'Attr [ctor] . op 'idle : nil -> 'Strategy [ctor] . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op 'including_. : 'ModuleExpression -> 'Import [ctor] . op 'insert : 'Qid 'QidSet -> 'QidSet [none] . op 'intersection : 'QidSet 'QidSet -> 'QidSet [none] . op 'iter : nil -> 'Attr [ctor] . op 'label : 'Qid -> 'Attr [ctor] . op 'label_to_ : 'Qid 'Qid -> 'Renaming [ctor] . op 'last : 'NeNatList -> 'Nat [none] . op 'last : 'NeQidList -> 'Qid [none] . op 'latex : 'String -> 'Attr [ctor] . op 'lcm : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lcm : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'leastSort : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaLeastSort) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'left-id : 'Term -> 'Attr [ctor] . op 'length : 'String -> 'Nat [special( id-hook('StringOpSymbol, 'length) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lesserSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaLesserSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'lowerCase : 'String -> 'String [special( id-hook('StringOpSymbol, 'lowerCase) op-hook('stringSymbol, ', nil, 'Char))] . op 'match_s.t._ : 'Term 'EqCondition -> 'Strategy [ctor prec(21)] . op 'matchrew_s.t._by_ : 'Term 'EqCondition 'UsingPairSet -> 'Strategy [ctor] . op 'max : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'max : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'maximalAritySet : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMaximalAritySet) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'maximalSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMaximalSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'mb_:_`[_`]. : 'Term 'Sort 'AttrSet -> 'MembAx [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 'memo : nil -> 'Attr [ctor] . op 'metaApply : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Substitution?`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaApply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaCheck : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaCheck) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'legacyMetaDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'metaDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaFrewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaFrewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetIrredundantVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaGetIrredundantVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetIrredundantVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'metaGetIrredundantVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaGetVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'metaGetVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaIrredundantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'metaIrredundantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaIrredundantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaIrredundantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaMatch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Substitution?`] [special( id-hook('MetaLevelOpSymbol, 'metaMatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrow : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[Bool`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaNarrow2) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrow : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaNarrow) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingApply : 'Module 'Term 'TermList 'Qid 'Nat -> 'NarrowingApplyResult? [none] . op 'metaNarrowingApply : 'Module 'Term 'TermList 'Qid 'VariantOptionSet 'Nat -> 'NarrowingApplyResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingApply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingSearch : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'Nat -> 'NarrowingSearchResult? [none] . op 'metaNarrowingSearch : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'VariantOptionSet 'Nat -> 'NarrowingSearchResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingSearchPath : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'Nat -> 'NarrowingSearchPathResult? [none] . op 'metaNarrowingSearchPath : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'VariantOptionSet 'Nat -> 'NarrowingSearchPathResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingSearchPath) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNormalize : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaNormalize) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaParse : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [ none] . op 'metaParse : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaParse) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaParseStrategy : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[StrategyList`,Strategy?`] [special( id-hook('MetaLevelOpSymbol, 'metaParseStrategy) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaPrettyPrint) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrettyPrintStrategy : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[StrategyList`,Strategy?`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaPrettyPrintStrategy) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrintToString : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[String`] [special( id-hook('MetaLevelOpSymbol, 'metaPrintToString) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaReduce : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaReduce) op-hook('qidSymbol, ', nil, 'Qid) op-hook('metaTermSymbol, '_`[_`], 'Qid 'NeGroundTermList, 'GroundTerm) op-hook('metaArgSymbol, '_`,_, 'NeGroundTermList 'GroundTermList, 'NeGroundTermList) op-hook('emptyTermListSymbol, 'empty, nil, 'GroundTermList) op-hook('assignmentSymbol, '_<-_, 'Variable 'Term, 'Assignment) op-hook('emptySubstitutionSymbol, 'none, nil, 'Substitution) op-hook('substitutionSymbol, '_;_, 'Substitution 'Substitution, 'Substitution) op-hook('holeSymbol, '`[`], nil, 'Context) op-hook('noConditionSymbol, 'nil, nil, 'EqCondition) op-hook('equalityConditionSymbol, '_=_, 'Term 'Term, 'EqCondition) op-hook('sortTestConditionSymbol, '_:_, 'Term 'Sort, 'EqCondition) op-hook('matchConditionSymbol, '_:=_, 'Term 'Term, 'EqCondition) op-hook('rewriteConditionSymbol, '_=>_, 'Term 'Term, 'Condition) op-hook('conjunctionSymbol, '_/\_, 'EqCondition 'EqCondition, 'EqCondition) op-hook('failStratSymbol, 'fail, nil, 'Strategy) op-hook('idleStratSymbol, 'idle, nil, 'Strategy) op-hook('allStratSymbol, 'all, nil, 'RuleApplication) op-hook('applicationStratSymbol, '_`[_`]`{_`}, 'Qid 'Substitution 'StrategyList, 'RuleApplication) op-hook('topStratSymbol, 'top, 'RuleApplication, 'Strategy) op-hook('matchStratSymbol, 'match_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('xmatchStratSymbol, 'xmatch_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('amatchStratSymbol, 'amatch_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('unionStratSymbol, '_|_, 'Strategy 'Strategy, 'Strategy) op-hook('concatStratSymbol, '_;_, 'Strategy 'Strategy, 'Strategy) op-hook('orelseStratSymbol, '_or-else_, 'Strategy 'Strategy, 'Strategy) op-hook('plusStratSymbol, '_+, 'Strategy, 'Strategy) op-hook('conditionalStratSymbol, '_?_:_, 'Strategy 'Strategy 'Strategy, 'Strategy) op-hook('matchrewStratSymbol, 'matchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('xmatchrewStratSymbol, 'xmatchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('amatchrewStratSymbol, 'amatchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('callStratSymbol, '_`[`[_`]`], 'Qid 'TermList, 'CallStrategy) op-hook('oneStratSymbol, 'one, 'Strategy, 'Strategy) op-hook('starStratSymbol, '_*, 'Strategy, 'Strategy) op-hook('normalizationStratSymbol, '_!, 'Strategy, 'Strategy) op-hook('notStratSymbol, 'not, 'Strategy, 'Strategy) op-hook('testStratSymbol, 'test, 'Strategy, 'Strategy) op-hook('tryStratSymbol, 'try, 'Strategy, 'Strategy) op-hook('usingStratSymbol, '_using_, 'Variable 'Strategy, 'UsingPair) op-hook('usingListStratSymbol, '_`,_, 'UsingPairSet 'UsingPairSet, 'UsingPairSet) op-hook('emptyStratListSymbol, 'empty, nil, 'StrategyList) op-hook('stratListSymbol, '_`,_, 'StrategyList 'StrategyList, 'StrategyList) op-hook('headerSymbol, '_`{_`}, 'Qid 'ParameterDeclList, 'Header) op-hook('parameterDeclSymbol, '_::_, 'Sort 'ModuleExpression, 'ParameterDecl) op-hook('parameterDeclListSymbol, '_`,_, 'ParameterDeclList 'ParameterDeclList, 'ParameterDeclList) op-hook('protectingSymbol, 'protecting_., 'ModuleExpression, 'Import) op-hook('extendingSymbol, 'extending_., 'ModuleExpression, 'Import) op-hook('includingSymbol, 'including_., 'ModuleExpression, 'Import) op-hook('generatedBySymbol, 'generated-by_., 'ModuleExpression, 'Import) op-hook('nilImportListSymbol, 'nil, nil, 'ImportList) op-hook('importListSymbol, '__, 'ImportList 'ImportList, 'ImportList) op-hook('emptySortSetSymbol, 'none, nil, 'QidSet) op-hook('sortSetSymbol, '_;_, 'QidSet 'QidSet, 'QidSet) op-hook('subsortSymbol, 'subsort_<_., 'Sort 'Sort, 'SubsortDecl) op-hook('emptySubsortDeclSetSymbol, 'none, nil, 'SubsortDeclSet) op-hook('subsortDeclSetSymbol, '__, 'SubsortDeclSet 'SubsortDeclSet, 'SubsortDeclSet) op-hook('nilQidListSymbol, 'nil, nil, 'QidList) op-hook('qidListSymbol, '__, 'QidList 'QidList, 'QidList) op-hook('emptyQidSetSymbol, 'none, nil, 'QidSet) op-hook('qidSetSymbol, '_;_, 'QidSet 'QidSet, 'QidSet) op-hook('succSymbol, 's_, 'Nat, 'NzNat) op-hook('natListSymbol, '__, 'NatList 'NatList, 'NatList) op-hook('unboundedSymbol, 'unbounded, nil, 'Bound) op-hook('noParentSymbol, 'none, nil, 'Parent) op-hook('stringSymbol, ', nil, 'Char) op-hook('sortRenamingSymbol, 'sort_to_, 'Qid 'Qid, 'Renaming) op-hook('opRenamingSymbol, 'op_to_`[_`], 'Qid 'Qid 'AttrSet, 'Renaming) op-hook('opRenamingSymbol2, 'op_:_->_to_`[_`], 'Qid 'TypeList 'Type 'Qid 'AttrSet, 'Renaming) op-hook('labelRenamingSymbol, 'label_to_, 'Qid 'Qid, 'Renaming) op-hook('stratRenamingSymbol, 'strat_to_, 'Qid 'Qid, 'Renaming) op-hook('stratRenamingSymbol2, 'strat_:_@_to_, 'Qid 'TypeList 'Type 'Qid, 'Renaming) op-hook('renamingSetSymbol, '_`,_, 'RenamingSet 'RenamingSet, 'RenamingSet) op-hook('sumSymbol, '_+_, 'ModuleExpression 'ModuleExpression, 'ModuleExpression) op-hook('renamingSymbol, '_*`(_`), 'ModuleExpression 'RenamingSet, 'ModuleExpression) op-hook('instantiationSymbol, '_`{_`}, 'Expression 'NeParameterList, 'Expression) op-hook('termHookSymbol, 'term-hook, 'Qid 'Term, 'Hook) op-hook('hookListSymbol, '__, 'HookList 'HookList, 'HookList) op-hook('idHookSymbol, 'id-hook, 'Qid 'QidList, 'Hook) op-hook('opHookSymbol, 'op-hook, 'Qid 'Qid 'QidList 'Qid, 'Hook) op-hook('assocSymbol, 'assoc, nil, 'Attr) op-hook('commSymbol, 'comm, nil, 'Attr) op-hook('idemSymbol, 'idem, nil, 'Attr) op-hook('iterSymbol, 'iter, nil, 'Attr) op-hook('idSymbol, 'id, 'Term, 'Attr) op-hook('leftIdSymbol, 'left-id, 'Term, 'Attr) op-hook('rightIdSymbol, 'right-id, 'Term, 'Attr) op-hook('stratSymbol, 'strat, 'NeNatList, 'Attr) op-hook('memoSymbol, 'memo, nil, 'Attr) op-hook('precSymbol, 'prec, 'Nat, 'Attr) op-hook('gatherSymbol, 'gather, 'QidList, 'Attr) op-hook('formatSymbol, 'format, 'QidList, 'Attr) op-hook('latexSymbol, 'latex, 'String, 'Attr) op-hook('ctorSymbol, 'ctor, nil, 'Attr) op-hook('frozenSymbol, 'frozen, 'NeNatList, 'Attr) op-hook('polySymbol, 'poly, 'NeNatList, 'Attr) op-hook('configSymbol, 'config, nil, 'Attr) op-hook('objectSymbol, 'object, nil, 'Attr) op-hook('msgSymbol, 'msg, nil, 'Attr) op-hook('portalSymbol, 'portal, nil, 'Attr) op-hook('pconstSymbol, 'pconst, nil, 'Attr) op-hook('specialSymbol, 'special, 'NeHookList, 'Attr) op-hook('labelSymbol, 'label, 'Qid, 'Attr) op-hook('metadataSymbol, 'metadata, 'String, 'Attr) op-hook('owiseSymbol, 'owise, nil, 'Attr) op-hook('variantAttrSymbol, 'variant, nil, 'Attr) op-hook('narrowingSymbol, 'narrowing, nil, 'Attr) op-hook('nonexecSymbol, 'nonexec, nil, 'Attr) op-hook('printSymbol, 'print, 'QidList, 'Attr) op-hook('emptyAttrSetSymbol, 'none, nil, 'AttrSet) op-hook('attrSetSymbol, '__, 'AttrSet 'AttrSet, 'AttrSet) op-hook('opDeclSymbol, 'op_:_->_`[_`]., 'Qid 'TypeList 'Type 'AttrSet, 'OpDecl) op-hook('opDeclSetSymbol, '__, 'OpDeclSet 'OpDeclSet, 'OpDeclSet) op-hook('emptyOpDeclSetSymbol, 'none, nil, 'OpDeclSet) op-hook('mbSymbol, 'mb_:_`[_`]., 'Term 'Sort 'AttrSet, 'MembAx) op-hook('cmbSymbol, 'cmb_:_if_`[_`]., 'Term 'Sort 'EqCondition 'AttrSet, 'MembAx) op-hook('emptyMembAxSetSymbol, 'none, nil, 'MembAxSet) op-hook('membAxSetSymbol, '__, 'MembAxSet 'MembAxSet, 'MembAxSet) op-hook('eqSymbol, 'eq_=_`[_`]., 'Term 'Term 'AttrSet, 'Equation) op-hook('ceqSymbol, 'ceq_=_if_`[_`]., 'Term 'Term 'EqCondition 'AttrSet, 'Equation) op-hook('emptyEquationSetSymbol, 'none, nil, 'EquationSet) op-hook('equationSetSymbol, '__, 'EquationSet 'EquationSet, 'EquationSet) op-hook('rlSymbol, 'rl_=>_`[_`]., 'Term 'Term 'AttrSet, 'Rule) op-hook('crlSymbol, 'crl_=>_if_`[_`]., 'Term 'Term 'Condition 'AttrSet, 'Rule) op-hook('emptyRuleSetSymbol, 'none, nil, 'RuleSet) op-hook('ruleSetSymbol, '__, 'RuleSet 'RuleSet, 'RuleSet) op-hook('stratDeclSymbol, 'strat_:_@_`[_`]., 'Qid 'TypeList 'Type 'AttrSet, 'StratDecl) op-hook('emptyStratDeclSetSymbol, 'none, nil, 'StratDeclSet) op-hook('stratDeclSetSymbol, '__, 'StratDeclSet 'StratDeclSet, 'StratDeclSet) op-hook('sdSymbol, 'sd_:=_`[_`]., 'CallStrategy 'Strategy 'AttrSet, 'StratDefinition) op-hook('csdSymbol, 'csd_:=_if_`[_`]., 'CallStrategy 'Strategy 'EqCondition 'AttrSet, 'StratDefinition) op-hook('emptyStratDefSetSymbol, 'none, nil, 'StratDefSet) op-hook('stratDefSetSymbol, '__, 'StratDefSet 'StratDefSet, 'StratDefSet) op-hook('fmodSymbol, 'fmod_is_sorts_.____endfm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet, 'FModule) op-hook('fthSymbol, 'fth_is_sorts_.____endfth, 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet, 'FTheory) op-hook('modSymbol, 'mod_is_sorts_._____endm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet, 'SModule) op-hook('thSymbol, 'th_is_sorts_._____endth, 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet, 'STheory) op-hook('smodSymbol, 'smod_is_sorts_._______endsm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet, 'StratModule) op-hook('sthSymbol, 'sth_is_sorts_._______endsth, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet, 'StratTheory) op-hook('sortMappingSymbol, 'sort_to_., 'Sort 'Sort, 'SortMapping) op-hook('emptySortMappingSetSymbol, 'none, nil, 'SortMappingSet) op-hook('sortMappingSetSymbol, '__, 'SortMappingSet 'SortMappingSet, 'SortMappingSet) op-hook('opMappingSymbol, 'op_to_., 'Qid 'Qid, 'OpMapping) op-hook('opSpecificMappingSymbol, 'op_:_->_to_., 'Qid 'TypeList 'Type 'Qid, 'OpMapping) op-hook('opTermMappingSymbol, 'op_to`term_., 'Term 'Term, 'OpMapping) op-hook('emptyOpMappingSetSymbol, 'none, nil, 'OpMappingSet) op-hook('opMappingSetSymbol, '__, 'OpMappingSet 'OpMappingSet, 'OpMappingSet) op-hook('stratMappingSymbol, 'strat_to_., 'Qid 'Qid, 'StratMapping) op-hook('stratSpecificMappingSymbol, 'strat_:_@_to_., 'Qid 'TypeList 'Type 'Qid, 'StratMapping) op-hook('stratExprMappingSymbol, 'strat_to`expr_., 'CallStrategy 'Strategy, 'StratMapping) op-hook('emptyStratMappingSetSymbol, 'none, nil, 'StratMappingSet) op-hook('stratMappingSetSymbol, '__, 'StratMappingSet 'StratMappingSet, 'StratMappingSet) op-hook('viewSymbol, 'view_from_to_is___endv, 'Header 'ModuleExpression 'ModuleExpression 'SortMappingSet 'OpMappingSet 'StratMappingSet, 'View) op-hook('anyTypeSymbol, 'anyType, nil, 'Type?) op-hook('unificandPairSymbol, '_=?_, 'Term 'Term, 'UnificandPair) op-hook('unificationConjunctionSymbol, '_/\_, 'UnificationProblem 'UnificationProblem, 'UnificationProblem) op-hook('patternSubjectPairSymbol, '_<=?_, 'Term 'Term, 'PatternSubjectPair) op-hook('matchingConjunctionSymbol, '_/\_, 'MatchingProblem 'MatchingProblem, 'MatchingProblem) op-hook('resultPairSymbol, '`{_`,_`}, 'Term 'Type, 'ResultPair) op-hook('resultTripleSymbol, '`{_`,_`,_`}, 'Term 'Type 'Substitution, 'ResultTriple) op-hook('result4TupleSymbol, '`{_`,_`,_`,_`}, 'Term 'Type 'Substitution 'Context, 'Result4Tuple) op-hook('matchPairSymbol, '`{_`,_`}, 'Substitution 'Context, 'MatchPair) op-hook('unificationTripleSymbol, '`{_`,_`,_`}, 'Substitution 'Substitution 'Qid, 'UnificationTriple) op-hook('variantSymbol, '`{_`,_`,_`,_`,_`}, 'Term 'Substitution 'Qid 'Parent 'Bool, 'Variant) op-hook('narrowingApplyResultSymbol, '`{_`,_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Context 'Qid 'Substitution 'Substitution 'Qid, 'NarrowingApplyResult) op-hook('narrowingSearchResultSymbol, '`{_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Substitution 'Qid 'Substitution 'Qid, 'NarrowingSearchResult) op-hook('traceStepSymbol, '`{_`,_`,_`}, 'Term 'Type 'Rule, 'TraceStep) op-hook('nilTraceSymbol, 'nil, nil, 'Trace) op-hook('traceSymbol, '__, 'Trace 'Trace, 'Trace) op-hook('narrowingStepSymbol, '`{_`,_`,_`,_`,_`,_`,_`}, 'Context 'Qid 'Substitution 'Qid 'Term 'Type 'Substitution, 'NarrowingStep) op-hook('nilNarrowingTraceSymbol, 'nil, nil, 'NarrowingTrace) op-hook('narrowingTraceSymbol, '__, 'NarrowingTrace 'NarrowingTrace, 'NarrowingTrace) op-hook('narrowingSearchPathResultSymbol, '`{_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Substitution 'NarrowingTrace 'Substitution 'Qid, 'NarrowingSearchPathResult) op-hook('smtResultSymbol, '`{_`,_`,_`,_`}, 'Term 'Substitution 'Term 'Nat, 'SmtResult) op-hook('noParseSymbol, 'noParse, 'Nat, 'ResultPair?) op-hook('ambiguitySymbol, 'ambiguity, 'ResultPair 'ResultPair, 'ResultPair?) op-hook('failure2Symbol, 'failure, nil, 'ResultPair?) op-hook('failure3Symbol, 'failure, nil, 'ResultTriple?) op-hook('failureIncomplete3Symbol, 'failureIncomplete, nil, 'ResultTriple?) op-hook('failure4Symbol, 'failure, nil, 'Result4Tuple?) op-hook('noUnifierPairSymbol, 'noUnifier, nil, 'UnificationPair?) op-hook('noUnifierTripleSymbol, 'noUnifier, nil, 'UnificationTriple?) op-hook('noUnifierIncompletePairSymbol, 'noUnifierIncomplete, nil, 'UnificationPair?) op-hook('noUnifierIncompleteTripleSymbol, 'noUnifierIncomplete, nil, 'UnificationTriple?) op-hook('noVariantSymbol, 'noVariant, nil, 'Variant?) op-hook('noVariantIncompleteSymbol, 'noVariantIncomplete, nil, 'Variant?) op-hook('narrowingApplyFailureSymbol, 'failure, nil, 'NarrowingApplyResult?) op-hook('narrowingApplyFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingApplyResult?) op-hook('narrowingSearchFailureSymbol, 'failure, nil, 'NarrowingSearchResult?) op-hook('narrowingSearchFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingSearchResult?) op-hook('narrowingSearchPathFailureSymbol, 'failure, nil, 'NarrowingSearchPathResult?) op-hook('narrowingSearchPathFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingSearchPathResult?) op-hook('noMatchSubstSymbol, 'noMatch, nil, 'Substitution?) op-hook('noMatchIncompleteSubstSymbol, 'noMatchIncomplete, nil, 'Substitution?) op-hook('noMatchPairSymbol, 'noMatch, nil, 'MatchPair?) op-hook('failureTraceSymbol, 'failure, nil, 'Trace?) op-hook('smtFailureSymbol, 'failure, nil, 'SmtResult?) op-hook('noStratParseSymbol, 'noStratParse, 'Nat, 'Strategy?) op-hook('stratAmbiguitySymbol, 'ambiguity, 'Strategy 'Strategy, 'Strategy?) op-hook('mixfixSymbol, 'mixfix, nil, 'PrintOption) op-hook('withParensSymbol, 'with-parens, nil, 'PrintOption) op-hook('withSortsSymbol, 'with-sorts, nil, 'PrintOption) op-hook('flatSymbol, 'flat, nil, 'PrintOption) op-hook('formatPrintOptionSymbol, 'format, nil, 'PrintOption) op-hook('numberSymbol, 'number, nil, 'PrintOption) op-hook('ratSymbol, 'rat, nil, 'PrintOption) op-hook('emptyPrintOptionSetSymbol, 'none, nil, 'PrintOptionSet) op-hook('printOptionSetSymbol, '__, 'PrintOptionSet 'PrintOptionSet, 'PrintOptionSet) op-hook('delaySymbol, 'delay, nil, 'VariantOption) op-hook('filterSymbol, 'filter, nil, 'VariantOption) op-hook('emptyVariantOptionSetSymbol, 'none, nil, 'VariantOptionSet) op-hook('variantOptionSetSymbol, '__, 'VariantOptionSet 'VariantOptionSet, 'VariantOptionSet) op-hook('breadthFirstSymbol, 'breadthFirst, nil, 'SrewriteOption) op-hook('depthFirstSymbol, 'depthFirst, nil, 'SrewriteOption) op-hook('legacyUnificationPairSymbol, '`{_`,_`}, 'Substitution 'Nat, 'UnificationPair) op-hook('legacyUnificationTripleSymbol, '`{_`,_`,_`}, 'Substitution 'Substitution 'Nat, 'UnificationTriple) op-hook('legacyVariantSymbol, '`{_`,_`,_`,_`,_`}, 'Term 'Substitution 'Nat 'Parent 'Bool, 'Variant) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op 'metaRewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaRewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSearch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSearchPath : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Trace?`] [special( id-hook('MetaLevelOpSymbol, 'metaSearchPath) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSmtSearch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[SmtResult?`] [special( id-hook('MetaLevelOpSymbol, 'metaSmtSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSrewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[StrategyList`,Strategy?`] '`[SrewriteOption`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaSrewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaUnify : '`[Module`] '`[UnificationProblem`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'legacyMetaVariantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [none] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantMatch : '`[Module`] '`[MatchingProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Substitution?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantMatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaVariantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [none] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaXapply : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Substitution?`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Result4Tuple?`] [special( id-hook('MetaLevelOpSymbol, 'metaXapply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaXmatch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaXmatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metadata : 'String -> 'Attr [ctor] . op 'min : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'minimalSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMinimalSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'mixfix : nil -> 'PrintOption [ctor] . op 'modExp : '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[FindResult`,NatList`,Bound`,Parent`] [special( id-hook('NumberOpSymbol, 'modExp) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'mod_is_sorts_._____endm : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet -> 'SModule [ctor gather('& '& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'msg : nil -> 'Attr [ctor] . op 'narrowing : nil -> 'Attr [ctor] . op 'nil : nil -> 'EqCondition [ctor] . op 'nil : nil -> 'HookList [ctor] . op 'nil : nil -> 'ImportList [ctor] . op 'nil : nil -> 'NarrowingTrace [ctor] . op 'nil : nil -> 'NatList [ctor] . op 'nil : nil -> 'ParameterDeclList [ctor] . op 'nil : nil -> 'QidList [ctor] . op 'nil : nil -> 'Trace [ctor] . op 'nil : nil -> 'TypeList [ctor] . op 'noMatch : nil -> 'MatchPair? [ctor] . op 'noMatch : nil -> 'Substitution? [ctor] . op 'noMatchIncomplete : nil -> 'Substitution? [ctor] . op 'noParse : 'Nat -> 'ResultPair? [ctor] . op 'noStratParse : 'Nat -> 'Strategy? [ctor] . op 'noUnifier : nil -> 'UnificationPair? [ctor] . op 'noUnifier : nil -> 'UnificationTriple? [ctor] . op 'noUnifierIncomplete : nil -> 'UnificationPair? [ctor] . op 'noUnifierIncomplete : nil -> 'UnificationTriple? [ctor] . op 'noVariant : nil -> 'Variant? [ctor] . op 'noVariantIncomplete : nil -> 'Variant? [ctor] . op 'none : nil -> 'AttrSet [ctor] . op 'none : nil -> 'EmptyQidSet [ctor] . op 'none : nil -> 'EquationSet [ctor] . op 'none : nil -> 'MembAxSet [ctor] . op 'none : nil -> 'OpDeclSet [ctor] . op 'none : nil -> 'OpMappingSet [ctor] . op 'none : nil -> 'Parent [none] . op 'none : nil -> 'PrintOptionSet [ctor] . op 'none : nil -> 'QidSet [ctor] . op 'none : nil -> 'RuleSet [ctor] . op 'none : nil -> 'SortMappingSet [ctor] . op 'none : nil -> 'StratDeclSet [ctor] . op 'none : nil -> 'StratDefSet [ctor] . op 'none : nil -> 'StratMappingSet [ctor] . op 'none : nil -> 'SubsortDeclSet [ctor] . op 'none : nil -> 'Substitution [ctor] . op 'none : nil -> 'VariantOptionSet [ctor] . op 'nonexec : nil -> 'Attr [ctor] . op 'not : 'Strategy -> 'Strategy [ctor] . op 'notFound : nil -> 'FindResult [ctor] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op 'number : nil -> 'PrintOption [ctor] . op 'object : nil -> 'Attr [ctor] . op 'occurs : 'Nat 'NatList -> 'Bool [none] . op 'occurs : 'Qid 'QidList -> 'Bool [none] . op 'one : 'Strategy -> 'Strategy [ctor] . op 'op-hook : 'Qid 'Qid 'QidList 'Qid -> 'Hook [ctor format('nssss 'd)] . op 'op_:_->_`[_`]. : 'Qid 'TypeList 'Type 'AttrSet -> 'OpDecl [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'op_:_->_to_. : 'Qid 'TypeList 'Type 'Qid -> 'OpMapping [ctor] . op 'op_:_->_to_`[_`] : 'Qid 'TypeList 'Type 'Qid 'AttrSet -> 'Renaming [ctor format('d 'd 'd 'd 'd 'd 'd 'd 's 'd 'd 'd)] . op 'op_to_. : 'Qid 'Qid -> 'OpMapping [ctor] . op 'op_to_`[_`] : 'Qid 'Qid 'AttrSet -> 'Renaming [ctor format('d 'd 'd 'd 's 'd 'd 'd)] . op 'op_to`term_. : 'Term 'Term -> 'OpMapping [ctor] . op 'owise : nil -> 'Attr [ctor] . op 'pconst : nil -> 'Attr [ctor] . op 'poly : 'NeNatList -> 'Attr [ctor] . op 'portal : nil -> 'Attr [ctor] . op 'prec : 'Nat -> 'Attr [ctor] . op 'print : 'QidList -> 'Attr [ctor] . op 'protecting_. : 'ModuleExpression -> 'Import [ctor] . op 'qid : '`[String`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('QuotedIdentifierOpSymbol, 'qid) op-hook('quotedIdentifierSymbol, ', nil, 'Qid) op-hook('stringSymbol, ', nil, 'Char))] . op 'rat : nil -> 'PrintOption [ctor] . op 'reverse : 'NatList -> 'NatList [none] . op 'reverse : 'NeNatList -> 'NeNatList [none] . op 'reverse : 'NeQidList -> 'NeQidList [none] . op 'reverse : 'QidList -> 'QidList [none] . op 'rfind : 'String 'String 'Nat -> 'FindResult [special( id-hook('StringOpSymbol, 'rfind) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('notFoundTerm, 'notFound.FindResult))] . op 'right-id : 'Term -> 'Attr [ctor] . op 'rl_=>_`[_`]. : 'Term 'Term 'AttrSet -> 'Rule [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 's_ : 'Nat -> 'NzNat [iter ctor special( id-hook('SuccSymbol, nil) term-hook('zeroTerm, '0.Zero))] . op 'sameKind : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaSameKind) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'sd : 'Nat 'Nat -> 'Nat [comm special( id-hook('CUI_NumberOpSymbol, 'sd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'sd_:=_`[_`]. : 'CallStrategy 'Strategy 'AttrSet -> 'StratDefinition [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 'size : 'NatList -> 'Nat [none] . op 'size : 'NeNatList -> 'NzNat [none] . op 'size : 'NeQidList -> 'NzNat [none] . op 'size : 'QidList -> 'Nat [none] . op 'smod_is_sorts_._______endsm : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet -> 'StratModule [ctor gather('& '& '& '& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'sortLeq : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaSortLeq) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'sort_to_ : 'Qid 'Qid -> 'Renaming [ctor] . op 'sort_to_. : 'Sort 'Sort -> 'SortMapping [ctor] . op 'special : 'NeHookList -> 'Attr [ctor] . op 'sth_is_sorts_._______endsth : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet -> 'StratTheory [ctor gather('& '& '& '& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'strat : 'NeNatList -> 'Attr [ctor] . op 'strat_:_@_`[_`]. : 'Qid 'TypeList 'Type 'AttrSet -> 'StratDecl [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'strat_:_@_to_ : 'Qid 'TypeList 'Type 'Qid -> 'Renaming [ctor] . op 'strat_:_@_to_. : 'Qid 'TypeList 'Type 'Qid -> 'StratMapping [ctor] . op 'strat_to_ : 'Qid 'Qid -> 'Renaming [ctor] . op 'strat_to_. : 'Qid 'Qid -> 'StratMapping [ctor] . op 'strat_to`expr_. : 'CallStrategy 'Strategy -> 'StratMapping [ctor] . op 'string : 'Qid -> 'String [special( id-hook('QuotedIdentifierOpSymbol, 'string) op-hook('quotedIdentifierSymbol, ', nil, 'Qid) op-hook('stringSymbol, ', nil, 'Char))] . op 'subsort_<_. : 'Sort 'Sort -> 'SubsortDecl [ctor] . op 'substr : 'String 'Nat 'Nat -> 'String [special( id-hook('StringOpSymbol, 'substr) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'tail : 'NeNatList -> 'NatList [none] . op 'tail : 'NeQidList -> 'QidList [none] . op 'term-hook : 'Qid 'Term -> 'Hook [ctor format('nssss 'd)] . op 'test : 'Strategy -> 'Strategy [ctor] . op 'th_is_sorts_._____endth : 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet -> 'STheory [ctor gather('& '& '& '& '& '& '& '&) format('d 'd 'd 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'top : 'RuleApplication -> 'Strategy [ctor] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . op 'try : 'Strategy -> 'Strategy [ctor] . op 'unbounded : nil -> 'Bound [ctor] . op 'union : 'NeQidSet 'QidSet -> 'NeQidSet [none] . op 'union : 'QidSet 'NeQidSet -> 'NeQidSet [none] . op 'union : 'QidSet 'QidSet -> 'QidSet [none] . op 'upEqs : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[EquationSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpEqs) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upImports : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ImportList`] [special( id-hook('MetaLevelOpSymbol, 'metaUpImports) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upMbs : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[MembAxSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpMbs) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upModule : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[Module`] [special( id-hook('MetaLevelOpSymbol, 'metaUpModule) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upOpDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[OpDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpOpDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upRls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[RuleSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpRls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSds : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[StratDefSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSds) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSorts : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upStratDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[StratDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpStratDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSubsortDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[SubsortDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSubsortDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upTerm : 'Universal -> 'Term [poly(1) special( id-hook('MetaLevelOpSymbol, 'metaUpTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upView : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[View`] [special( id-hook('MetaLevelOpSymbol, 'metaUpView) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upperCase : 'String -> 'String [special( id-hook('StringOpSymbol, 'upperCase) op-hook('stringSymbol, ', nil, 'Char))] . op 'variant : nil -> 'Attr [ctor] . op 'view_from_to_is___endv : 'Header 'ModuleExpression 'ModuleExpression 'SortMappingSet 'OpMappingSet 'StratMappingSet -> 'View [ctor gather('& '& '& '& '& '&) format('d 'd 'd 'd 'd 'd 'd 'n++i 'ni 'ni 'n--i 'd)] . op 'wellFormed : 'Module -> 'Bool [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedModule) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : '`[Module`] '`[Substitution?`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedSubstitution) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'with-parens : nil -> 'PrintOption [ctor] . op 'with-sorts : nil -> 'PrintOption [ctor] . op 'xmatch_s.t._ : 'Term 'EqCondition -> 'Strategy [ctor prec(21)] . op 'xmatchrew_s.t._by_ : 'Term 'EqCondition 'UsingPairSet -> 'Strategy [ctor] . op '|_| : 'NeQidSet -> 'NzNat [none] . op '|_| : 'QidSet -> 'Nat [none] . none eq '$applySubstitution['Q:Qid, 'S:Substitution] = 'Q:Qid [owise] . eq '$applySubstitution['V:Variable, '_;_['S:Substitution, '_<-_['V:Variable, 'T:Term]]] = 'T:Term [none] . eq '$applySubstitution['_`,_['T:Term, 'TL:NeTermList], 'S:Substitution] = '_`,_['$applySubstitution['T:Term, 'S:Substitution], '$applySubstitution[ 'TL:NeTermList, 'S:Substitution]] [none] . eq '$applySubstitution['_`[_`]['Q:Qid, 'TL:NeTermList], 'S:Substitution] = '_`[_`]['Q:Qid, '$applySubstitution['TL:NeTermList, 'S:Substitution]] [ none] . eq '$card['none.EmptyQidSet, 'C:Nat] = 'C:Nat [none] . eq '$card['_;_['E:Qid, 'S:QidSet], 'C:Nat] = '$card['S:QidSet, '_+_['C:Nat, 's_['0.Zero]]] [owise] . eq '$card['_;_['N:NeQidSet, 'N:NeQidSet, 'S:QidSet], 'C:Nat] = '$card['_;_[ 'N:NeQidSet, 'S:QidSet], 'C:Nat] [none] . eq '$diff['none.EmptyQidSet, 'S':QidSet, 'A:QidSet] = 'A:QidSet [none] . eq '$diff['_;_['E:Qid, 'S:QidSet], 'S':QidSet, 'A:QidSet] = '$diff['S:QidSet, 'S':QidSet, 'if_then_else_fi['_in_['E:Qid, 'S':QidSet], 'A:QidSet, '_;_[ 'E:Qid, 'A:QidSet]]] [none] . eq '$intersect['none.EmptyQidSet, 'S':QidSet, 'A:QidSet] = 'A:QidSet [none] . eq '$intersect['_;_['E:Qid, 'S:QidSet], 'S':QidSet, 'A:QidSet] = '$intersect[ 'S:QidSet, 'S':QidSet, 'if_then_else_fi['_in_['E:Qid, 'S':QidSet], '_;_[ 'E:Qid, 'A:QidSet], 'A:QidSet]] [none] . eq '$reverse['nil.NatList, 'A:NatList] = 'A:NatList [none] . eq '$reverse['nil.TypeList, 'A:QidList] = 'A:QidList [none] . eq '$reverse['__['E:Nat, 'L:NatList], 'A:NatList] = '$reverse['L:NatList, '__['E:Nat, 'A:NatList]] [none] . eq '$reverse['__['E:Qid, 'L:QidList], 'A:QidList] = '$reverse['L:QidList, '__['E:Qid, 'A:QidList]] [none] . eq '$size['nil.NatList, 'C:Nat] = 'C:Nat [none] . eq '$size['nil.TypeList, 'C:Nat] = 'C:Nat [none] . eq '$size['__['E:Nat, 'L:NatList], 'C:Nat] = '$size['L:NatList, '_+_['C:Nat, 's_['0.Zero]]] [none] . eq '$size['__['E:Qid, 'L:QidList], 'C:Nat] = '$size['L:QidList, '_+_['C:Nat, 's_['0.Zero]]] [none] . eq '_;_['A:Assignment, 'A:Assignment] = 'A:Assignment [none] . eq '_;_['N:NeQidSet, 'N:NeQidSet] = 'N:NeQidSet [none] . eq '_;_['T:TypeList, 'T:TypeList] = 'T:TypeList [none] . eq '_\_['S:QidSet, 'N:NeQidSet] = '$diff['S:QidSet, 'N:NeQidSet, 'none.EmptyQidSet] [none] . eq '_\_['S:QidSet, 'none.EmptyQidSet] = 'S:QidSet [none] . eq '__['A:Attr, 'A:Attr] = 'A:Attr [none] . eq '__['D:StratDefinition, 'D:StratDefinition] = 'D:StratDefinition [none] . eq '__['E:Equation, 'E:Equation] = 'E:Equation [none] . eq '__['M:MembAx, 'M:MembAx] = 'M:MembAx [none] . eq '__['O:OpDecl, 'O:OpDecl] = 'O:OpDecl [none] . eq '__['O:OpMapping, 'O:OpMapping] = 'O:OpMapping [none] . eq '__['O:StratDecl, 'O:StratDecl] = 'O:StratDecl [none] . eq '__['R:Rule, 'R:Rule] = 'R:Rule [none] . eq '__['S:SortMapping, 'S:SortMapping] = 'S:SortMapping [none] . eq '__['S:StratMapping, 'S:StratMapping] = 'S:StratMapping [none] . eq '__['S:SubsortDecl, 'S:SubsortDecl] = 'S:SubsortDecl [none] . eq '_`,_['U:UsingPair, 'U:UsingPair] = 'U:UsingPair [none] . eq '_and-then_['false.Bool, 'B:`[Bool`]] = 'false.Bool [none] . eq '_and-then_['true.Bool, 'B:`[Bool`]] = 'B:`[Bool`] [none] . eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . eq '_in_['E:Qid, 'S:QidSet] = 'false.Bool [owise] . eq '_in_['E:Qid, '_;_['E:Qid, 'S:QidSet]] = 'true.Bool [none] . eq '_or-else_['false.Bool, 'B:`[Bool`]] = 'B:`[Bool`] [none] . eq '_or-else_['true.Bool, 'B:`[Bool`]] = 'true.Bool [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_psubset_['S:QidSet, 'S':QidSet] = '_and-then_['_=/=_['S:QidSet, 'S':QidSet], '_subset_['S:QidSet, 'S':QidSet]] [none] . eq '_subset_['none.EmptyQidSet, 'S':QidSet] = 'true.Bool [none] . eq '_subset_['_;_['E:Qid, 'S:QidSet], 'S':QidSet] = '_and-then_['_in_['E:Qid, 'S':QidSet], '_subset_['S:QidSet, 'S':QidSet]] [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq '`[_`]['Q:Qid] = 'sth_is_sorts_._______endsth['Q:Qid, 'including_.[ 'Q:Qid], 'none.EmptyQidSet, 'none.SubsortDeclSet, 'none.OpDeclSet, 'none.MembAxSet, 'none.EquationSet, 'none.RuleSet, 'none.StratDeclSet, 'none.StratDefSet] [none] . eq 'append['A:NatList, 'L:NatList] = '__['A:NatList, 'L:NatList] [none] . eq 'append['A:QidList, 'L:QidList] = '__['A:QidList, 'L:QidList] [none] . eq 'applySubstitution['M:Module, 'T:Term, 'S:Substitution] = 'getTerm[ 'metaNormalize['M:Module, '$applySubstitution['T:Term, 'S:Substitution]]] [ none] . eq 'delete['E:Qid, 'S:QidSet] = 'S:QidSet [owise] . eq 'delete['E:Qid, '_;_['E:Qid, 'S:QidSet]] = 'delete['E:Qid, 'S:QidSet] [ none] . eq 'front['__['L:NatList, 'E:Nat]] = 'L:NatList [none] . eq 'front['__['L:QidList, 'E:Qid]] = 'L:QidList [none] . eq 'getAccumulatedSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'A:Substitution [none] . eq 'getAccumulatedSubstitution['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'A:Substitution [ none] . eq 'getContext['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'C:Context [none] . eq 'getContext['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'C:Context [none] . eq 'getContext['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'C:Context [none] . eq 'getContext['`{_`,_`}['S:Substitution, 'C:Context]] = 'C:Context [none] . eq 'getEqs['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'EQS:EquationSet [none] . eq 'getEqs['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'EQS:EquationSet [none] . eq 'getEqs['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'EQS:EquationSet [none] . eq 'getEqs['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'EQS:EquationSet [none] . eq 'getEqs['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'EQS:EquationSet [ none] . eq 'getEqs['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'EQS:EquationSet [none] . eq 'getFrom['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'ME:ModuleExpression [none] . eq 'getImports['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'IL:ImportList [none] . eq 'getImports['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'IL:ImportList [none] . eq 'getImports['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'IL:ImportList [none] . eq 'getImports['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'IL:ImportList [none] . eq 'getImports['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'IL:ImportList [none] . eq 'getImports['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'IL:ImportList [none] . eq 'getInitialSubstitution['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'S:Substitution [none] . eq 'getInitialTerm['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:Term [none] . eq 'getInitialType['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:Type [none] . eq 'getLabel['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'L:Qid [none] . eq 'getLabel['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'L:Qid [none] . eq 'getLhsSubstitution['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'LS:Substitution [none] . eq 'getMbs['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'MAS:MembAxSet [ none] . eq 'getMbs['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'MAS:MembAxSet [none] . eq 'getMoreVariantsInLayerFlag['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'B:Bool [none] . eq 'getName['C:Constant] = 'qid['substr['string['C:Constant], '0.Zero, 'rfind['string['C:Constant], '".".Char, 'length['string['C:Constant]]]]] [ none] . eq 'getName['V:Variable] = 'qid['substr['string['V:Variable], '0.Zero, 'rfind['string['V:Variable], '":".Char, 'length['string['V:Variable]]]]] [ none] . eq 'getName['fmod_is_sorts_.____endfm['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'Q:Qid [none] . eq 'getName['fmod_is_sorts_.____endfm['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'Q:Qid [none] . eq 'getName['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'Q:Qid [none] . eq 'getName['mod_is_sorts_._____endm['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'Q:Qid [none] . eq 'getName['mod_is_sorts_._____endm['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'Q:Qid [none] . eq 'getName['smod_is_sorts_._______endsm['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'Q:Qid [none] . eq 'getName['smod_is_sorts_._______endsm['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'Q:Qid [none] . eq 'getName['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'Q:Qid [none] . eq 'getName['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'Q:Qid [none] . eq 'getName['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'Q:Qid [none] . eq 'getName['view_from_to_is___endv['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'Q:Qid [none] . eq 'getOpMappings['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'OMS:OpMappingSet [none] . eq 'getOps['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'OPDS:OpDeclSet [ none] . eq 'getOps['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'OPDS:OpDeclSet [none] . eq 'getParent['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'P:Parent [none] . eq 'getRhsSubstitution['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'RS:Substitution [none] . eq 'getRls['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.RuleSet [none] . eq 'getRls['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.RuleSet [none] . eq 'getRls['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'RLS:RuleSet [none] . eq 'getRls['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'RLS:RuleSet [none] . eq 'getRls['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'RLS:RuleSet [ none] . eq 'getRls['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'RLS:RuleSet [none] . eq 'getRule['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'R:Rule [none] . eq 'getRuleSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'RS:Substitution [none] . eq 'getSds['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDefSet [none] . eq 'getSds['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDefSet [none] . eq 'getSds['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDefSet [none] . eq 'getSds['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDFS:StratDefSet [none] . eq 'getSds['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDFS:StratDefSet [none] . eq 'getSds['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDefSet [none] . eq 'getSortMappings['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'SMS:SortMappingSet [none] . eq 'getSorts['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SS:SortSet [none] . eq 'getSorts['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SS:SortSet [none] . eq 'getSorts['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SS:SortSet [none] . eq 'getSorts['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SS:SortSet [none] . eq 'getSorts['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SS:SortSet [none] . eq 'getSorts['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SS:SortSet [none] . eq 'getStateVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'SV:Qid [none] . eq 'getStratMappings['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'TMS:StratMappingSet [none] . eq 'getStrats['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDeclSet [none] . eq 'getStrats['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDeclSet [none] . eq 'getStrats['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDeclSet [none] . eq 'getStrats['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDS:StratDeclSet [none] . eq 'getStrats['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDS:StratDeclSet [none] . eq 'getStrats['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDeclSet [none] . eq 'getSubsorts['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubstitution['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`}['S:Substitution, 'C:Context]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`}['S:Substitution, 'V:Qid]] = 'S:Substitution [ none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'T:Term [none] . eq 'getTerm['`{_`,_`}['T:Term, 'T:Type]] = 'T:Term [none] . eq 'getTermSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'TS:Substitution [none] . eq 'getTo['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'ME':ModuleExpression [none] . eq 'getTrace['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:NarrowingTrace [none] . eq 'getType['C:Constant] = 'qid['substr['string['C:Constant], '_+_['s_[ '0.Zero], 'rfind['string['C:Constant], '".".Char, 'length['string[ 'C:Constant]]]], 'length['string['C:Constant]]]] [none] . eq 'getType['V:Variable] = 'qid['substr['string['V:Variable], '_+_['s_[ '0.Zero], 'rfind['string['V:Variable], '":".Char, 'length['string[ 'V:Variable]]]], 'length['string['V:Variable]]]] [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'T:Type [none] . eq 'getType['`{_`,_`}['T:Term, 'T:Type]] = 'T:Type [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'U:Substitution [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'U:Substitution [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'U:Substitution [none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'UV:Qid [ none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'UV:Qid [none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'UV:Qid [ none] . eq 'getVariableFamily['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'getVariableFamily['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'Q:Qid [none] . eq 'getVariableFamily['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'getVariableFamily['`{_`,_`}['S:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'head['__['E:Nat, 'L:NatList]] = 'E:Nat [none] . eq 'head['__['E:Qid, 'L:QidList]] = 'E:Qid [none] . eq 'insert['E:Qid, 'S:QidSet] = '_;_['E:Qid, 'S:QidSet] [none] . eq 'intersection['S:QidSet, 'N:NeQidSet] = '$intersect['S:QidSet, 'N:NeQidSet, 'none.EmptyQidSet] [none] . eq 'intersection['S:QidSet, 'none.EmptyQidSet] = 'none.EmptyQidSet [none] . eq 'last['__['L:NatList, 'E:Nat]] = 'E:Nat [none] . eq 'last['__['L:QidList, 'E:Qid]] = 'E:Qid [none] . eq 'metaNarrowingApply['M:Module, 'T:Term, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaNarrowingApply['M:Module, 'T:Term, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaNarrowingSearch['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'N:Nat] = 'metaNarrowingSearch['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaNarrowingSearchPath['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'N:Nat] = 'metaNarrowingSearchPath['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaParse['M:Module, 'Q:QidList, 'T:Type?] = 'metaParse['M:Module, 'none.EmptyQidSet, 'Q:QidList, 'T:Type?] [none] . eq 'metaPrettyPrint['M:Module, 'T:Term] = 'metaPrettyPrint['M:Module, 'none.EmptyQidSet, 'T:Term, '__['mixfix.PrintOption, '__['flat.PrintOption, '__['format.PrintOption, '__['number.PrintOption, 'rat.PrintOption]]]], 'none.EmptyQidSet] [none] . eq 'metaPrettyPrint['M:Module, 'T:Term, 'P:PrintOptionSet] = 'metaPrettyPrint['M:Module, 'none.EmptyQidSet, 'T:Term, 'P:PrintOptionSet, 'none.EmptyQidSet] [none] . eq 'metaPrettyPrint['M:Module, 'VS:VariableSet, 'T:Term, 'P:PrintOptionSet] = 'metaPrettyPrint['M:Module, 'VS:VariableSet, 'T:Term, 'P:PrintOptionSet, 'none.EmptyQidSet] [none] . eq 'metaVariantDisjointUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaVariantDisjointUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaVariantUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaVariantUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . eq 'occurs['E:Nat, 'nil.NatList] = 'false.Bool [none] . eq 'occurs['E:Nat, '__['E':Nat, 'L:NatList]] = 'if_then_else_fi['_==_['E:Nat, 'E':Nat], 'true.Bool, 'occurs['E:Nat, 'L:NatList]] [none] . eq 'occurs['E:Qid, 'nil.TypeList] = 'false.Bool [none] . eq 'occurs['E:Qid, '__['E':Qid, 'L:QidList]] = 'if_then_else_fi['_==_['E:Qid, 'E':Qid], 'true.Bool, 'occurs['E:Qid, 'L:QidList]] [none] . eq 'reverse['L:NatList] = '$reverse['L:NatList, 'nil.NatList] [none] . eq 'reverse['L:QidList] = '$reverse['L:QidList, 'nil.TypeList] [none] . eq 'size['L:NatList] = '$size['L:NatList, '0.Zero] [none] . eq 'size['L:QidList] = '$size['L:QidList, '0.Zero] [none] . eq 'tail['__['E:Nat, 'L:NatList]] = 'L:NatList [none] . eq 'tail['__['E:Qid, 'L:QidList]] = 'L:QidList [none] . eq 'union['S:QidSet, 'S':QidSet] = '_;_['S:QidSet, 'S':QidSet] [none] . eq '|_|['S:QidSet] = '$card['S:QidSet, '0.Zero] [none] . endfm ========================================== reduce in META-LEVEL : upModule('META-LEVEL, false) . rewrites: 1 result FModule: fmod 'META-LEVEL is protecting 'META-VIEW . protecting 'BOUND . sorts 'MatchOrUnificationPair ; 'MatchPair ; 'MatchPair? ; 'MatchingProblem ; 'NarrowingApplyResult ; 'NarrowingApplyResult? ; 'NarrowingSearchPathResult ; 'NarrowingSearchPathResult? ; 'NarrowingSearchResult ; 'NarrowingSearchResult? ; 'NarrowingStep ; 'NarrowingTrace ; 'NeVariableSet ; 'Parent ; 'PatternSubjectPair ; 'PrintOption ; 'PrintOptionSet ; 'Result4Tuple ; 'Result4Tuple? ; 'ResultPair ; 'ResultPair? ; 'ResultTriple ; 'ResultTriple? ; 'SmtResult ; 'SmtResult? ; 'SrewriteOption ; 'Strategy? ; 'Substitution? ; 'Trace ; 'Trace? ; 'TraceStep ; 'Type? ; 'UnificandPair ; 'UnificationPair ; 'UnificationPair? ; 'UnificationProblem ; 'UnificationTriple ; 'UnificationTriple? ; 'VariableSet ; 'Variant ; 'Variant? ; 'VariantOption ; 'VariantOptionSet . subsort 'EmptyQidSet < 'VariableSet . subsort 'MatchPair < 'MatchOrUnificationPair . subsort 'MatchPair < 'MatchPair? . subsort 'NarrowingApplyResult < 'NarrowingApplyResult? . subsort 'NarrowingSearchPathResult < 'NarrowingSearchPathResult? . subsort 'NarrowingSearchResult < 'NarrowingSearchResult? . subsort 'NarrowingStep < 'NarrowingTrace . subsort 'Nat < 'Parent . subsort 'NeVariableSet < 'NeQidSet . subsort 'NeVariableSet < 'VariableSet . subsort 'PatternSubjectPair < 'MatchingProblem . subsort 'PrintOption < 'PrintOptionSet . subsort 'Result4Tuple < 'Result4Tuple? . subsort 'ResultPair < 'ResultPair? . subsort 'ResultTriple < 'ResultTriple? . subsort 'SmtResult < 'SmtResult? . subsort 'Strategy < 'Strategy? . subsort 'Substitution < 'Substitution? . subsort 'Trace < 'Trace? . subsort 'TraceStep < 'Trace . subsort 'Type < 'Type? . subsort 'UnificandPair < 'UnificationProblem . subsort 'UnificationPair < 'MatchOrUnificationPair . subsort 'UnificationPair < 'UnificationPair? . subsort 'UnificationTriple < 'UnificationTriple? . subsort 'Variable < 'NeVariableSet . subsort 'VariableSet < 'QidSet . subsort 'Variant < 'Variant? . subsort 'VariantOption < 'VariantOptionSet . op '$applySubstitution : 'NeTermList 'Substitution -> 'Term [none] . op '_/\_ : 'MatchingProblem 'MatchingProblem -> 'MatchingProblem [assoc comm ctor prec(73)] . op '_/\_ : 'UnificationProblem 'UnificationProblem -> 'UnificationProblem [ assoc comm ctor prec(73)] . op '_;_ : 'NeVariableSet 'VariableSet -> 'NeVariableSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'VariableSet 'VariableSet -> 'VariableSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_<=?_ : 'Term 'Term -> 'PatternSubjectPair [ctor prec(71)] . op '_=?_ : 'Term 'Term -> 'UnificandPair [ctor prec(71)] . op '__ : 'NarrowingTrace 'NarrowingTrace -> 'NarrowingTrace [assoc ctor id( 'nil.NarrowingTrace)] . op '__ : 'PrintOptionSet 'PrintOptionSet -> 'PrintOptionSet [assoc comm ctor id('none.PrintOptionSet)] . op '__ : 'Trace 'Trace -> 'Trace [assoc ctor id('nil.Trace) format('d 'n 'd)] . op '__ : 'VariantOptionSet 'VariantOptionSet -> 'VariantOptionSet [assoc comm ctor id('none.VariantOptionSet)] . op '`{_`,_`,_`,_`,_`,_`,_`} : 'Context 'Qid 'Substitution 'Qid 'Term 'Type 'Substitution -> 'NarrowingStep [ctor format('ni 'n++i 'd 'ni 'd 's 'd 'ni 'd 'ni 'd 's 'd 's 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Context 'Qid 'Substitution 'Substitution 'Qid -> 'NarrowingApplyResult [ctor format('d 'n++i 'd 's 'd 'ni 'd 'ni 'd 's 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Substitution 'NarrowingTrace 'Substitution 'Qid -> 'NarrowingSearchPathResult [ctor format('d 'n++i 'd 's 'd 's 'd 's 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Substitution 'Qid 'Substitution 'Qid -> 'NarrowingSearchResult [ctor format('d 'n++i 'd 's 'd 's 'd 'ni 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`} : 'Term 'Substitution 'Nat 'Parent 'Bool -> 'Variant [ ctor] . op '`{_`,_`,_`,_`,_`} : 'Term 'Substitution 'Qid 'Parent 'Bool -> 'Variant [ ctor] . op '`{_`,_`,_`,_`} : 'Term 'Substitution 'Term 'Nat -> 'SmtResult [ctor] . op '`{_`,_`,_`,_`} : 'Term 'Type 'Substitution 'Context -> 'Result4Tuple [ ctor] . op '`{_`,_`,_`} : 'Substitution 'Substitution 'Nat -> 'UnificationTriple [ ctor] . op '`{_`,_`,_`} : 'Substitution 'Substitution 'Qid -> 'UnificationTriple [ ctor] . op '`{_`,_`,_`} : 'Term 'Type 'Rule -> 'TraceStep [ctor] . op '`{_`,_`,_`} : 'Term 'Type 'Substitution -> 'ResultTriple [ctor] . op '`{_`,_`} : 'Substitution 'Context -> 'MatchPair [ctor] . op '`{_`,_`} : 'Substitution 'Nat -> 'UnificationPair [ctor] . op '`{_`,_`} : 'Substitution 'Qid -> 'UnificationPair [ctor] . op '`{_`,_`} : 'Term 'Type -> 'ResultPair [ctor] . op 'ambiguity : 'ResultPair 'ResultPair -> 'ResultPair? [ctor] . op 'ambiguity : 'Strategy 'Strategy -> 'Strategy? [ctor] . op 'anyType : nil -> 'Type? [ctor] . op 'applySubstitution : 'Module 'Term 'Substitution -> 'Term [none] . op 'breadthFirst : nil -> 'SrewriteOption [ctor] . op 'completeName : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaCompleteName) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'delay : nil -> 'VariantOption [ctor] . op 'depthFirst : nil -> 'SrewriteOption [ctor] . op 'downTerm : 'Term 'Universal -> 'Universal [poly(2 0) special( id-hook('MetaLevelOpSymbol, 'metaDownTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'failure : nil -> 'NarrowingApplyResult? [ctor] . op 'failure : nil -> 'NarrowingSearchPathResult? [ctor] . op 'failure : nil -> 'NarrowingSearchResult? [ctor] . op 'failure : nil -> 'Result4Tuple? [ctor] . op 'failure : nil -> 'ResultPair? [ctor] . op 'failure : nil -> 'ResultTriple? [ctor] . op 'failure : nil -> 'SmtResult? [ctor] . op 'failure : nil -> 'Trace? [ctor] . op 'failureIncomplete : nil -> 'NarrowingApplyResult? [ctor] . op 'failureIncomplete : nil -> 'NarrowingSearchPathResult? [ctor] . op 'failureIncomplete : nil -> 'NarrowingSearchResult? [ctor] . op 'failureIncomplete : nil -> 'ResultTriple? [ctor] . op 'filter : nil -> 'VariantOption [ctor] . op 'flat : nil -> 'PrintOption [ctor] . op 'format : nil -> 'PrintOption [ctor] . op 'getAccumulatedSubstitution : 'NarrowingSearchResult -> 'Substitution [ none] . op 'getAccumulatedSubstitution : 'NarrowingStep -> 'Substitution [none] . op 'getContext : 'MatchPair -> 'Context [none] . op 'getContext : 'NarrowingApplyResult -> 'Context [none] . op 'getContext : 'NarrowingStep -> 'Context [none] . op 'getContext : 'Result4Tuple -> 'Context [none] . op 'getInitialSubstitution : 'NarrowingSearchPathResult -> 'Substitution [ none] . op 'getInitialTerm : 'NarrowingSearchPathResult -> 'Term [none] . op 'getInitialType : 'NarrowingSearchPathResult -> 'Type [none] . op 'getKind : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGetKind) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'getKinds : '`[Module`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGetKinds) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'getLabel : 'NarrowingApplyResult -> 'Qid [none] . op 'getLabel : 'NarrowingStep -> 'Qid [none] . op 'getLhsSubstitution : 'UnificationTriple -> 'Substitution [none] . op 'getMoreVariantsInLayerFlag : 'Variant -> 'Bool [none] . op 'getParent : 'Variant -> 'Parent [none] . op 'getRhsSubstitution : 'UnificationTriple -> 'Substitution [none] . op 'getRule : 'TraceStep -> 'Rule [none] . op 'getRuleSubstitution : 'NarrowingApplyResult -> 'Substitution [none] . op 'getStateVariableFamily : 'NarrowingSearchResult -> 'Qid [none] . op 'getSubstitution : 'MatchPair -> 'Substitution [none] . op 'getSubstitution : 'Result4Tuple -> 'Substitution [none] . op 'getSubstitution : 'ResultTriple -> 'Substitution [none] . op 'getSubstitution : 'UnificationPair -> 'Substitution [none] . op 'getSubstitution : 'Variant -> 'Substitution [none] . op 'getTerm : 'NarrowingApplyResult -> 'Term [none] . op 'getTerm : 'NarrowingSearchResult -> 'Term [none] . op 'getTerm : 'NarrowingStep -> 'Term [none] . op 'getTerm : 'Result4Tuple -> 'Term [none] . op 'getTerm : 'ResultPair -> 'Term [none] . op 'getTerm : 'ResultTriple -> 'Term [none] . op 'getTerm : 'TraceStep -> 'Term [none] . op 'getTerm : 'Variant -> 'Term [none] . op 'getTermSubstitution : 'NarrowingApplyResult -> 'Substitution [none] . op 'getTrace : 'NarrowingSearchPathResult -> 'NarrowingTrace [none] . op 'getType : 'NarrowingApplyResult -> 'Type [none] . op 'getType : 'NarrowingSearchResult -> 'Type [none] . op 'getType : 'NarrowingStep -> 'Type [none] . op 'getType : 'Result4Tuple -> 'Type [none] . op 'getType : 'ResultPair -> 'Type [none] . op 'getType : 'ResultTriple -> 'Type [none] . op 'getType : 'TraceStep -> 'Type [none] . op 'getUnifier : 'NarrowingSearchPathResult -> 'Substitution [none] . op 'getUnifier : 'NarrowingSearchResult -> 'Substitution [none] . op 'getUnifier : 'NarrowingStep -> 'Substitution [none] . op 'getUnifierVariableFamily : 'NarrowingSearchPathResult -> 'Qid [none] . op 'getUnifierVariableFamily : 'NarrowingSearchResult -> 'Qid [none] . op 'getUnifierVariableFamily : 'NarrowingStep -> 'Qid [none] . op 'getVariableFamily : 'NarrowingApplyResult -> 'Qid [none] . op 'getVariableFamily : 'UnificationPair -> 'Qid [none] . op 'getVariableFamily : 'UnificationTriple -> 'Qid [none] . op 'getVariableFamily : 'Variant -> 'Qid [none] . op 'glbSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [ special( id-hook('MetaLevelOpSymbol, 'metaGlbSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'leastSort : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaLeastSort) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'lesserSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaLesserSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'maximalAritySet : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMaximalAritySet) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'maximalSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMaximalSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaApply : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Substitution?`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaApply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaCheck : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaCheck) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'legacyMetaDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'metaDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaFrewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaFrewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetIrredundantVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaGetIrredundantVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetIrredundantVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'metaGetIrredundantVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaGetVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'metaGetVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaIrredundantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'metaIrredundantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaIrredundantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaIrredundantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaMatch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Substitution?`] [special( id-hook('MetaLevelOpSymbol, 'metaMatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrow : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[Bool`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaNarrow2) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrow : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaNarrow) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingApply : 'Module 'Term 'TermList 'Qid 'Nat -> 'NarrowingApplyResult? [none] . op 'metaNarrowingApply : 'Module 'Term 'TermList 'Qid 'VariantOptionSet 'Nat -> 'NarrowingApplyResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingApply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingSearch : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'Nat -> 'NarrowingSearchResult? [none] . op 'metaNarrowingSearch : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'VariantOptionSet 'Nat -> 'NarrowingSearchResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingSearchPath : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'Nat -> 'NarrowingSearchPathResult? [none] . op 'metaNarrowingSearchPath : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'VariantOptionSet 'Nat -> 'NarrowingSearchPathResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingSearchPath) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNormalize : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaNormalize) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaParse : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [ none] . op 'metaParse : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaParse) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaParseStrategy : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[StrategyList`,Strategy?`] [special( id-hook('MetaLevelOpSymbol, 'metaParseStrategy) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaPrettyPrint) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrettyPrintStrategy : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[StrategyList`,Strategy?`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaPrettyPrintStrategy) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrintToString : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[String`] [special( id-hook('MetaLevelOpSymbol, 'metaPrintToString) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaReduce : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaReduce) op-hook('qidSymbol, ', nil, 'Qid) op-hook('metaTermSymbol, '_`[_`], 'Qid 'NeGroundTermList, 'GroundTerm) op-hook('metaArgSymbol, '_`,_, 'NeGroundTermList 'GroundTermList, 'NeGroundTermList) op-hook('emptyTermListSymbol, 'empty, nil, 'GroundTermList) op-hook('assignmentSymbol, '_<-_, 'Variable 'Term, 'Assignment) op-hook('emptySubstitutionSymbol, 'none, nil, 'Substitution) op-hook('substitutionSymbol, '_;_, 'Substitution 'Substitution, 'Substitution) op-hook('holeSymbol, '`[`], nil, 'Context) op-hook('noConditionSymbol, 'nil, nil, 'EqCondition) op-hook('equalityConditionSymbol, '_=_, 'Term 'Term, 'EqCondition) op-hook('sortTestConditionSymbol, '_:_, 'Term 'Sort, 'EqCondition) op-hook('matchConditionSymbol, '_:=_, 'Term 'Term, 'EqCondition) op-hook('rewriteConditionSymbol, '_=>_, 'Term 'Term, 'Condition) op-hook('conjunctionSymbol, '_/\_, 'EqCondition 'EqCondition, 'EqCondition) op-hook('failStratSymbol, 'fail, nil, 'Strategy) op-hook('idleStratSymbol, 'idle, nil, 'Strategy) op-hook('allStratSymbol, 'all, nil, 'RuleApplication) op-hook('applicationStratSymbol, '_`[_`]`{_`}, 'Qid 'Substitution 'StrategyList, 'RuleApplication) op-hook('topStratSymbol, 'top, 'RuleApplication, 'Strategy) op-hook('matchStratSymbol, 'match_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('xmatchStratSymbol, 'xmatch_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('amatchStratSymbol, 'amatch_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('unionStratSymbol, '_|_, 'Strategy 'Strategy, 'Strategy) op-hook('concatStratSymbol, '_;_, 'Strategy 'Strategy, 'Strategy) op-hook('orelseStratSymbol, '_or-else_, 'Strategy 'Strategy, 'Strategy) op-hook('plusStratSymbol, '_+, 'Strategy, 'Strategy) op-hook('conditionalStratSymbol, '_?_:_, 'Strategy 'Strategy 'Strategy, 'Strategy) op-hook('matchrewStratSymbol, 'matchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('xmatchrewStratSymbol, 'xmatchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('amatchrewStratSymbol, 'amatchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('callStratSymbol, '_`[`[_`]`], 'Qid 'TermList, 'CallStrategy) op-hook('oneStratSymbol, 'one, 'Strategy, 'Strategy) op-hook('starStratSymbol, '_*, 'Strategy, 'Strategy) op-hook('normalizationStratSymbol, '_!, 'Strategy, 'Strategy) op-hook('notStratSymbol, 'not, 'Strategy, 'Strategy) op-hook('testStratSymbol, 'test, 'Strategy, 'Strategy) op-hook('tryStratSymbol, 'try, 'Strategy, 'Strategy) op-hook('usingStratSymbol, '_using_, 'Variable 'Strategy, 'UsingPair) op-hook('usingListStratSymbol, '_`,_, 'UsingPairSet 'UsingPairSet, 'UsingPairSet) op-hook('emptyStratListSymbol, 'empty, nil, 'StrategyList) op-hook('stratListSymbol, '_`,_, 'StrategyList 'StrategyList, 'StrategyList) op-hook('headerSymbol, '_`{_`}, 'Qid 'ParameterDeclList, 'Header) op-hook('parameterDeclSymbol, '_::_, 'Sort 'ModuleExpression, 'ParameterDecl) op-hook('parameterDeclListSymbol, '_`,_, 'ParameterDeclList 'ParameterDeclList, 'ParameterDeclList) op-hook('protectingSymbol, 'protecting_., 'ModuleExpression, 'Import) op-hook('extendingSymbol, 'extending_., 'ModuleExpression, 'Import) op-hook('includingSymbol, 'including_., 'ModuleExpression, 'Import) op-hook('generatedBySymbol, 'generated-by_., 'ModuleExpression, 'Import) op-hook('nilImportListSymbol, 'nil, nil, 'ImportList) op-hook('importListSymbol, '__, 'ImportList 'ImportList, 'ImportList) op-hook('emptySortSetSymbol, 'none, nil, 'QidSet) op-hook('sortSetSymbol, '_;_, 'QidSet 'QidSet, 'QidSet) op-hook('subsortSymbol, 'subsort_<_., 'Sort 'Sort, 'SubsortDecl) op-hook('emptySubsortDeclSetSymbol, 'none, nil, 'SubsortDeclSet) op-hook('subsortDeclSetSymbol, '__, 'SubsortDeclSet 'SubsortDeclSet, 'SubsortDeclSet) op-hook('nilQidListSymbol, 'nil, nil, 'QidList) op-hook('qidListSymbol, '__, 'QidList 'QidList, 'QidList) op-hook('emptyQidSetSymbol, 'none, nil, 'QidSet) op-hook('qidSetSymbol, '_;_, 'QidSet 'QidSet, 'QidSet) op-hook('succSymbol, 's_, 'Nat, 'NzNat) op-hook('natListSymbol, '__, 'NatList 'NatList, 'NatList) op-hook('unboundedSymbol, 'unbounded, nil, 'Bound) op-hook('noParentSymbol, 'none, nil, 'Parent) op-hook('stringSymbol, ', nil, 'Char) op-hook('sortRenamingSymbol, 'sort_to_, 'Qid 'Qid, 'Renaming) op-hook('opRenamingSymbol, 'op_to_`[_`], 'Qid 'Qid 'AttrSet, 'Renaming) op-hook('opRenamingSymbol2, 'op_:_->_to_`[_`], 'Qid 'TypeList 'Type 'Qid 'AttrSet, 'Renaming) op-hook('labelRenamingSymbol, 'label_to_, 'Qid 'Qid, 'Renaming) op-hook('stratRenamingSymbol, 'strat_to_, 'Qid 'Qid, 'Renaming) op-hook('stratRenamingSymbol2, 'strat_:_@_to_, 'Qid 'TypeList 'Type 'Qid, 'Renaming) op-hook('renamingSetSymbol, '_`,_, 'RenamingSet 'RenamingSet, 'RenamingSet) op-hook('sumSymbol, '_+_, 'ModuleExpression 'ModuleExpression, 'ModuleExpression) op-hook('renamingSymbol, '_*`(_`), 'ModuleExpression 'RenamingSet, 'ModuleExpression) op-hook('instantiationSymbol, '_`{_`}, 'Expression 'NeParameterList, 'Expression) op-hook('termHookSymbol, 'term-hook, 'Qid 'Term, 'Hook) op-hook('hookListSymbol, '__, 'HookList 'HookList, 'HookList) op-hook('idHookSymbol, 'id-hook, 'Qid 'QidList, 'Hook) op-hook('opHookSymbol, 'op-hook, 'Qid 'Qid 'QidList 'Qid, 'Hook) op-hook('assocSymbol, 'assoc, nil, 'Attr) op-hook('commSymbol, 'comm, nil, 'Attr) op-hook('idemSymbol, 'idem, nil, 'Attr) op-hook('iterSymbol, 'iter, nil, 'Attr) op-hook('idSymbol, 'id, 'Term, 'Attr) op-hook('leftIdSymbol, 'left-id, 'Term, 'Attr) op-hook('rightIdSymbol, 'right-id, 'Term, 'Attr) op-hook('stratSymbol, 'strat, 'NeNatList, 'Attr) op-hook('memoSymbol, 'memo, nil, 'Attr) op-hook('precSymbol, 'prec, 'Nat, 'Attr) op-hook('gatherSymbol, 'gather, 'QidList, 'Attr) op-hook('formatSymbol, 'format, 'QidList, 'Attr) op-hook('latexSymbol, 'latex, 'String, 'Attr) op-hook('ctorSymbol, 'ctor, nil, 'Attr) op-hook('frozenSymbol, 'frozen, 'NeNatList, 'Attr) op-hook('polySymbol, 'poly, 'NeNatList, 'Attr) op-hook('configSymbol, 'config, nil, 'Attr) op-hook('objectSymbol, 'object, nil, 'Attr) op-hook('msgSymbol, 'msg, nil, 'Attr) op-hook('portalSymbol, 'portal, nil, 'Attr) op-hook('pconstSymbol, 'pconst, nil, 'Attr) op-hook('specialSymbol, 'special, 'NeHookList, 'Attr) op-hook('labelSymbol, 'label, 'Qid, 'Attr) op-hook('metadataSymbol, 'metadata, 'String, 'Attr) op-hook('owiseSymbol, 'owise, nil, 'Attr) op-hook('variantAttrSymbol, 'variant, nil, 'Attr) op-hook('narrowingSymbol, 'narrowing, nil, 'Attr) op-hook('nonexecSymbol, 'nonexec, nil, 'Attr) op-hook('printSymbol, 'print, 'QidList, 'Attr) op-hook('emptyAttrSetSymbol, 'none, nil, 'AttrSet) op-hook('attrSetSymbol, '__, 'AttrSet 'AttrSet, 'AttrSet) op-hook('opDeclSymbol, 'op_:_->_`[_`]., 'Qid 'TypeList 'Type 'AttrSet, 'OpDecl) op-hook('opDeclSetSymbol, '__, 'OpDeclSet 'OpDeclSet, 'OpDeclSet) op-hook('emptyOpDeclSetSymbol, 'none, nil, 'OpDeclSet) op-hook('mbSymbol, 'mb_:_`[_`]., 'Term 'Sort 'AttrSet, 'MembAx) op-hook('cmbSymbol, 'cmb_:_if_`[_`]., 'Term 'Sort 'EqCondition 'AttrSet, 'MembAx) op-hook('emptyMembAxSetSymbol, 'none, nil, 'MembAxSet) op-hook('membAxSetSymbol, '__, 'MembAxSet 'MembAxSet, 'MembAxSet) op-hook('eqSymbol, 'eq_=_`[_`]., 'Term 'Term 'AttrSet, 'Equation) op-hook('ceqSymbol, 'ceq_=_if_`[_`]., 'Term 'Term 'EqCondition 'AttrSet, 'Equation) op-hook('emptyEquationSetSymbol, 'none, nil, 'EquationSet) op-hook('equationSetSymbol, '__, 'EquationSet 'EquationSet, 'EquationSet) op-hook('rlSymbol, 'rl_=>_`[_`]., 'Term 'Term 'AttrSet, 'Rule) op-hook('crlSymbol, 'crl_=>_if_`[_`]., 'Term 'Term 'Condition 'AttrSet, 'Rule) op-hook('emptyRuleSetSymbol, 'none, nil, 'RuleSet) op-hook('ruleSetSymbol, '__, 'RuleSet 'RuleSet, 'RuleSet) op-hook('stratDeclSymbol, 'strat_:_@_`[_`]., 'Qid 'TypeList 'Type 'AttrSet, 'StratDecl) op-hook('emptyStratDeclSetSymbol, 'none, nil, 'StratDeclSet) op-hook('stratDeclSetSymbol, '__, 'StratDeclSet 'StratDeclSet, 'StratDeclSet) op-hook('sdSymbol, 'sd_:=_`[_`]., 'CallStrategy 'Strategy 'AttrSet, 'StratDefinition) op-hook('csdSymbol, 'csd_:=_if_`[_`]., 'CallStrategy 'Strategy 'EqCondition 'AttrSet, 'StratDefinition) op-hook('emptyStratDefSetSymbol, 'none, nil, 'StratDefSet) op-hook('stratDefSetSymbol, '__, 'StratDefSet 'StratDefSet, 'StratDefSet) op-hook('fmodSymbol, 'fmod_is_sorts_.____endfm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet, 'FModule) op-hook('fthSymbol, 'fth_is_sorts_.____endfth, 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet, 'FTheory) op-hook('modSymbol, 'mod_is_sorts_._____endm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet, 'SModule) op-hook('thSymbol, 'th_is_sorts_._____endth, 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet, 'STheory) op-hook('smodSymbol, 'smod_is_sorts_._______endsm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet, 'StratModule) op-hook('sthSymbol, 'sth_is_sorts_._______endsth, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet, 'StratTheory) op-hook('sortMappingSymbol, 'sort_to_., 'Sort 'Sort, 'SortMapping) op-hook('emptySortMappingSetSymbol, 'none, nil, 'SortMappingSet) op-hook('sortMappingSetSymbol, '__, 'SortMappingSet 'SortMappingSet, 'SortMappingSet) op-hook('opMappingSymbol, 'op_to_., 'Qid 'Qid, 'OpMapping) op-hook('opSpecificMappingSymbol, 'op_:_->_to_., 'Qid 'TypeList 'Type 'Qid, 'OpMapping) op-hook('opTermMappingSymbol, 'op_to`term_., 'Term 'Term, 'OpMapping) op-hook('emptyOpMappingSetSymbol, 'none, nil, 'OpMappingSet) op-hook('opMappingSetSymbol, '__, 'OpMappingSet 'OpMappingSet, 'OpMappingSet) op-hook('stratMappingSymbol, 'strat_to_., 'Qid 'Qid, 'StratMapping) op-hook('stratSpecificMappingSymbol, 'strat_:_@_to_., 'Qid 'TypeList 'Type 'Qid, 'StratMapping) op-hook('stratExprMappingSymbol, 'strat_to`expr_., 'CallStrategy 'Strategy, 'StratMapping) op-hook('emptyStratMappingSetSymbol, 'none, nil, 'StratMappingSet) op-hook('stratMappingSetSymbol, '__, 'StratMappingSet 'StratMappingSet, 'StratMappingSet) op-hook('viewSymbol, 'view_from_to_is___endv, 'Header 'ModuleExpression 'ModuleExpression 'SortMappingSet 'OpMappingSet 'StratMappingSet, 'View) op-hook('anyTypeSymbol, 'anyType, nil, 'Type?) op-hook('unificandPairSymbol, '_=?_, 'Term 'Term, 'UnificandPair) op-hook('unificationConjunctionSymbol, '_/\_, 'UnificationProblem 'UnificationProblem, 'UnificationProblem) op-hook('patternSubjectPairSymbol, '_<=?_, 'Term 'Term, 'PatternSubjectPair) op-hook('matchingConjunctionSymbol, '_/\_, 'MatchingProblem 'MatchingProblem, 'MatchingProblem) op-hook('resultPairSymbol, '`{_`,_`}, 'Term 'Type, 'ResultPair) op-hook('resultTripleSymbol, '`{_`,_`,_`}, 'Term 'Type 'Substitution, 'ResultTriple) op-hook('result4TupleSymbol, '`{_`,_`,_`,_`}, 'Term 'Type 'Substitution 'Context, 'Result4Tuple) op-hook('matchPairSymbol, '`{_`,_`}, 'Substitution 'Context, 'MatchPair) op-hook('unificationTripleSymbol, '`{_`,_`,_`}, 'Substitution 'Substitution 'Qid, 'UnificationTriple) op-hook('variantSymbol, '`{_`,_`,_`,_`,_`}, 'Term 'Substitution 'Qid 'Parent 'Bool, 'Variant) op-hook('narrowingApplyResultSymbol, '`{_`,_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Context 'Qid 'Substitution 'Substitution 'Qid, 'NarrowingApplyResult) op-hook('narrowingSearchResultSymbol, '`{_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Substitution 'Qid 'Substitution 'Qid, 'NarrowingSearchResult) op-hook('traceStepSymbol, '`{_`,_`,_`}, 'Term 'Type 'Rule, 'TraceStep) op-hook('nilTraceSymbol, 'nil, nil, 'Trace) op-hook('traceSymbol, '__, 'Trace 'Trace, 'Trace) op-hook('narrowingStepSymbol, '`{_`,_`,_`,_`,_`,_`,_`}, 'Context 'Qid 'Substitution 'Qid 'Term 'Type 'Substitution, 'NarrowingStep) op-hook('nilNarrowingTraceSymbol, 'nil, nil, 'NarrowingTrace) op-hook('narrowingTraceSymbol, '__, 'NarrowingTrace 'NarrowingTrace, 'NarrowingTrace) op-hook('narrowingSearchPathResultSymbol, '`{_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Substitution 'NarrowingTrace 'Substitution 'Qid, 'NarrowingSearchPathResult) op-hook('smtResultSymbol, '`{_`,_`,_`,_`}, 'Term 'Substitution 'Term 'Nat, 'SmtResult) op-hook('noParseSymbol, 'noParse, 'Nat, 'ResultPair?) op-hook('ambiguitySymbol, 'ambiguity, 'ResultPair 'ResultPair, 'ResultPair?) op-hook('failure2Symbol, 'failure, nil, 'ResultPair?) op-hook('failure3Symbol, 'failure, nil, 'ResultTriple?) op-hook('failureIncomplete3Symbol, 'failureIncomplete, nil, 'ResultTriple?) op-hook('failure4Symbol, 'failure, nil, 'Result4Tuple?) op-hook('noUnifierPairSymbol, 'noUnifier, nil, 'UnificationPair?) op-hook('noUnifierTripleSymbol, 'noUnifier, nil, 'UnificationTriple?) op-hook('noUnifierIncompletePairSymbol, 'noUnifierIncomplete, nil, 'UnificationPair?) op-hook('noUnifierIncompleteTripleSymbol, 'noUnifierIncomplete, nil, 'UnificationTriple?) op-hook('noVariantSymbol, 'noVariant, nil, 'Variant?) op-hook('noVariantIncompleteSymbol, 'noVariantIncomplete, nil, 'Variant?) op-hook('narrowingApplyFailureSymbol, 'failure, nil, 'NarrowingApplyResult?) op-hook('narrowingApplyFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingApplyResult?) op-hook('narrowingSearchFailureSymbol, 'failure, nil, 'NarrowingSearchResult?) op-hook('narrowingSearchFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingSearchResult?) op-hook('narrowingSearchPathFailureSymbol, 'failure, nil, 'NarrowingSearchPathResult?) op-hook('narrowingSearchPathFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingSearchPathResult?) op-hook('noMatchSubstSymbol, 'noMatch, nil, 'Substitution?) op-hook('noMatchIncompleteSubstSymbol, 'noMatchIncomplete, nil, 'Substitution?) op-hook('noMatchPairSymbol, 'noMatch, nil, 'MatchPair?) op-hook('failureTraceSymbol, 'failure, nil, 'Trace?) op-hook('smtFailureSymbol, 'failure, nil, 'SmtResult?) op-hook('noStratParseSymbol, 'noStratParse, 'Nat, 'Strategy?) op-hook('stratAmbiguitySymbol, 'ambiguity, 'Strategy 'Strategy, 'Strategy?) op-hook('mixfixSymbol, 'mixfix, nil, 'PrintOption) op-hook('withParensSymbol, 'with-parens, nil, 'PrintOption) op-hook('withSortsSymbol, 'with-sorts, nil, 'PrintOption) op-hook('flatSymbol, 'flat, nil, 'PrintOption) op-hook('formatPrintOptionSymbol, 'format, nil, 'PrintOption) op-hook('numberSymbol, 'number, nil, 'PrintOption) op-hook('ratSymbol, 'rat, nil, 'PrintOption) op-hook('emptyPrintOptionSetSymbol, 'none, nil, 'PrintOptionSet) op-hook('printOptionSetSymbol, '__, 'PrintOptionSet 'PrintOptionSet, 'PrintOptionSet) op-hook('delaySymbol, 'delay, nil, 'VariantOption) op-hook('filterSymbol, 'filter, nil, 'VariantOption) op-hook('emptyVariantOptionSetSymbol, 'none, nil, 'VariantOptionSet) op-hook('variantOptionSetSymbol, '__, 'VariantOptionSet 'VariantOptionSet, 'VariantOptionSet) op-hook('breadthFirstSymbol, 'breadthFirst, nil, 'SrewriteOption) op-hook('depthFirstSymbol, 'depthFirst, nil, 'SrewriteOption) op-hook('legacyUnificationPairSymbol, '`{_`,_`}, 'Substitution 'Nat, 'UnificationPair) op-hook('legacyUnificationTripleSymbol, '`{_`,_`,_`}, 'Substitution 'Substitution 'Nat, 'UnificationTriple) op-hook('legacyVariantSymbol, '`{_`,_`,_`,_`,_`}, 'Term 'Substitution 'Nat 'Parent 'Bool, 'Variant) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op 'metaRewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaRewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSearch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSearchPath : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Trace?`] [special( id-hook('MetaLevelOpSymbol, 'metaSearchPath) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSmtSearch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[SmtResult?`] [special( id-hook('MetaLevelOpSymbol, 'metaSmtSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSrewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[StrategyList`,Strategy?`] '`[SrewriteOption`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaSrewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaUnify : '`[Module`] '`[UnificationProblem`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'legacyMetaVariantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [none] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantMatch : '`[Module`] '`[MatchingProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Substitution?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantMatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaVariantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [none] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaXapply : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Substitution?`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Result4Tuple?`] [special( id-hook('MetaLevelOpSymbol, 'metaXapply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaXmatch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaXmatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'minimalSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMinimalSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'mixfix : nil -> 'PrintOption [ctor] . op 'nil : nil -> 'NarrowingTrace [ctor] . op 'nil : nil -> 'Trace [ctor] . op 'noMatch : nil -> 'MatchPair? [ctor] . op 'noMatch : nil -> 'Substitution? [ctor] . op 'noMatchIncomplete : nil -> 'Substitution? [ctor] . op 'noParse : 'Nat -> 'ResultPair? [ctor] . op 'noStratParse : 'Nat -> 'Strategy? [ctor] . op 'noUnifier : nil -> 'UnificationPair? [ctor] . op 'noUnifier : nil -> 'UnificationTriple? [ctor] . op 'noUnifierIncomplete : nil -> 'UnificationPair? [ctor] . op 'noUnifierIncomplete : nil -> 'UnificationTriple? [ctor] . op 'noVariant : nil -> 'Variant? [ctor] . op 'noVariantIncomplete : nil -> 'Variant? [ctor] . op 'none : nil -> 'Parent [none] . op 'none : nil -> 'PrintOptionSet [ctor] . op 'none : nil -> 'VariantOptionSet [ctor] . op 'number : nil -> 'PrintOption [ctor] . op 'rat : nil -> 'PrintOption [ctor] . op 'sameKind : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaSameKind) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'sortLeq : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaSortLeq) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upEqs : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[EquationSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpEqs) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upImports : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ImportList`] [special( id-hook('MetaLevelOpSymbol, 'metaUpImports) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upMbs : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[MembAxSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpMbs) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upModule : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[Module`] [special( id-hook('MetaLevelOpSymbol, 'metaUpModule) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upOpDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[OpDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpOpDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upRls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[RuleSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpRls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSds : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[StratDefSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSds) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSorts : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upStratDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[StratDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpStratDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSubsortDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[SubsortDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSubsortDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upTerm : 'Universal -> 'Term [poly(1) special( id-hook('MetaLevelOpSymbol, 'metaUpTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upView : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[View`] [special( id-hook('MetaLevelOpSymbol, 'metaUpView) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : 'Module -> 'Bool [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedModule) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : '`[Module`] '`[Substitution?`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedSubstitution) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'with-parens : nil -> 'PrintOption [ctor] . op 'with-sorts : nil -> 'PrintOption [ctor] . none eq '$applySubstitution['Q:Qid, 'S:Substitution] = 'Q:Qid [owise] . eq '$applySubstitution['V:Variable, '_;_['S:Substitution, '_<-_['V:Variable, 'T:Term]]] = 'T:Term [none] . eq '$applySubstitution['_`,_['T:Term, 'TL:NeTermList], 'S:Substitution] = '_`,_['$applySubstitution['T:Term, 'S:Substitution], '$applySubstitution[ 'TL:NeTermList, 'S:Substitution]] [none] . eq '$applySubstitution['_`[_`]['Q:Qid, 'TL:NeTermList], 'S:Substitution] = '_`[_`]['Q:Qid, '$applySubstitution['TL:NeTermList, 'S:Substitution]] [ none] . eq 'applySubstitution['M:Module, 'T:Term, 'S:Substitution] = 'getTerm[ 'metaNormalize['M:Module, '$applySubstitution['T:Term, 'S:Substitution]]] [ none] . eq 'getAccumulatedSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'A:Substitution [none] . eq 'getAccumulatedSubstitution['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'A:Substitution [ none] . eq 'getContext['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'C:Context [none] . eq 'getContext['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'C:Context [none] . eq 'getContext['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'C:Context [none] . eq 'getContext['`{_`,_`}['S:Substitution, 'C:Context]] = 'C:Context [none] . eq 'getInitialSubstitution['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'S:Substitution [none] . eq 'getInitialTerm['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:Term [none] . eq 'getInitialType['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:Type [none] . eq 'getLabel['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'L:Qid [none] . eq 'getLabel['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'L:Qid [none] . eq 'getLhsSubstitution['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'LS:Substitution [none] . eq 'getMoreVariantsInLayerFlag['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'B:Bool [none] . eq 'getParent['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'P:Parent [none] . eq 'getRhsSubstitution['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'RS:Substitution [none] . eq 'getRule['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'R:Rule [none] . eq 'getRuleSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'RS:Substitution [none] . eq 'getStateVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'SV:Qid [none] . eq 'getSubstitution['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`}['S:Substitution, 'C:Context]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`}['S:Substitution, 'V:Qid]] = 'S:Substitution [ none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'T:Term [none] . eq 'getTerm['`{_`,_`}['T:Term, 'T:Type]] = 'T:Term [none] . eq 'getTermSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'TS:Substitution [none] . eq 'getTrace['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:NarrowingTrace [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'T:Type [none] . eq 'getType['`{_`,_`}['T:Term, 'T:Type]] = 'T:Type [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'U:Substitution [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'U:Substitution [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'U:Substitution [none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'UV:Qid [ none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'UV:Qid [none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'UV:Qid [ none] . eq 'getVariableFamily['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'getVariableFamily['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'Q:Qid [none] . eq 'getVariableFamily['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'getVariableFamily['`{_`,_`}['S:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'metaNarrowingApply['M:Module, 'T:Term, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaNarrowingApply['M:Module, 'T:Term, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaNarrowingSearch['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'N:Nat] = 'metaNarrowingSearch['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaNarrowingSearchPath['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'N:Nat] = 'metaNarrowingSearchPath['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaParse['M:Module, 'Q:QidList, 'T:Type?] = 'metaParse['M:Module, 'none.EmptyQidSet, 'Q:QidList, 'T:Type?] [none] . eq 'metaPrettyPrint['M:Module, 'T:Term] = 'metaPrettyPrint['M:Module, 'none.EmptyQidSet, 'T:Term, '__['mixfix.PrintOption, '__['flat.PrintOption, '__['format.PrintOption, '__['number.PrintOption, 'rat.PrintOption]]]], 'none.EmptyQidSet] [none] . eq 'metaPrettyPrint['M:Module, 'T:Term, 'P:PrintOptionSet] = 'metaPrettyPrint['M:Module, 'none.EmptyQidSet, 'T:Term, 'P:PrintOptionSet, 'none.EmptyQidSet] [none] . eq 'metaPrettyPrint['M:Module, 'VS:VariableSet, 'T:Term, 'P:PrintOptionSet] = 'metaPrettyPrint['M:Module, 'VS:VariableSet, 'T:Term, 'P:PrintOptionSet, 'none.EmptyQidSet] [none] . eq 'metaVariantDisjointUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaVariantDisjointUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaVariantUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaVariantUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . endfm ========================================== reduce in META-LEVEL : upModule('BOOL, true) . rewrites: 1 result FModule: fmod 'BOOL is nil sorts 'Bool . none op '_=/=_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '_and_ : 'Bool 'Bool -> 'Bool [assoc comm prec(55)] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op '_or_ : 'Bool 'Bool -> 'Bool [assoc comm prec(59)] . op '_xor_ : 'Bool 'Bool -> 'Bool [assoc comm prec(57)] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . none eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . endfm ========================================== reduce in META-LEVEL : metaReduce(upModule('BOOL, true), '_==_['true.Bool, 'false.Bool]) . rewrites: 3 result ResultPair: {'false.Bool, 'Bool} ========================================== reduce in META-LEVEL : upModule('BOOL, false) . rewrites: 1 result FModule: fmod 'BOOL is protecting 'BOOL-OPS . protecting 'TRUTH . sorts none . none none none none endfm ========================================== reduce in META-LEVEL : metaReduce(upModule('BOOL, false), '_==_['true.Bool, 'false.Bool]) . rewrites: 3 result ResultPair: {'false.Bool, 'Bool} ========================================== reduce in META-LEVEL : upModule('TRUTH, true) . rewrites: 1 result FModule: fmod 'TRUTH is nil sorts 'Bool . none op '_=/=_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . none none endfm ========================================== reduce in META-LEVEL : upModule('NAT, true) . rewrites: 1 result FModule: fmod 'NAT is nil sorts 'Bool ; 'Nat ; 'NzNat ; 'Zero . subsort 'NzNat < 'Nat . subsort 'Zero < 'Nat . op '0 : nil -> 'Zero [ctor] . op '_&_ : 'Nat 'Nat -> 'Nat [assoc comm prec(53) special( id-hook('ACU_NumberOpSymbol, '&) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'Nat 'Nat -> 'Nat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'NzNat 'NzNat -> 'NzNat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'Nat 'Nat -> 'Nat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_<<_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '<<) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_<=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_=/=_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '_>=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>>_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '>>) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_>_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_^_ : 'Nat 'Nat -> 'Nat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_^_ : 'NzNat 'Nat -> 'NzNat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_and_ : 'Bool 'Bool -> 'Bool [assoc comm prec(55)] . op '_divides_ : 'NzNat 'Nat -> 'Bool [prec(51) special( id-hook('NumberOpSymbol, 'divides) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op '_or_ : 'Bool 'Bool -> 'Bool [assoc comm prec(59)] . op '_quo_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'quo) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_rem_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'rem) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_xor_ : 'Bool 'Bool -> 'Bool [assoc comm prec(57)] . op '_xor_ : 'Nat 'Nat -> 'Nat [assoc comm prec(55) special( id-hook('ACU_NumberOpSymbol, 'xor) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'Nat 'Nat -> 'Nat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'gcd : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'gcd : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op 'lcm : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lcm : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'max : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'max : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'modExp : '`[Nat`] '`[Nat`] '`[Nat`] -> '`[Nat`] [special( id-hook('NumberOpSymbol, 'modExp) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op 's_ : 'Nat -> 'NzNat [iter ctor special( id-hook('SuccSymbol, nil) term-hook('zeroTerm, '0.Zero))] . op 'sd : 'Nat 'Nat -> 'Nat [comm special( id-hook('CUI_NumberOpSymbol, 'sd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . none eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . endfm ========================================== reduce in META-LEVEL : metaReduce(upModule('NAT, true), '_+_[upTerm(100), upTerm(66)]) . rewrites: 5 result ResultPair: {'s_^166['0.Zero], 'NzNat} ========================================== reduce in META-LEVEL : upModule('NAT, false) . rewrites: 1 result FModule: fmod 'NAT is protecting 'BOOL . sorts 'Nat ; 'NzNat ; 'Zero . subsort 'NzNat < 'Nat . subsort 'Zero < 'Nat . op '0 : nil -> 'Zero [ctor] . op '_&_ : 'Nat 'Nat -> 'Nat [assoc comm prec(53) special( id-hook('ACU_NumberOpSymbol, '&) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'Nat 'Nat -> 'Nat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'NzNat 'NzNat -> 'NzNat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'Nat 'Nat -> 'Nat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_<<_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '<<) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_<=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>>_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '>>) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_>_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_^_ : 'Nat 'Nat -> 'Nat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_^_ : 'NzNat 'Nat -> 'NzNat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_divides_ : 'NzNat 'Nat -> 'Bool [prec(51) special( id-hook('NumberOpSymbol, 'divides) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_quo_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'quo) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_rem_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'rem) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_xor_ : 'Nat 'Nat -> 'Nat [assoc comm prec(55) special( id-hook('ACU_NumberOpSymbol, 'xor) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'Nat 'Nat -> 'Nat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'gcd : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'gcd : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lcm : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lcm : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'max : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'max : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'modExp : '`[Nat`] '`[Nat`] '`[Nat`] -> '`[Nat`] [special( id-hook('NumberOpSymbol, 'modExp) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 's_ : 'Nat -> 'NzNat [iter ctor special( id-hook('SuccSymbol, nil) term-hook('zeroTerm, '0.Zero))] . op 'sd : 'Nat 'Nat -> 'Nat [comm special( id-hook('CUI_NumberOpSymbol, 'sd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . none none endfm ========================================== reduce in META-LEVEL : metaReduce(upModule('NAT, false), '_+_[upTerm(100), upTerm(66)]) . rewrites: 5 result ResultPair: {'s_^166['0.Zero], 'NzNat} ========================================== reduce in META-LEVEL : metaReduce(upModule('NAT, true), 'modExp[upTerm(100), upTerm(66), upTerm(17)]) . rewrites: 6 result ResultPair: {'s_^4['0.Zero], 'NzNat} ========================================== reduce in META-LEVEL : upModule('META-LEVEL, true) . rewrites: 2 result FModule: fmod 'META-LEVEL is nil sorts 'Assignment ; 'Attr ; 'AttrSet ; 'Bool ; 'Bound ; 'CallStrategy ; 'Char ; 'Condition ; 'Constant ; 'Context ; 'EmptyCommaList ; 'EmptyQidSet ; 'EqCondition ; 'Equation ; 'EquationSet ; 'Expression ; 'FModule ; 'FTheory ; 'FindResult ; 'GTermList ; 'GroundTerm ; 'GroundTermList ; 'Header ; 'Hook ; 'HookList ; 'Import ; 'ImportList ; 'Kind ; 'KindSet ; 'MatchOrUnificationPair ; 'MatchPair ; 'MatchPair? ; 'MatchingProblem ; 'MembAx ; 'MembAxSet ; 'Module ; 'ModuleExpression ; 'NarrowingApplyResult ; 'NarrowingApplyResult? ; 'NarrowingSearchPathResult ; 'NarrowingSearchPathResult? ; 'NarrowingSearchResult ; 'NarrowingSearchResult? ; 'NarrowingStep ; 'NarrowingTrace ; 'Nat ; 'NatList ; 'NeCTermList ; 'NeGroundTermList ; 'NeHookList ; 'NeKindSet ; 'NeNatList ; 'NeParameterDeclList ; 'NeParameterList ; 'NeQidList ; 'NeQidSet ; 'NeSortSet ; 'NeTermList ; 'NeTypeList ; 'NeTypeSet ; 'NeVariableSet ; 'NzNat ; 'OpDecl ; 'OpDeclSet ; 'OpMapping ; 'OpMappingSet ; 'ParameterDecl ; 'ParameterDeclList ; 'ParameterList ; 'Parent ; 'PatternSubjectPair ; 'PrintOption ; 'PrintOptionSet ; 'Qid ; 'QidList ; 'QidSet ; 'Renaming ; 'RenamingSet ; 'Result4Tuple ; 'Result4Tuple? ; 'ResultPair ; 'ResultPair? ; 'ResultTriple ; 'ResultTriple? ; 'Rule ; 'RuleApplication ; 'RuleSet ; 'SModule ; 'STheory ; 'SmtResult ; 'SmtResult? ; 'Sort ; 'SortMapping ; 'SortMappingSet ; 'SortSet ; 'SrewriteOption ; 'StratDecl ; 'StratDeclSet ; 'StratDefSet ; 'StratDefinition ; 'StratMapping ; 'StratMappingSet ; 'StratModule ; 'StratTheory ; 'Strategy ; 'Strategy? ; 'StrategyList ; 'String ; 'SubsortDecl ; 'SubsortDeclSet ; 'Substitution ; 'Substitution? ; 'Term ; 'TermList ; 'TermQid ; 'Trace ; 'Trace? ; 'TraceStep ; 'Type ; 'Type? ; 'TypeList ; 'TypeListSet ; 'TypeSet ; 'UnificandPair ; 'UnificationPair ; 'UnificationPair? ; 'UnificationProblem ; 'UnificationTriple ; 'UnificationTriple? ; 'UsingPair ; 'UsingPairSet ; 'Variable ; 'VariableSet ; 'Variant ; 'Variant? ; 'VariantOption ; 'VariantOptionSet ; 'View ; 'ViewExpression ; 'Zero . subsort 'Assignment < 'Substitution . subsort 'Attr < 'AttrSet . subsort 'CallStrategy < 'Strategy . subsort 'Char < 'String . subsort 'Constant < 'GroundTerm . subsort 'Constant < 'TermQid . subsort 'Context < 'NeCTermList . subsort 'EmptyCommaList < 'GroundTermList . subsort 'EmptyCommaList < 'ParameterList . subsort 'EmptyQidSet < 'KindSet . subsort 'EmptyQidSet < 'SortSet . subsort 'EmptyQidSet < 'VariableSet . subsort 'EqCondition < 'Condition . subsort 'Equation < 'EquationSet . subsort 'Expression < 'ModuleExpression . subsort 'Expression < 'ViewExpression . subsort 'FModule < 'SModule . subsort 'FTheory < 'STheory . subsort 'GroundTerm < 'NeGroundTermList . subsort 'GroundTerm < 'Term . subsort 'GroundTermList < 'TermList . subsort 'Hook < 'NeHookList . subsort 'Import < 'ImportList . subsort 'Kind < 'NeKindSet . subsort 'Kind < 'Type . subsort 'KindSet < 'TypeSet . subsort 'MatchPair < 'MatchOrUnificationPair . subsort 'MatchPair < 'MatchPair? . subsort 'MembAx < 'MembAxSet . subsort 'NarrowingApplyResult < 'NarrowingApplyResult? . subsort 'NarrowingSearchPathResult < 'NarrowingSearchPathResult? . subsort 'NarrowingSearchResult < 'NarrowingSearchResult? . subsort 'NarrowingStep < 'NarrowingTrace . subsort 'Nat < 'Bound . subsort 'Nat < 'FindResult . subsort 'Nat < 'NeNatList . subsort 'Nat < 'Parent . subsort 'NeCTermList < 'GTermList . subsort 'NeGroundTermList < 'GroundTermList . subsort 'NeGroundTermList < 'NeTermList . subsort 'NeHookList < 'HookList . subsort 'NeKindSet < 'KindSet . subsort 'NeKindSet < 'NeTypeSet . subsort 'NeNatList < 'NatList . subsort 'NeParameterDeclList < 'ParameterDeclList . subsort 'NeParameterList < 'ParameterList . subsort 'NeQidList < 'QidList . subsort 'NeQidSet < 'QidSet . subsort 'NeSortSet < 'NeTypeSet . subsort 'NeSortSet < 'SortSet . subsort 'NeTermList < 'TermList . subsort 'NeTypeList < 'NeQidList . subsort 'NeTypeList < 'TypeList . subsort 'NeTypeSet < 'NeQidSet . subsort 'NeTypeSet < 'TypeSet . subsort 'NeVariableSet < 'NeQidSet . subsort 'NeVariableSet < 'VariableSet . subsort 'NzNat < 'Nat . subsort 'OpDecl < 'OpDeclSet . subsort 'OpMapping < 'OpMappingSet . subsort 'ParameterDecl < 'NeParameterDeclList . subsort 'PatternSubjectPair < 'MatchingProblem . subsort 'PrintOption < 'PrintOptionSet . subsort 'Qid < 'Header . subsort 'Qid < 'NeQidList . subsort 'Qid < 'NeQidSet . subsort 'Renaming < 'RenamingSet . subsort 'Result4Tuple < 'Result4Tuple? . subsort 'ResultPair < 'ResultPair? . subsort 'ResultTriple < 'ResultTriple? . subsort 'Rule < 'RuleSet . subsort 'RuleApplication < 'Strategy . subsort 'SModule < 'Module . subsort 'SModule < 'StratModule . subsort 'STheory < 'Module . subsort 'STheory < 'StratTheory . subsort 'SmtResult < 'SmtResult? . subsort 'Sort < 'Expression . subsort 'Sort < 'NeSortSet . subsort 'Sort < 'Type . subsort 'SortMapping < 'SortMappingSet . subsort 'SortSet < 'TypeSet . subsort 'StratDecl < 'StratDeclSet . subsort 'StratDefinition < 'StratDefSet . subsort 'StratMapping < 'StratMappingSet . subsort 'StratModule < 'Module . subsort 'StratTheory < 'Module . subsort 'Strategy < 'Strategy? . subsort 'Strategy < 'StrategyList . subsort 'SubsortDecl < 'SubsortDeclSet . subsort 'Substitution < 'Substitution? . subsort 'Term < 'NeTermList . subsort 'TermList < 'GTermList . subsort 'TermQid < 'Qid . subsort 'TermQid < 'Term . subsort 'Trace < 'Trace? . subsort 'TraceStep < 'Trace . subsort 'Type < 'NeTypeList . subsort 'Type < 'NeTypeSet . subsort 'Type < 'Qid . subsort 'Type < 'Type? . subsort 'TypeList < 'QidList . subsort 'TypeList < 'TypeListSet . subsort 'TypeSet < 'QidSet . subsort 'TypeSet < 'TypeListSet . subsort 'UnificandPair < 'UnificationProblem . subsort 'UnificationPair < 'MatchOrUnificationPair . subsort 'UnificationPair < 'UnificationPair? . subsort 'UnificationTriple < 'UnificationTriple? . subsort 'UsingPair < 'UsingPairSet . subsort 'Variable < 'NeVariableSet . subsort 'Variable < 'TermQid . subsort 'VariableSet < 'QidSet . subsort 'Variant < 'Variant? . subsort 'VariantOption < 'VariantOptionSet . subsort 'ViewExpression < 'NeParameterList . subsort 'Zero < 'Nat . op '$applySubstitution : 'NeTermList 'Substitution -> 'Term [none] . op '$card : 'QidSet 'Nat -> 'Nat [none] . op '$diff : 'QidSet 'QidSet 'QidSet -> 'QidSet [none] . op '$intersect : 'QidSet 'QidSet 'QidSet -> 'QidSet [none] . op '$reverse : 'NatList 'NatList -> 'NatList [none] . op '$reverse : 'QidList 'QidList -> 'QidList [none] . op '$size : 'NatList 'Nat -> 'Nat [none] . op '$size : 'QidList 'Nat -> 'Nat [none] . op '0 : nil -> 'Zero [ctor] . op ' : nil -> 'Constant [special( id-hook('QuotedIdentifierSymbol, 'constantQid))] . op ' : nil -> 'Kind [special( id-hook('QuotedIdentifierSymbol, 'kindQid))] . op ' : nil -> 'Qid [special( id-hook('QuotedIdentifierSymbol, nil))] . op ' : nil -> 'Sort [special( id-hook('QuotedIdentifierSymbol, 'sortQid))] . op ' : nil -> 'Variable [special( id-hook('QuotedIdentifierSymbol, 'variableQid))] . op ' : nil -> 'Char [special( id-hook('StringSymbol, nil))] . op ' : nil -> 'String [special( id-hook('StringSymbol, nil))] . op '_! : 'Strategy -> 'Strategy [ctor] . op '_&_ : 'Nat 'Nat -> 'Nat [assoc comm prec(53) special( id-hook('ACU_NumberOpSymbol, '&) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_* : 'Strategy -> 'Strategy [ctor] . op '_*_ : 'Nat 'Nat -> 'Nat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'NzNat 'NzNat -> 'NzNat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*`(_`) : 'ModuleExpression 'RenamingSet -> 'ModuleExpression [ctor prec( 39) format('d 'd 's 'n++i 'n--i 'd)] . op '_+ : 'Strategy -> 'Strategy [ctor] . op '_+_ : 'ModuleExpression 'ModuleExpression -> 'ModuleExpression [assoc comm ctor] . op '_+_ : 'Nat 'Nat -> 'Nat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'String 'String -> 'String [prec(33) gather('E 'e) special( id-hook('StringOpSymbol, '+) op-hook('stringSymbol, ', nil, 'Char))] . op '_/\_ : 'Condition 'Condition -> 'Condition [assoc ctor id( 'nil.EqCondition) prec(73)] . op '_/\_ : 'EqCondition 'EqCondition -> 'EqCondition [assoc ctor id( 'nil.EqCondition) prec(73)] . op '_/\_ : 'MatchingProblem 'MatchingProblem -> 'MatchingProblem [assoc comm ctor prec(73)] . op '_/\_ : 'UnificationProblem 'UnificationProblem -> 'UnificationProblem [ assoc comm ctor prec(73)] . op '_::_ : 'Sort 'ModuleExpression -> 'ParameterDecl [none] . op '_:=_ : 'Term 'Term -> 'EqCondition [ctor prec(71)] . op '_:_ : 'Term 'Sort -> 'EqCondition [ctor prec(71)] . op '_;_ : 'EmptyQidSet 'EmptyQidSet -> 'EmptyQidSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'KindSet 'KindSet -> 'KindSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeKindSet 'KindSet -> 'NeKindSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeQidSet 'QidSet -> 'NeQidSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeSortSet 'SortSet -> 'NeSortSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeTypeSet 'TypeSet -> 'NeTypeSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'NeVariableSet 'VariableSet -> 'NeVariableSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'QidSet 'QidSet -> 'QidSet [assoc comm ctor id('none.EmptyQidSet) prec(43)] . op '_;_ : 'SortSet 'SortSet -> 'SortSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'Strategy 'Strategy -> 'Strategy [assoc ctor id('idle.Strategy) prec(39) gather('e 'E)] . op '_;_ : 'Substitution 'Substitution -> 'Substitution [assoc comm ctor id( 'none.Substitution) prec(65)] . op '_;_ : 'TypeListSet 'TypeListSet -> 'TypeListSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'TypeSet 'TypeSet -> 'TypeSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_;_ : 'VariableSet 'VariableSet -> 'VariableSet [assoc comm ctor id( 'none.EmptyQidSet) prec(43)] . op '_<-_ : 'Variable 'Term -> 'Assignment [ctor prec(63) format('n++i 'd 'd '--)] . op '_<<_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '<<) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_<=?_ : 'Term 'Term -> 'PatternSubjectPair [ctor prec(71)] . op '_<=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<=_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '<=) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '<) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_=/=_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '_=>_ : 'Term 'Term -> 'Condition [ctor prec(71)] . op '_=?_ : 'Term 'Term -> 'UnificandPair [ctor prec(71)] . op '_=_ : 'Term 'Term -> 'EqCondition [ctor prec(71)] . op '_>=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>=_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '>=) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>>_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '>>) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_>_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '>) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_?_:_ : 'Strategy 'Strategy 'Strategy -> 'Strategy [ctor prec(55)] . op '_\_ : 'QidSet 'QidSet -> 'QidSet [gather('E 'e)] . op '_^_ : 'Nat 'Nat -> 'Nat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_^_ : 'NzNat 'Nat -> 'NzNat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '__ : 'AttrSet 'AttrSet -> 'AttrSet [assoc comm ctor id('none.AttrSet)] . op '__ : 'EquationSet 'EquationSet -> 'EquationSet [assoc comm ctor id( 'none.EquationSet) format('d 'ni 'd)] . op '__ : 'HookList 'HookList -> 'HookList [assoc ctor id('nil.HookList)] . op '__ : 'HookList 'NeHookList -> 'NeHookList [assoc ctor id('nil.HookList)] . op '__ : 'ImportList 'ImportList -> 'ImportList [assoc ctor id( 'nil.ImportList) format('d 'ni 'd)] . op '__ : 'MembAxSet 'MembAxSet -> 'MembAxSet [assoc comm ctor id( 'none.MembAxSet) format('d 'ni 'd)] . op '__ : 'NarrowingTrace 'NarrowingTrace -> 'NarrowingTrace [assoc ctor id( 'nil.NarrowingTrace)] . op '__ : 'NatList 'NatList -> 'NatList [assoc ctor id('nil.NatList) prec(25)] . op '__ : 'NatList 'NeNatList -> 'NeNatList [assoc ctor id('nil.NatList) prec( 25)] . op '__ : 'NeHookList 'HookList -> 'NeHookList [assoc ctor id('nil.HookList)] . op '__ : 'NeNatList 'NatList -> 'NeNatList [assoc ctor id('nil.NatList) prec( 25)] . op '__ : 'NeQidList 'QidList -> 'NeQidList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'NeTypeList 'TypeList -> 'NeTypeList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'OpDeclSet 'OpDeclSet -> 'OpDeclSet [assoc comm ctor id( 'none.OpDeclSet) format('d 'ni 'd)] . op '__ : 'OpMappingSet 'OpMappingSet -> 'OpMappingSet [assoc comm ctor id( 'none.OpMappingSet) format('d 'ni 'd)] . op '__ : 'PrintOptionSet 'PrintOptionSet -> 'PrintOptionSet [assoc comm ctor id('none.PrintOptionSet)] . op '__ : 'QidList 'NeQidList -> 'NeQidList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'QidList 'QidList -> 'QidList [assoc ctor id('nil.TypeList) prec( 25)] . op '__ : 'RuleSet 'RuleSet -> 'RuleSet [assoc comm ctor id('none.RuleSet) format('d 'ni 'd)] . op '__ : 'SortMappingSet 'SortMappingSet -> 'SortMappingSet [assoc comm ctor id('none.SortMappingSet) format('d 'ni 'd)] . op '__ : 'StratDeclSet 'StratDeclSet -> 'StratDeclSet [assoc comm ctor id( 'none.StratDeclSet) format('d 'ni 'd)] . op '__ : 'StratDefSet 'StratDefSet -> 'StratDefSet [assoc comm ctor id( 'none.StratDefSet) format('d 'ni 'd)] . op '__ : 'StratMappingSet 'StratMappingSet -> 'StratMappingSet [assoc comm ctor id('none.StratMappingSet) format('d 'ni 'd)] . op '__ : 'SubsortDeclSet 'SubsortDeclSet -> 'SubsortDeclSet [assoc comm ctor id('none.SubsortDeclSet) format('d 'ni 'd)] . op '__ : 'Trace 'Trace -> 'Trace [assoc ctor id('nil.Trace) format('d 'n 'd)] . op '__ : 'TypeList 'NeTypeList -> 'NeTypeList [assoc ctor id('nil.TypeList) prec(25)] . op '__ : 'TypeList 'TypeList -> 'TypeList [assoc ctor id('nil.TypeList) prec( 25)] . op '__ : 'VariantOptionSet 'VariantOptionSet -> 'VariantOptionSet [assoc comm ctor id('none.VariantOptionSet)] . op '_`,_ : 'EmptyCommaList 'EmptyCommaList -> 'EmptyCommaList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'GTermList 'GTermList -> 'GTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'GroundTermList 'GroundTermList -> 'GroundTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'GroundTermList 'NeGroundTermList -> 'NeGroundTermList [assoc ctor id('empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeCTermList 'TermList -> 'NeCTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeGroundTermList 'GroundTermList -> 'NeGroundTermList [assoc ctor id('empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeParameterDeclList 'ParameterDeclList -> 'NeParameterDeclList [ assoc ctor id('nil.ParameterDeclList) prec(121)] . op '_`,_ : 'NeParameterList 'ParameterList -> 'NeParameterList [assoc ctor id('empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'NeTermList 'TermList -> 'NeTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'ParameterDeclList 'NeParameterDeclList -> 'NeParameterDeclList [ assoc ctor id('nil.ParameterDeclList) prec(121)] . op '_`,_ : 'ParameterDeclList 'ParameterDeclList -> 'ParameterDeclList [assoc ctor id('nil.ParameterDeclList) prec(121)] . op '_`,_ : 'ParameterList 'NeParameterList -> 'NeParameterList [assoc ctor id('empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'ParameterList 'ParameterList -> 'ParameterList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'RenamingSet 'RenamingSet -> 'RenamingSet [assoc comm ctor prec( 43) format('d 'd 'ni 'd)] . op '_`,_ : 'StrategyList 'StrategyList -> 'StrategyList [assoc ctor id( 'empty.StrategyList)] . op '_`,_ : 'TermList 'NeCTermList -> 'NeCTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'TermList 'NeTermList -> 'NeTermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'TermList 'TermList -> 'TermList [assoc ctor id( 'empty.EmptyCommaList) prec(121) gather('e 'E)] . op '_`,_ : 'UsingPairSet 'UsingPairSet -> 'UsingPairSet [assoc comm ctor prec(61)] . op '_`[_`] : 'Qid 'NeCTermList -> 'Context [ctor] . op '_`[_`] : 'Qid 'NeGroundTermList -> 'GroundTerm [ctor] . op '_`[_`] : 'Qid 'NeTermList -> 'Term [ctor] . op '_`[_`]`{_`} : 'Qid 'Substitution 'StrategyList -> 'RuleApplication [ctor prec(21)] . op '_`[`[_`]`] : 'Qid 'TermList -> 'CallStrategy [ctor prec(21)] . op '_`{_`} : 'Expression 'NeParameterList -> 'Expression [ctor prec(37)] . op '_`{_`} : 'ModuleExpression 'NeParameterList -> 'ModuleExpression [ctor prec(37)] . op '_`{_`} : 'Qid 'ParameterDeclList -> 'Header [ctor] . op '_`{_`} : 'ViewExpression 'NeParameterList -> 'ViewExpression [ctor prec( 37)] . op '_and-then_ : 'Bool 'Bool -> 'Bool [strat(1 0) prec(55) gather('e 'E)] . op '_and_ : 'Bool 'Bool -> 'Bool [assoc comm prec(55)] . op '_divides_ : 'NzNat 'Nat -> 'Bool [prec(51) special( id-hook('NumberOpSymbol, 'divides) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op '_in_ : 'Qid 'QidSet -> 'Bool [none] . op '_or-else_ : 'Bool 'Bool -> 'Bool [strat(1 0) prec(59) gather('e 'E)] . op '_or-else_ : 'Strategy 'Strategy -> 'Strategy [assoc ctor prec(43) gather( 'e 'E)] . op '_or_ : 'Bool 'Bool -> 'Bool [assoc comm prec(59)] . op '_psubset_ : 'QidSet 'QidSet -> 'Bool [none] . op '_quo_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'quo) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_rem_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'rem) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_subset_ : 'QidSet 'QidSet -> 'Bool [none] . op '_using_ : 'Variable 'Strategy -> 'UsingPair [ctor prec(21)] . op '_xor_ : 'Bool 'Bool -> 'Bool [assoc comm prec(57)] . op '_xor_ : 'Nat 'Nat -> 'Nat [assoc comm prec(55) special( id-hook('ACU_NumberOpSymbol, 'xor) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'Nat 'Nat -> 'Nat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'Strategy 'Strategy -> 'Strategy [assoc comm ctor id( 'fail.Strategy) prec(41) gather('e 'E)] . op '`[_`] : 'Qid -> 'Module [none] . op '`[`] : nil -> 'Context [ctor] . op '`{_`,_`,_`,_`,_`,_`,_`} : 'Context 'Qid 'Substitution 'Qid 'Term 'Type 'Substitution -> 'NarrowingStep [ctor format('ni 'n++i 'd 'ni 'd 's 'd 'ni 'd 'ni 'd 's 'd 's 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Context 'Qid 'Substitution 'Substitution 'Qid -> 'NarrowingApplyResult [ctor format('d 'n++i 'd 's 'd 'ni 'd 'ni 'd 's 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Substitution 'NarrowingTrace 'Substitution 'Qid -> 'NarrowingSearchPathResult [ctor format('d 'n++i 'd 's 'd 's 'd 's 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`,_`} : 'Term 'Type 'Substitution 'Qid 'Substitution 'Qid -> 'NarrowingSearchResult [ctor format('d 'n++i 'd 's 'd 's 'd 'ni 'd 's 'd 'ni 'n--i 'd)] . op '`{_`,_`,_`,_`,_`} : 'Term 'Substitution 'Nat 'Parent 'Bool -> 'Variant [ ctor] . op '`{_`,_`,_`,_`,_`} : 'Term 'Substitution 'Qid 'Parent 'Bool -> 'Variant [ ctor] . op '`{_`,_`,_`,_`} : 'Term 'Substitution 'Term 'Nat -> 'SmtResult [ctor] . op '`{_`,_`,_`,_`} : 'Term 'Type 'Substitution 'Context -> 'Result4Tuple [ ctor] . op '`{_`,_`,_`} : 'Substitution 'Substitution 'Nat -> 'UnificationTriple [ ctor] . op '`{_`,_`,_`} : 'Substitution 'Substitution 'Qid -> 'UnificationTriple [ ctor] . op '`{_`,_`,_`} : 'Term 'Type 'Rule -> 'TraceStep [ctor] . op '`{_`,_`,_`} : 'Term 'Type 'Substitution -> 'ResultTriple [ctor] . op '`{_`,_`} : 'Substitution 'Context -> 'MatchPair [ctor] . op '`{_`,_`} : 'Substitution 'Nat -> 'UnificationPair [ctor] . op '`{_`,_`} : 'Substitution 'Qid -> 'UnificationPair [ctor] . op '`{_`,_`} : 'Term 'Type -> 'ResultPair [ctor] . op 'all : nil -> 'RuleApplication [ctor] . op 'amatch_s.t._ : 'Term 'EqCondition -> 'Strategy [ctor prec(21)] . op 'amatchrew_s.t._by_ : 'Term 'EqCondition 'UsingPairSet -> 'Strategy [ctor] . op 'ambiguity : 'ResultPair 'ResultPair -> 'ResultPair? [ctor] . op 'ambiguity : 'Strategy 'Strategy -> 'Strategy? [ctor] . op 'anyType : nil -> 'Type? [ctor] . op 'append : 'NatList 'NatList -> 'NatList [none] . op 'append : 'NatList 'NeNatList -> 'NeNatList [none] . op 'append : 'NeNatList 'NatList -> 'NeNatList [none] . op 'append : 'NeQidList 'QidList -> 'NeQidList [none] . op 'append : 'QidList 'NeQidList -> 'NeQidList [none] . op 'append : 'QidList 'QidList -> 'QidList [none] . op 'applySubstitution : 'Module 'Term 'Substitution -> 'Term [none] . op 'ascii : 'Char -> 'Nat [special( id-hook('StringOpSymbol, 'ascii) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'assoc : nil -> 'Attr [ctor] . op 'breadthFirst : nil -> 'SrewriteOption [ctor] . op 'ceq_=_if_`[_`]. : 'Term 'Term 'EqCondition 'AttrSet -> 'Equation [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'char : '`[FindResult`,NatList`,Bound`,Parent`] -> '`[String`] [special( id-hook('StringOpSymbol, 'char) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'cmb_:_if_`[_`]. : 'Term 'Sort 'EqCondition 'AttrSet -> 'MembAx [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'comm : nil -> 'Attr [ctor] . op 'completeName : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaCompleteName) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'config : nil -> 'Attr [ctor] . op 'crl_=>_if_`[_`]. : 'Term 'Term 'Condition 'AttrSet -> 'Rule [ctor format( 'd 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'csd_:=_if_`[_`]. : 'CallStrategy 'Strategy 'EqCondition 'AttrSet -> 'StratDefinition [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'ctor : nil -> 'Attr [ctor] . op 'delay : nil -> 'VariantOption [ctor] . op 'delete : 'Qid 'QidSet -> 'QidSet [none] . op 'depthFirst : nil -> 'SrewriteOption [ctor] . op 'downTerm : 'Term 'Universal -> 'Universal [poly(2 0) special( id-hook('MetaLevelOpSymbol, 'metaDownTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'empty : nil -> 'EmptyCommaList [ctor] . op 'empty : nil -> 'GroundTermList [ctor] . op 'empty : nil -> 'StrategyList [ctor] . op 'eq_=_`[_`]. : 'Term 'Term 'AttrSet -> 'Equation [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 'extending_. : 'ModuleExpression -> 'Import [ctor] . op 'fail : nil -> 'Strategy [ctor] . op 'failure : nil -> 'NarrowingApplyResult? [ctor] . op 'failure : nil -> 'NarrowingSearchPathResult? [ctor] . op 'failure : nil -> 'NarrowingSearchResult? [ctor] . op 'failure : nil -> 'Result4Tuple? [ctor] . op 'failure : nil -> 'ResultPair? [ctor] . op 'failure : nil -> 'ResultTriple? [ctor] . op 'failure : nil -> 'SmtResult? [ctor] . op 'failure : nil -> 'Trace? [ctor] . op 'failureIncomplete : nil -> 'NarrowingApplyResult? [ctor] . op 'failureIncomplete : nil -> 'NarrowingSearchPathResult? [ctor] . op 'failureIncomplete : nil -> 'NarrowingSearchResult? [ctor] . op 'failureIncomplete : nil -> 'ResultTriple? [ctor] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'filter : nil -> 'VariantOption [ctor] . op 'find : 'String 'String 'Nat -> 'FindResult [special( id-hook('StringOpSymbol, 'find) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('notFoundTerm, 'notFound.FindResult))] . op 'flat : nil -> 'PrintOption [ctor] . op 'fmod_is_sorts_.____endfm : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet -> 'FModule [ctor gather('& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'format : 'QidList -> 'Attr [ctor] . op 'format : nil -> 'PrintOption [ctor] . op 'front : 'NeNatList -> 'NatList [none] . op 'front : 'NeQidList -> 'QidList [none] . op 'frozen : 'NeNatList -> 'Attr [ctor] . op 'fth_is_sorts_.____endfth : 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet -> 'FTheory [ctor gather('& '& '& '& '& '& '&) format('d 'd 'd 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'gather : 'QidList -> 'Attr [ctor] . op 'gcd : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'gcd : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'generated-by_. : 'ModuleExpression -> 'Import [ctor] . op 'getAccumulatedSubstitution : 'NarrowingSearchResult -> 'Substitution [ none] . op 'getAccumulatedSubstitution : 'NarrowingStep -> 'Substitution [none] . op 'getContext : 'MatchPair -> 'Context [none] . op 'getContext : 'NarrowingApplyResult -> 'Context [none] . op 'getContext : 'NarrowingStep -> 'Context [none] . op 'getContext : 'Result4Tuple -> 'Context [none] . op 'getEqs : 'Module -> 'EquationSet [none] . op 'getFrom : 'View -> 'ModuleExpression [none] . op 'getImports : 'Module -> 'ImportList [none] . op 'getInitialSubstitution : 'NarrowingSearchPathResult -> 'Substitution [ none] . op 'getInitialTerm : 'NarrowingSearchPathResult -> 'Term [none] . op 'getInitialType : 'NarrowingSearchPathResult -> 'Type [none] . op 'getKind : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGetKind) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'getKinds : '`[Module`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaGetKinds) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'getLabel : 'NarrowingApplyResult -> 'Qid [none] . op 'getLabel : 'NarrowingStep -> 'Qid [none] . op 'getLhsSubstitution : 'UnificationTriple -> 'Substitution [none] . op 'getMbs : 'Module -> 'MembAxSet [none] . op 'getMoreVariantsInLayerFlag : 'Variant -> 'Bool [none] . op 'getName : 'Constant -> 'Qid [none] . op 'getName : 'Module -> 'Qid [none] . op 'getName : 'Variable -> 'Qid [none] . op 'getName : 'View -> 'Qid [none] . op 'getOpMappings : 'View -> 'OpMappingSet [none] . op 'getOps : 'Module -> 'OpDeclSet [none] . op 'getParent : 'Variant -> 'Parent [none] . op 'getRhsSubstitution : 'UnificationTriple -> 'Substitution [none] . op 'getRls : 'Module -> 'RuleSet [none] . op 'getRule : 'TraceStep -> 'Rule [none] . op 'getRuleSubstitution : 'NarrowingApplyResult -> 'Substitution [none] . op 'getSds : 'Module -> 'StratDefSet [none] . op 'getSortMappings : 'View -> 'SortMappingSet [none] . op 'getSorts : 'Module -> 'SortSet [none] . op 'getStateVariableFamily : 'NarrowingSearchResult -> 'Qid [none] . op 'getStratMappings : 'View -> 'StratMappingSet [none] . op 'getStrats : 'Module -> 'StratDeclSet [none] . op 'getSubsorts : 'Module -> 'SubsortDeclSet [none] . op 'getSubstitution : 'MatchPair -> 'Substitution [none] . op 'getSubstitution : 'Result4Tuple -> 'Substitution [none] . op 'getSubstitution : 'ResultTriple -> 'Substitution [none] . op 'getSubstitution : 'UnificationPair -> 'Substitution [none] . op 'getSubstitution : 'Variant -> 'Substitution [none] . op 'getTerm : 'NarrowingApplyResult -> 'Term [none] . op 'getTerm : 'NarrowingSearchResult -> 'Term [none] . op 'getTerm : 'NarrowingStep -> 'Term [none] . op 'getTerm : 'Result4Tuple -> 'Term [none] . op 'getTerm : 'ResultPair -> 'Term [none] . op 'getTerm : 'ResultTriple -> 'Term [none] . op 'getTerm : 'TraceStep -> 'Term [none] . op 'getTerm : 'Variant -> 'Term [none] . op 'getTermSubstitution : 'NarrowingApplyResult -> 'Substitution [none] . op 'getTo : 'View -> 'ModuleExpression [none] . op 'getTrace : 'NarrowingSearchPathResult -> 'NarrowingTrace [none] . op 'getType : 'Constant -> 'Type [none] . op 'getType : 'NarrowingApplyResult -> 'Type [none] . op 'getType : 'NarrowingSearchResult -> 'Type [none] . op 'getType : 'NarrowingStep -> 'Type [none] . op 'getType : 'Result4Tuple -> 'Type [none] . op 'getType : 'ResultPair -> 'Type [none] . op 'getType : 'ResultTriple -> 'Type [none] . op 'getType : 'TraceStep -> 'Type [none] . op 'getType : 'Variable -> 'Type [none] . op 'getUnifier : 'NarrowingSearchPathResult -> 'Substitution [none] . op 'getUnifier : 'NarrowingSearchResult -> 'Substitution [none] . op 'getUnifier : 'NarrowingStep -> 'Substitution [none] . op 'getUnifierVariableFamily : 'NarrowingSearchPathResult -> 'Qid [none] . op 'getUnifierVariableFamily : 'NarrowingSearchResult -> 'Qid [none] . op 'getUnifierVariableFamily : 'NarrowingStep -> 'Qid [none] . op 'getVariableFamily : 'NarrowingApplyResult -> 'Qid [none] . op 'getVariableFamily : 'UnificationPair -> 'Qid [none] . op 'getVariableFamily : 'UnificationTriple -> 'Qid [none] . op 'getVariableFamily : 'Variant -> 'Qid [none] . op 'glbSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [ special( id-hook('MetaLevelOpSymbol, 'metaGlbSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'head : 'NeNatList -> 'Nat [none] . op 'head : 'NeQidList -> 'Qid [none] . op 'id : 'Term -> 'Attr [ctor] . op 'id-hook : 'Qid 'QidList -> 'Hook [ctor format('nssss 'd)] . op 'idem : nil -> 'Attr [ctor] . op 'idle : nil -> 'Strategy [ctor] . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op 'including_. : 'ModuleExpression -> 'Import [ctor] . op 'insert : 'Qid 'QidSet -> 'QidSet [none] . op 'intersection : 'QidSet 'QidSet -> 'QidSet [none] . op 'iter : nil -> 'Attr [ctor] . op 'label : 'Qid -> 'Attr [ctor] . op 'label_to_ : 'Qid 'Qid -> 'Renaming [ctor] . op 'last : 'NeNatList -> 'Nat [none] . op 'last : 'NeQidList -> 'Qid [none] . op 'latex : 'String -> 'Attr [ctor] . op 'lcm : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lcm : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'leastSort : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaLeastSort) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'left-id : 'Term -> 'Attr [ctor] . op 'length : 'String -> 'Nat [special( id-hook('StringOpSymbol, 'length) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lesserSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaLesserSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'lowerCase : 'String -> 'String [special( id-hook('StringOpSymbol, 'lowerCase) op-hook('stringSymbol, ', nil, 'Char))] . op 'match_s.t._ : 'Term 'EqCondition -> 'Strategy [ctor prec(21)] . op 'matchrew_s.t._by_ : 'Term 'EqCondition 'UsingPairSet -> 'Strategy [ctor] . op 'max : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'max : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'maximalAritySet : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMaximalAritySet) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'maximalSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMaximalSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'mb_:_`[_`]. : 'Term 'Sort 'AttrSet -> 'MembAx [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 'memo : nil -> 'Attr [ctor] . op 'metaApply : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Substitution?`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaApply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaCheck : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaCheck) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'legacyMetaDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'metaDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaFrewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaFrewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetIrredundantVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaGetIrredundantVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetIrredundantVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'metaGetIrredundantVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaGetVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaGetVariant : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Variant?`] [special( id-hook('MetaLevelOpSymbol, 'metaGetVariant) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaIrredundantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'metaIrredundantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaIrredundantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaIrredundantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaMatch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Substitution?`] [special( id-hook('MetaLevelOpSymbol, 'metaMatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrow : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[Bool`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaNarrow2) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrow : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaNarrow) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingApply : 'Module 'Term 'TermList 'Qid 'Nat -> 'NarrowingApplyResult? [none] . op 'metaNarrowingApply : 'Module 'Term 'TermList 'Qid 'VariantOptionSet 'Nat -> 'NarrowingApplyResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingApply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingSearch : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'Nat -> 'NarrowingSearchResult? [none] . op 'metaNarrowingSearch : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'VariantOptionSet 'Nat -> 'NarrowingSearchResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNarrowingSearchPath : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'Nat -> 'NarrowingSearchPathResult? [none] . op 'metaNarrowingSearchPath : 'Module 'Term 'Term 'Qid 'Bound 'Qid 'VariantOptionSet 'Nat -> 'NarrowingSearchPathResult? [special( id-hook('MetaLevelOpSymbol, 'metaNarrowingSearchPath) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaNormalize : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaNormalize) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaParse : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [ none] . op 'metaParse : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaParse) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaParseStrategy : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[StrategyList`,Strategy?`] [special( id-hook('MetaLevelOpSymbol, 'metaParseStrategy) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [none] . op 'metaPrettyPrint : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaPrettyPrint) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrettyPrintStrategy : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[StrategyList`,Strategy?`] '`[PrintOptionSet`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaPrettyPrintStrategy) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaPrintToString : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[PrintOptionSet`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[String`] [special( id-hook('MetaLevelOpSymbol, 'metaPrintToString) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaReduce : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaReduce) op-hook('qidSymbol, ', nil, 'Qid) op-hook('metaTermSymbol, '_`[_`], 'Qid 'NeGroundTermList, 'GroundTerm) op-hook('metaArgSymbol, '_`,_, 'NeGroundTermList 'GroundTermList, 'NeGroundTermList) op-hook('emptyTermListSymbol, 'empty, nil, 'GroundTermList) op-hook('assignmentSymbol, '_<-_, 'Variable 'Term, 'Assignment) op-hook('emptySubstitutionSymbol, 'none, nil, 'Substitution) op-hook('substitutionSymbol, '_;_, 'Substitution 'Substitution, 'Substitution) op-hook('holeSymbol, '`[`], nil, 'Context) op-hook('noConditionSymbol, 'nil, nil, 'EqCondition) op-hook('equalityConditionSymbol, '_=_, 'Term 'Term, 'EqCondition) op-hook('sortTestConditionSymbol, '_:_, 'Term 'Sort, 'EqCondition) op-hook('matchConditionSymbol, '_:=_, 'Term 'Term, 'EqCondition) op-hook('rewriteConditionSymbol, '_=>_, 'Term 'Term, 'Condition) op-hook('conjunctionSymbol, '_/\_, 'EqCondition 'EqCondition, 'EqCondition) op-hook('failStratSymbol, 'fail, nil, 'Strategy) op-hook('idleStratSymbol, 'idle, nil, 'Strategy) op-hook('allStratSymbol, 'all, nil, 'RuleApplication) op-hook('applicationStratSymbol, '_`[_`]`{_`}, 'Qid 'Substitution 'StrategyList, 'RuleApplication) op-hook('topStratSymbol, 'top, 'RuleApplication, 'Strategy) op-hook('matchStratSymbol, 'match_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('xmatchStratSymbol, 'xmatch_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('amatchStratSymbol, 'amatch_s.t._, 'Term 'EqCondition, 'Strategy) op-hook('unionStratSymbol, '_|_, 'Strategy 'Strategy, 'Strategy) op-hook('concatStratSymbol, '_;_, 'Strategy 'Strategy, 'Strategy) op-hook('orelseStratSymbol, '_or-else_, 'Strategy 'Strategy, 'Strategy) op-hook('plusStratSymbol, '_+, 'Strategy, 'Strategy) op-hook('conditionalStratSymbol, '_?_:_, 'Strategy 'Strategy 'Strategy, 'Strategy) op-hook('matchrewStratSymbol, 'matchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('xmatchrewStratSymbol, 'xmatchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('amatchrewStratSymbol, 'amatchrew_s.t._by_, 'Term 'EqCondition 'UsingPairSet, 'Strategy) op-hook('callStratSymbol, '_`[`[_`]`], 'Qid 'TermList, 'CallStrategy) op-hook('oneStratSymbol, 'one, 'Strategy, 'Strategy) op-hook('starStratSymbol, '_*, 'Strategy, 'Strategy) op-hook('normalizationStratSymbol, '_!, 'Strategy, 'Strategy) op-hook('notStratSymbol, 'not, 'Strategy, 'Strategy) op-hook('testStratSymbol, 'test, 'Strategy, 'Strategy) op-hook('tryStratSymbol, 'try, 'Strategy, 'Strategy) op-hook('usingStratSymbol, '_using_, 'Variable 'Strategy, 'UsingPair) op-hook('usingListStratSymbol, '_`,_, 'UsingPairSet 'UsingPairSet, 'UsingPairSet) op-hook('emptyStratListSymbol, 'empty, nil, 'StrategyList) op-hook('stratListSymbol, '_`,_, 'StrategyList 'StrategyList, 'StrategyList) op-hook('headerSymbol, '_`{_`}, 'Qid 'ParameterDeclList, 'Header) op-hook('parameterDeclSymbol, '_::_, 'Sort 'ModuleExpression, 'ParameterDecl) op-hook('parameterDeclListSymbol, '_`,_, 'ParameterDeclList 'ParameterDeclList, 'ParameterDeclList) op-hook('protectingSymbol, 'protecting_., 'ModuleExpression, 'Import) op-hook('extendingSymbol, 'extending_., 'ModuleExpression, 'Import) op-hook('includingSymbol, 'including_., 'ModuleExpression, 'Import) op-hook('generatedBySymbol, 'generated-by_., 'ModuleExpression, 'Import) op-hook('nilImportListSymbol, 'nil, nil, 'ImportList) op-hook('importListSymbol, '__, 'ImportList 'ImportList, 'ImportList) op-hook('emptySortSetSymbol, 'none, nil, 'QidSet) op-hook('sortSetSymbol, '_;_, 'QidSet 'QidSet, 'QidSet) op-hook('subsortSymbol, 'subsort_<_., 'Sort 'Sort, 'SubsortDecl) op-hook('emptySubsortDeclSetSymbol, 'none, nil, 'SubsortDeclSet) op-hook('subsortDeclSetSymbol, '__, 'SubsortDeclSet 'SubsortDeclSet, 'SubsortDeclSet) op-hook('nilQidListSymbol, 'nil, nil, 'QidList) op-hook('qidListSymbol, '__, 'QidList 'QidList, 'QidList) op-hook('emptyQidSetSymbol, 'none, nil, 'QidSet) op-hook('qidSetSymbol, '_;_, 'QidSet 'QidSet, 'QidSet) op-hook('succSymbol, 's_, 'Nat, 'NzNat) op-hook('natListSymbol, '__, 'NatList 'NatList, 'NatList) op-hook('unboundedSymbol, 'unbounded, nil, 'Bound) op-hook('noParentSymbol, 'none, nil, 'Parent) op-hook('stringSymbol, ', nil, 'Char) op-hook('sortRenamingSymbol, 'sort_to_, 'Qid 'Qid, 'Renaming) op-hook('opRenamingSymbol, 'op_to_`[_`], 'Qid 'Qid 'AttrSet, 'Renaming) op-hook('opRenamingSymbol2, 'op_:_->_to_`[_`], 'Qid 'TypeList 'Type 'Qid 'AttrSet, 'Renaming) op-hook('labelRenamingSymbol, 'label_to_, 'Qid 'Qid, 'Renaming) op-hook('stratRenamingSymbol, 'strat_to_, 'Qid 'Qid, 'Renaming) op-hook('stratRenamingSymbol2, 'strat_:_@_to_, 'Qid 'TypeList 'Type 'Qid, 'Renaming) op-hook('renamingSetSymbol, '_`,_, 'RenamingSet 'RenamingSet, 'RenamingSet) op-hook('sumSymbol, '_+_, 'ModuleExpression 'ModuleExpression, 'ModuleExpression) op-hook('renamingSymbol, '_*`(_`), 'ModuleExpression 'RenamingSet, 'ModuleExpression) op-hook('instantiationSymbol, '_`{_`}, 'Expression 'NeParameterList, 'Expression) op-hook('termHookSymbol, 'term-hook, 'Qid 'Term, 'Hook) op-hook('hookListSymbol, '__, 'HookList 'HookList, 'HookList) op-hook('idHookSymbol, 'id-hook, 'Qid 'QidList, 'Hook) op-hook('opHookSymbol, 'op-hook, 'Qid 'Qid 'QidList 'Qid, 'Hook) op-hook('assocSymbol, 'assoc, nil, 'Attr) op-hook('commSymbol, 'comm, nil, 'Attr) op-hook('idemSymbol, 'idem, nil, 'Attr) op-hook('iterSymbol, 'iter, nil, 'Attr) op-hook('idSymbol, 'id, 'Term, 'Attr) op-hook('leftIdSymbol, 'left-id, 'Term, 'Attr) op-hook('rightIdSymbol, 'right-id, 'Term, 'Attr) op-hook('stratSymbol, 'strat, 'NeNatList, 'Attr) op-hook('memoSymbol, 'memo, nil, 'Attr) op-hook('precSymbol, 'prec, 'Nat, 'Attr) op-hook('gatherSymbol, 'gather, 'QidList, 'Attr) op-hook('formatSymbol, 'format, 'QidList, 'Attr) op-hook('latexSymbol, 'latex, 'String, 'Attr) op-hook('ctorSymbol, 'ctor, nil, 'Attr) op-hook('frozenSymbol, 'frozen, 'NeNatList, 'Attr) op-hook('polySymbol, 'poly, 'NeNatList, 'Attr) op-hook('configSymbol, 'config, nil, 'Attr) op-hook('objectSymbol, 'object, nil, 'Attr) op-hook('msgSymbol, 'msg, nil, 'Attr) op-hook('portalSymbol, 'portal, nil, 'Attr) op-hook('pconstSymbol, 'pconst, nil, 'Attr) op-hook('specialSymbol, 'special, 'NeHookList, 'Attr) op-hook('labelSymbol, 'label, 'Qid, 'Attr) op-hook('metadataSymbol, 'metadata, 'String, 'Attr) op-hook('owiseSymbol, 'owise, nil, 'Attr) op-hook('variantAttrSymbol, 'variant, nil, 'Attr) op-hook('narrowingSymbol, 'narrowing, nil, 'Attr) op-hook('nonexecSymbol, 'nonexec, nil, 'Attr) op-hook('printSymbol, 'print, 'QidList, 'Attr) op-hook('emptyAttrSetSymbol, 'none, nil, 'AttrSet) op-hook('attrSetSymbol, '__, 'AttrSet 'AttrSet, 'AttrSet) op-hook('opDeclSymbol, 'op_:_->_`[_`]., 'Qid 'TypeList 'Type 'AttrSet, 'OpDecl) op-hook('opDeclSetSymbol, '__, 'OpDeclSet 'OpDeclSet, 'OpDeclSet) op-hook('emptyOpDeclSetSymbol, 'none, nil, 'OpDeclSet) op-hook('mbSymbol, 'mb_:_`[_`]., 'Term 'Sort 'AttrSet, 'MembAx) op-hook('cmbSymbol, 'cmb_:_if_`[_`]., 'Term 'Sort 'EqCondition 'AttrSet, 'MembAx) op-hook('emptyMembAxSetSymbol, 'none, nil, 'MembAxSet) op-hook('membAxSetSymbol, '__, 'MembAxSet 'MembAxSet, 'MembAxSet) op-hook('eqSymbol, 'eq_=_`[_`]., 'Term 'Term 'AttrSet, 'Equation) op-hook('ceqSymbol, 'ceq_=_if_`[_`]., 'Term 'Term 'EqCondition 'AttrSet, 'Equation) op-hook('emptyEquationSetSymbol, 'none, nil, 'EquationSet) op-hook('equationSetSymbol, '__, 'EquationSet 'EquationSet, 'EquationSet) op-hook('rlSymbol, 'rl_=>_`[_`]., 'Term 'Term 'AttrSet, 'Rule) op-hook('crlSymbol, 'crl_=>_if_`[_`]., 'Term 'Term 'Condition 'AttrSet, 'Rule) op-hook('emptyRuleSetSymbol, 'none, nil, 'RuleSet) op-hook('ruleSetSymbol, '__, 'RuleSet 'RuleSet, 'RuleSet) op-hook('stratDeclSymbol, 'strat_:_@_`[_`]., 'Qid 'TypeList 'Type 'AttrSet, 'StratDecl) op-hook('emptyStratDeclSetSymbol, 'none, nil, 'StratDeclSet) op-hook('stratDeclSetSymbol, '__, 'StratDeclSet 'StratDeclSet, 'StratDeclSet) op-hook('sdSymbol, 'sd_:=_`[_`]., 'CallStrategy 'Strategy 'AttrSet, 'StratDefinition) op-hook('csdSymbol, 'csd_:=_if_`[_`]., 'CallStrategy 'Strategy 'EqCondition 'AttrSet, 'StratDefinition) op-hook('emptyStratDefSetSymbol, 'none, nil, 'StratDefSet) op-hook('stratDefSetSymbol, '__, 'StratDefSet 'StratDefSet, 'StratDefSet) op-hook('fmodSymbol, 'fmod_is_sorts_.____endfm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet, 'FModule) op-hook('fthSymbol, 'fth_is_sorts_.____endfth, 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet, 'FTheory) op-hook('modSymbol, 'mod_is_sorts_._____endm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet, 'SModule) op-hook('thSymbol, 'th_is_sorts_._____endth, 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet, 'STheory) op-hook('smodSymbol, 'smod_is_sorts_._______endsm, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet, 'StratModule) op-hook('sthSymbol, 'sth_is_sorts_._______endsth, 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet, 'StratTheory) op-hook('sortMappingSymbol, 'sort_to_., 'Sort 'Sort, 'SortMapping) op-hook('emptySortMappingSetSymbol, 'none, nil, 'SortMappingSet) op-hook('sortMappingSetSymbol, '__, 'SortMappingSet 'SortMappingSet, 'SortMappingSet) op-hook('opMappingSymbol, 'op_to_., 'Qid 'Qid, 'OpMapping) op-hook('opSpecificMappingSymbol, 'op_:_->_to_., 'Qid 'TypeList 'Type 'Qid, 'OpMapping) op-hook('opTermMappingSymbol, 'op_to`term_., 'Term 'Term, 'OpMapping) op-hook('emptyOpMappingSetSymbol, 'none, nil, 'OpMappingSet) op-hook('opMappingSetSymbol, '__, 'OpMappingSet 'OpMappingSet, 'OpMappingSet) op-hook('stratMappingSymbol, 'strat_to_., 'Qid 'Qid, 'StratMapping) op-hook('stratSpecificMappingSymbol, 'strat_:_@_to_., 'Qid 'TypeList 'Type 'Qid, 'StratMapping) op-hook('stratExprMappingSymbol, 'strat_to`expr_., 'CallStrategy 'Strategy, 'StratMapping) op-hook('emptyStratMappingSetSymbol, 'none, nil, 'StratMappingSet) op-hook('stratMappingSetSymbol, '__, 'StratMappingSet 'StratMappingSet, 'StratMappingSet) op-hook('viewSymbol, 'view_from_to_is___endv, 'Header 'ModuleExpression 'ModuleExpression 'SortMappingSet 'OpMappingSet 'StratMappingSet, 'View) op-hook('anyTypeSymbol, 'anyType, nil, 'Type?) op-hook('unificandPairSymbol, '_=?_, 'Term 'Term, 'UnificandPair) op-hook('unificationConjunctionSymbol, '_/\_, 'UnificationProblem 'UnificationProblem, 'UnificationProblem) op-hook('patternSubjectPairSymbol, '_<=?_, 'Term 'Term, 'PatternSubjectPair) op-hook('matchingConjunctionSymbol, '_/\_, 'MatchingProblem 'MatchingProblem, 'MatchingProblem) op-hook('resultPairSymbol, '`{_`,_`}, 'Term 'Type, 'ResultPair) op-hook('resultTripleSymbol, '`{_`,_`,_`}, 'Term 'Type 'Substitution, 'ResultTriple) op-hook('result4TupleSymbol, '`{_`,_`,_`,_`}, 'Term 'Type 'Substitution 'Context, 'Result4Tuple) op-hook('matchPairSymbol, '`{_`,_`}, 'Substitution 'Context, 'MatchPair) op-hook('unificationTripleSymbol, '`{_`,_`,_`}, 'Substitution 'Substitution 'Qid, 'UnificationTriple) op-hook('variantSymbol, '`{_`,_`,_`,_`,_`}, 'Term 'Substitution 'Qid 'Parent 'Bool, 'Variant) op-hook('narrowingApplyResultSymbol, '`{_`,_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Context 'Qid 'Substitution 'Substitution 'Qid, 'NarrowingApplyResult) op-hook('narrowingSearchResultSymbol, '`{_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Substitution 'Qid 'Substitution 'Qid, 'NarrowingSearchResult) op-hook('traceStepSymbol, '`{_`,_`,_`}, 'Term 'Type 'Rule, 'TraceStep) op-hook('nilTraceSymbol, 'nil, nil, 'Trace) op-hook('traceSymbol, '__, 'Trace 'Trace, 'Trace) op-hook('narrowingStepSymbol, '`{_`,_`,_`,_`,_`,_`,_`}, 'Context 'Qid 'Substitution 'Qid 'Term 'Type 'Substitution, 'NarrowingStep) op-hook('nilNarrowingTraceSymbol, 'nil, nil, 'NarrowingTrace) op-hook('narrowingTraceSymbol, '__, 'NarrowingTrace 'NarrowingTrace, 'NarrowingTrace) op-hook('narrowingSearchPathResultSymbol, '`{_`,_`,_`,_`,_`,_`}, 'Term 'Type 'Substitution 'NarrowingTrace 'Substitution 'Qid, 'NarrowingSearchPathResult) op-hook('smtResultSymbol, '`{_`,_`,_`,_`}, 'Term 'Substitution 'Term 'Nat, 'SmtResult) op-hook('noParseSymbol, 'noParse, 'Nat, 'ResultPair?) op-hook('ambiguitySymbol, 'ambiguity, 'ResultPair 'ResultPair, 'ResultPair?) op-hook('failure2Symbol, 'failure, nil, 'ResultPair?) op-hook('failure3Symbol, 'failure, nil, 'ResultTriple?) op-hook('failureIncomplete3Symbol, 'failureIncomplete, nil, 'ResultTriple?) op-hook('failure4Symbol, 'failure, nil, 'Result4Tuple?) op-hook('noUnifierPairSymbol, 'noUnifier, nil, 'UnificationPair?) op-hook('noUnifierTripleSymbol, 'noUnifier, nil, 'UnificationTriple?) op-hook('noUnifierIncompletePairSymbol, 'noUnifierIncomplete, nil, 'UnificationPair?) op-hook('noUnifierIncompleteTripleSymbol, 'noUnifierIncomplete, nil, 'UnificationTriple?) op-hook('noVariantSymbol, 'noVariant, nil, 'Variant?) op-hook('noVariantIncompleteSymbol, 'noVariantIncomplete, nil, 'Variant?) op-hook('narrowingApplyFailureSymbol, 'failure, nil, 'NarrowingApplyResult?) op-hook('narrowingApplyFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingApplyResult?) op-hook('narrowingSearchFailureSymbol, 'failure, nil, 'NarrowingSearchResult?) op-hook('narrowingSearchFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingSearchResult?) op-hook('narrowingSearchPathFailureSymbol, 'failure, nil, 'NarrowingSearchPathResult?) op-hook('narrowingSearchPathFailureIncompleteSymbol, 'failureIncomplete, nil, 'NarrowingSearchPathResult?) op-hook('noMatchSubstSymbol, 'noMatch, nil, 'Substitution?) op-hook('noMatchIncompleteSubstSymbol, 'noMatchIncomplete, nil, 'Substitution?) op-hook('noMatchPairSymbol, 'noMatch, nil, 'MatchPair?) op-hook('failureTraceSymbol, 'failure, nil, 'Trace?) op-hook('smtFailureSymbol, 'failure, nil, 'SmtResult?) op-hook('noStratParseSymbol, 'noStratParse, 'Nat, 'Strategy?) op-hook('stratAmbiguitySymbol, 'ambiguity, 'Strategy 'Strategy, 'Strategy?) op-hook('mixfixSymbol, 'mixfix, nil, 'PrintOption) op-hook('withParensSymbol, 'with-parens, nil, 'PrintOption) op-hook('withSortsSymbol, 'with-sorts, nil, 'PrintOption) op-hook('flatSymbol, 'flat, nil, 'PrintOption) op-hook('formatPrintOptionSymbol, 'format, nil, 'PrintOption) op-hook('numberSymbol, 'number, nil, 'PrintOption) op-hook('ratSymbol, 'rat, nil, 'PrintOption) op-hook('emptyPrintOptionSetSymbol, 'none, nil, 'PrintOptionSet) op-hook('printOptionSetSymbol, '__, 'PrintOptionSet 'PrintOptionSet, 'PrintOptionSet) op-hook('delaySymbol, 'delay, nil, 'VariantOption) op-hook('filterSymbol, 'filter, nil, 'VariantOption) op-hook('emptyVariantOptionSetSymbol, 'none, nil, 'VariantOptionSet) op-hook('variantOptionSetSymbol, '__, 'VariantOptionSet 'VariantOptionSet, 'VariantOptionSet) op-hook('breadthFirstSymbol, 'breadthFirst, nil, 'SrewriteOption) op-hook('depthFirstSymbol, 'depthFirst, nil, 'SrewriteOption) op-hook('legacyUnificationPairSymbol, '`{_`,_`}, 'Substitution 'Nat, 'UnificationPair) op-hook('legacyUnificationTripleSymbol, '`{_`,_`,_`}, 'Substitution 'Substitution 'Nat, 'UnificationTriple) op-hook('legacyVariantSymbol, '`{_`,_`,_`,_`,_`}, 'Term 'Substitution 'Nat 'Parent 'Bool, 'Variant) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op 'metaRewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaRewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSearch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSearchPath : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Trace?`] [special( id-hook('MetaLevelOpSymbol, 'metaSearchPath) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSmtSearch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[SmtResult?`] [special( id-hook('MetaLevelOpSymbol, 'metaSmtSearch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaSrewrite : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[StrategyList`,Strategy?`] '`[SrewriteOption`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[ResultPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaSrewrite) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaUnify : '`[Module`] '`[UnificationProblem`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [ special( id-hook('MetaLevelOpSymbol, 'legacyMetaVariantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [none] . op 'metaVariantDisjointUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationTriple?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantDisjointUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantMatch : '`[Module`] '`[MatchingProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Substitution?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantMatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'legacyMetaVariantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [none] . op 'metaVariantUnify : '`[Module`] '`[UnificationProblem`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[VariantOptionSet`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaVariantUnify) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaXapply : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Substitution?`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[Result4Tuple?`] [special( id-hook('MetaLevelOpSymbol, 'metaXapply) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metaXmatch : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Condition`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] [special( id-hook('MetaLevelOpSymbol, 'metaXmatch) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'metadata : 'String -> 'Attr [ctor] . op 'min : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'minimalSorts : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaMinimalSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'mixfix : nil -> 'PrintOption [ctor] . op 'modExp : '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] '`[FindResult`,NatList`,Bound`,Parent`] -> '`[FindResult`,NatList`,Bound`,Parent`] [special( id-hook('NumberOpSymbol, 'modExp) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'mod_is_sorts_._____endm : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet -> 'SModule [ctor gather('& '& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'msg : nil -> 'Attr [ctor] . op 'narrowing : nil -> 'Attr [ctor] . op 'nil : nil -> 'EqCondition [ctor] . op 'nil : nil -> 'HookList [ctor] . op 'nil : nil -> 'ImportList [ctor] . op 'nil : nil -> 'NarrowingTrace [ctor] . op 'nil : nil -> 'NatList [ctor] . op 'nil : nil -> 'ParameterDeclList [ctor] . op 'nil : nil -> 'QidList [ctor] . op 'nil : nil -> 'Trace [ctor] . op 'nil : nil -> 'TypeList [ctor] . op 'noMatch : nil -> 'MatchPair? [ctor] . op 'noMatch : nil -> 'Substitution? [ctor] . op 'noMatchIncomplete : nil -> 'Substitution? [ctor] . op 'noParse : 'Nat -> 'ResultPair? [ctor] . op 'noStratParse : 'Nat -> 'Strategy? [ctor] . op 'noUnifier : nil -> 'UnificationPair? [ctor] . op 'noUnifier : nil -> 'UnificationTriple? [ctor] . op 'noUnifierIncomplete : nil -> 'UnificationPair? [ctor] . op 'noUnifierIncomplete : nil -> 'UnificationTriple? [ctor] . op 'noVariant : nil -> 'Variant? [ctor] . op 'noVariantIncomplete : nil -> 'Variant? [ctor] . op 'none : nil -> 'AttrSet [ctor] . op 'none : nil -> 'EmptyQidSet [ctor] . op 'none : nil -> 'EquationSet [ctor] . op 'none : nil -> 'MembAxSet [ctor] . op 'none : nil -> 'OpDeclSet [ctor] . op 'none : nil -> 'OpMappingSet [ctor] . op 'none : nil -> 'Parent [none] . op 'none : nil -> 'PrintOptionSet [ctor] . op 'none : nil -> 'QidSet [ctor] . op 'none : nil -> 'RuleSet [ctor] . op 'none : nil -> 'SortMappingSet [ctor] . op 'none : nil -> 'StratDeclSet [ctor] . op 'none : nil -> 'StratDefSet [ctor] . op 'none : nil -> 'StratMappingSet [ctor] . op 'none : nil -> 'SubsortDeclSet [ctor] . op 'none : nil -> 'Substitution [ctor] . op 'none : nil -> 'VariantOptionSet [ctor] . op 'nonexec : nil -> 'Attr [ctor] . op 'not : 'Strategy -> 'Strategy [ctor] . op 'notFound : nil -> 'FindResult [ctor] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op 'number : nil -> 'PrintOption [ctor] . op 'object : nil -> 'Attr [ctor] . op 'occurs : 'Nat 'NatList -> 'Bool [none] . op 'occurs : 'Qid 'QidList -> 'Bool [none] . op 'one : 'Strategy -> 'Strategy [ctor] . op 'op-hook : 'Qid 'Qid 'QidList 'Qid -> 'Hook [ctor format('nssss 'd)] . op 'op_:_->_`[_`]. : 'Qid 'TypeList 'Type 'AttrSet -> 'OpDecl [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'op_:_->_to_. : 'Qid 'TypeList 'Type 'Qid -> 'OpMapping [ctor] . op 'op_:_->_to_`[_`] : 'Qid 'TypeList 'Type 'Qid 'AttrSet -> 'Renaming [ctor format('d 'd 'd 'd 'd 'd 'd 'd 's 'd 'd 'd)] . op 'op_to_. : 'Qid 'Qid -> 'OpMapping [ctor] . op 'op_to_`[_`] : 'Qid 'Qid 'AttrSet -> 'Renaming [ctor format('d 'd 'd 'd 's 'd 'd 'd)] . op 'op_to`term_. : 'Term 'Term -> 'OpMapping [ctor] . op 'owise : nil -> 'Attr [ctor] . op 'pconst : nil -> 'Attr [ctor] . op 'poly : 'NeNatList -> 'Attr [ctor] . op 'portal : nil -> 'Attr [ctor] . op 'prec : 'Nat -> 'Attr [ctor] . op 'print : 'QidList -> 'Attr [ctor] . op 'protecting_. : 'ModuleExpression -> 'Import [ctor] . op 'qid : '`[String`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('QuotedIdentifierOpSymbol, 'qid) op-hook('quotedIdentifierSymbol, ', nil, 'Qid) op-hook('stringSymbol, ', nil, 'Char))] . op 'rat : nil -> 'PrintOption [ctor] . op 'reverse : 'NatList -> 'NatList [none] . op 'reverse : 'NeNatList -> 'NeNatList [none] . op 'reverse : 'NeQidList -> 'NeQidList [none] . op 'reverse : 'QidList -> 'QidList [none] . op 'rfind : 'String 'String 'Nat -> 'FindResult [special( id-hook('StringOpSymbol, 'rfind) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('notFoundTerm, 'notFound.FindResult))] . op 'right-id : 'Term -> 'Attr [ctor] . op 'rl_=>_`[_`]. : 'Term 'Term 'AttrSet -> 'Rule [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 's_ : 'Nat -> 'NzNat [iter ctor special( id-hook('SuccSymbol, nil) term-hook('zeroTerm, '0.Zero))] . op 'sameKind : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaSameKind) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'sd : 'Nat 'Nat -> 'Nat [comm special( id-hook('CUI_NumberOpSymbol, 'sd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'sd_:=_`[_`]. : 'CallStrategy 'Strategy 'AttrSet -> 'StratDefinition [ctor format('d 'd 'd 'd 's 'd 'd 's 'd)] . op 'size : 'NatList -> 'Nat [none] . op 'size : 'NeNatList -> 'NzNat [none] . op 'size : 'NeQidList -> 'NzNat [none] . op 'size : 'QidList -> 'Nat [none] . op 'smod_is_sorts_._______endsm : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet -> 'StratModule [ctor gather('& '& '& '& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'sortLeq : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaSortLeq) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'sort_to_ : 'Qid 'Qid -> 'Renaming [ctor] . op 'sort_to_. : 'Sort 'Sort -> 'SortMapping [ctor] . op 'special : 'NeHookList -> 'Attr [ctor] . op 'sth_is_sorts_._______endsth : 'Header 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet 'StratDeclSet 'StratDefSet -> 'StratTheory [ctor gather('& '& '& '& '& '& '& '& '& '&) format('d 'd 's 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'strat : 'NeNatList -> 'Attr [ctor] . op 'strat_:_@_`[_`]. : 'Qid 'TypeList 'Type 'AttrSet -> 'StratDecl [ctor format('d 'd 'd 'd 'd 'd 's 'd 'd 's 'd)] . op 'strat_:_@_to_ : 'Qid 'TypeList 'Type 'Qid -> 'Renaming [ctor] . op 'strat_:_@_to_. : 'Qid 'TypeList 'Type 'Qid -> 'StratMapping [ctor] . op 'strat_to_ : 'Qid 'Qid -> 'Renaming [ctor] . op 'strat_to_. : 'Qid 'Qid -> 'StratMapping [ctor] . op 'strat_to`expr_. : 'CallStrategy 'Strategy -> 'StratMapping [ctor] . op 'string : 'Qid -> 'String [special( id-hook('QuotedIdentifierOpSymbol, 'string) op-hook('quotedIdentifierSymbol, ', nil, 'Qid) op-hook('stringSymbol, ', nil, 'Char))] . op 'subsort_<_. : 'Sort 'Sort -> 'SubsortDecl [ctor] . op 'substr : 'String 'Nat 'Nat -> 'String [special( id-hook('StringOpSymbol, 'substr) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'tail : 'NeNatList -> 'NatList [none] . op 'tail : 'NeQidList -> 'QidList [none] . op 'term-hook : 'Qid 'Term -> 'Hook [ctor format('nssss 'd)] . op 'test : 'Strategy -> 'Strategy [ctor] . op 'th_is_sorts_._____endth : 'Qid 'ImportList 'SortSet 'SubsortDeclSet 'OpDeclSet 'MembAxSet 'EquationSet 'RuleSet -> 'STheory [ctor gather('& '& '& '& '& '& '& '&) format('d 'd 'd 'n++i 'ni 'd 'd 'ni 'ni 'ni 'ni 'ni 'n--i 'd)] . op 'top : 'RuleApplication -> 'Strategy [ctor] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . op 'try : 'Strategy -> 'Strategy [ctor] . op 'unbounded : nil -> 'Bound [ctor] . op 'union : 'NeQidSet 'QidSet -> 'NeQidSet [none] . op 'union : 'QidSet 'NeQidSet -> 'NeQidSet [none] . op 'union : 'QidSet 'QidSet -> 'QidSet [none] . op 'upEqs : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[EquationSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpEqs) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upImports : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[ImportList`] [special( id-hook('MetaLevelOpSymbol, 'metaUpImports) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upMbs : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[MembAxSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpMbs) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upModule : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[Module`] [special( id-hook('MetaLevelOpSymbol, 'metaUpModule) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upOpDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[OpDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpOpDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upRls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[RuleSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpRls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSds : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[StratDefSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSds) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSorts : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSorts) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upStratDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[StratDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpStratDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upSubsortDecls : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] '`[Bool`] -> '`[SubsortDeclSet`] [special( id-hook('MetaLevelOpSymbol, 'metaUpSubsortDecls) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upTerm : 'Universal -> 'Term [poly(1) special( id-hook('MetaLevelOpSymbol, 'metaUpTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upView : '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[View`] [special( id-hook('MetaLevelOpSymbol, 'metaUpView) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'upperCase : 'String -> 'String [special( id-hook('StringOpSymbol, 'upperCase) op-hook('stringSymbol, ', nil, 'Char))] . op 'variant : nil -> 'Attr [ctor] . op 'view_from_to_is___endv : 'Header 'ModuleExpression 'ModuleExpression 'SortMappingSet 'OpMappingSet 'StratMappingSet -> 'View [ctor gather('& '& '& '& '& '&) format('d 'd 'd 'd 'd 'd 'd 'n++i 'ni 'ni 'n--i 'd)] . op 'wellFormed : 'Module -> 'Bool [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedModule) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : '`[Module`] '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedTerm) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'wellFormed : '`[Module`] '`[Substitution?`] -> '`[Bool`] [special( id-hook('MetaLevelOpSymbol, 'metaWellFormedSubstitution) op-hook('shareWith, 'metaReduce, 'Module 'ModuleExpression, 'ResultPair?))] . op 'with-parens : nil -> 'PrintOption [ctor] . op 'with-sorts : nil -> 'PrintOption [ctor] . op 'xmatch_s.t._ : 'Term 'EqCondition -> 'Strategy [ctor prec(21)] . op 'xmatchrew_s.t._by_ : 'Term 'EqCondition 'UsingPairSet -> 'Strategy [ctor] . op '|_| : 'NeQidSet -> 'NzNat [none] . op '|_| : 'QidSet -> 'Nat [none] . none eq '$applySubstitution['Q:Qid, 'S:Substitution] = 'Q:Qid [owise] . eq '$applySubstitution['V:Variable, '_;_['S:Substitution, '_<-_['V:Variable, 'T:Term]]] = 'T:Term [none] . eq '$applySubstitution['_`,_['T:Term, 'TL:NeTermList], 'S:Substitution] = '_`,_['$applySubstitution['T:Term, 'S:Substitution], '$applySubstitution[ 'TL:NeTermList, 'S:Substitution]] [none] . eq '$applySubstitution['_`[_`]['Q:Qid, 'TL:NeTermList], 'S:Substitution] = '_`[_`]['Q:Qid, '$applySubstitution['TL:NeTermList, 'S:Substitution]] [ none] . eq '$card['none.EmptyQidSet, 'C:Nat] = 'C:Nat [none] . eq '$card['_;_['E:Qid, 'S:QidSet], 'C:Nat] = '$card['S:QidSet, '_+_['C:Nat, 's_['0.Zero]]] [owise] . eq '$card['_;_['N:NeQidSet, 'N:NeQidSet, 'S:QidSet], 'C:Nat] = '$card['_;_[ 'N:NeQidSet, 'S:QidSet], 'C:Nat] [none] . eq '$diff['none.EmptyQidSet, 'S':QidSet, 'A:QidSet] = 'A:QidSet [none] . eq '$diff['_;_['E:Qid, 'S:QidSet], 'S':QidSet, 'A:QidSet] = '$diff['S:QidSet, 'S':QidSet, 'if_then_else_fi['_in_['E:Qid, 'S':QidSet], 'A:QidSet, '_;_[ 'E:Qid, 'A:QidSet]]] [none] . eq '$intersect['none.EmptyQidSet, 'S':QidSet, 'A:QidSet] = 'A:QidSet [none] . eq '$intersect['_;_['E:Qid, 'S:QidSet], 'S':QidSet, 'A:QidSet] = '$intersect[ 'S:QidSet, 'S':QidSet, 'if_then_else_fi['_in_['E:Qid, 'S':QidSet], '_;_[ 'E:Qid, 'A:QidSet], 'A:QidSet]] [none] . eq '$reverse['nil.NatList, 'A:NatList] = 'A:NatList [none] . eq '$reverse['nil.TypeList, 'A:QidList] = 'A:QidList [none] . eq '$reverse['__['E:Nat, 'L:NatList], 'A:NatList] = '$reverse['L:NatList, '__['E:Nat, 'A:NatList]] [none] . eq '$reverse['__['E:Qid, 'L:QidList], 'A:QidList] = '$reverse['L:QidList, '__['E:Qid, 'A:QidList]] [none] . eq '$size['nil.NatList, 'C:Nat] = 'C:Nat [none] . eq '$size['nil.TypeList, 'C:Nat] = 'C:Nat [none] . eq '$size['__['E:Nat, 'L:NatList], 'C:Nat] = '$size['L:NatList, '_+_['C:Nat, 's_['0.Zero]]] [none] . eq '$size['__['E:Qid, 'L:QidList], 'C:Nat] = '$size['L:QidList, '_+_['C:Nat, 's_['0.Zero]]] [none] . eq '_;_['A:Assignment, 'A:Assignment] = 'A:Assignment [none] . eq '_;_['N:NeQidSet, 'N:NeQidSet] = 'N:NeQidSet [none] . eq '_;_['T:TypeList, 'T:TypeList] = 'T:TypeList [none] . eq '_\_['S:QidSet, 'N:NeQidSet] = '$diff['S:QidSet, 'N:NeQidSet, 'none.EmptyQidSet] [none] . eq '_\_['S:QidSet, 'none.EmptyQidSet] = 'S:QidSet [none] . eq '__['A:Attr, 'A:Attr] = 'A:Attr [none] . eq '__['D:StratDefinition, 'D:StratDefinition] = 'D:StratDefinition [none] . eq '__['E:Equation, 'E:Equation] = 'E:Equation [none] . eq '__['M:MembAx, 'M:MembAx] = 'M:MembAx [none] . eq '__['O:OpDecl, 'O:OpDecl] = 'O:OpDecl [none] . eq '__['O:OpMapping, 'O:OpMapping] = 'O:OpMapping [none] . eq '__['O:StratDecl, 'O:StratDecl] = 'O:StratDecl [none] . eq '__['R:Rule, 'R:Rule] = 'R:Rule [none] . eq '__['S:SortMapping, 'S:SortMapping] = 'S:SortMapping [none] . eq '__['S:StratMapping, 'S:StratMapping] = 'S:StratMapping [none] . eq '__['S:SubsortDecl, 'S:SubsortDecl] = 'S:SubsortDecl [none] . eq '_`,_['U:UsingPair, 'U:UsingPair] = 'U:UsingPair [none] . eq '_and-then_['false.Bool, 'B:`[Bool`]] = 'false.Bool [none] . eq '_and-then_['true.Bool, 'B:`[Bool`]] = 'B:`[Bool`] [none] . eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . eq '_in_['E:Qid, 'S:QidSet] = 'false.Bool [owise] . eq '_in_['E:Qid, '_;_['E:Qid, 'S:QidSet]] = 'true.Bool [none] . eq '_or-else_['false.Bool, 'B:`[Bool`]] = 'B:`[Bool`] [none] . eq '_or-else_['true.Bool, 'B:`[Bool`]] = 'true.Bool [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_psubset_['S:QidSet, 'S':QidSet] = '_and-then_['_=/=_['S:QidSet, 'S':QidSet], '_subset_['S:QidSet, 'S':QidSet]] [none] . eq '_subset_['none.EmptyQidSet, 'S':QidSet] = 'true.Bool [none] . eq '_subset_['_;_['E:Qid, 'S:QidSet], 'S':QidSet] = '_and-then_['_in_['E:Qid, 'S':QidSet], '_subset_['S:QidSet, 'S':QidSet]] [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq '`[_`]['Q:Qid] = 'sth_is_sorts_._______endsth['Q:Qid, 'including_.[ 'Q:Qid], 'none.EmptyQidSet, 'none.SubsortDeclSet, 'none.OpDeclSet, 'none.MembAxSet, 'none.EquationSet, 'none.RuleSet, 'none.StratDeclSet, 'none.StratDefSet] [none] . eq 'append['A:NatList, 'L:NatList] = '__['A:NatList, 'L:NatList] [none] . eq 'append['A:QidList, 'L:QidList] = '__['A:QidList, 'L:QidList] [none] . eq 'applySubstitution['M:Module, 'T:Term, 'S:Substitution] = 'getTerm[ 'metaNormalize['M:Module, '$applySubstitution['T:Term, 'S:Substitution]]] [ none] . eq 'delete['E:Qid, 'S:QidSet] = 'S:QidSet [owise] . eq 'delete['E:Qid, '_;_['E:Qid, 'S:QidSet]] = 'delete['E:Qid, 'S:QidSet] [ none] . eq 'front['__['L:NatList, 'E:Nat]] = 'L:NatList [none] . eq 'front['__['L:QidList, 'E:Qid]] = 'L:QidList [none] . eq 'getAccumulatedSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'A:Substitution [none] . eq 'getAccumulatedSubstitution['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'A:Substitution [ none] . eq 'getContext['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'C:Context [none] . eq 'getContext['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'C:Context [none] . eq 'getContext['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'C:Context [none] . eq 'getContext['`{_`,_`}['S:Substitution, 'C:Context]] = 'C:Context [none] . eq 'getEqs['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'EQS:EquationSet [none] . eq 'getEqs['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'EQS:EquationSet [none] . eq 'getEqs['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'EQS:EquationSet [none] . eq 'getEqs['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'EQS:EquationSet [none] . eq 'getEqs['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'EQS:EquationSet [ none] . eq 'getEqs['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'EQS:EquationSet [none] . eq 'getFrom['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'ME:ModuleExpression [none] . eq 'getImports['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'IL:ImportList [none] . eq 'getImports['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'IL:ImportList [none] . eq 'getImports['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'IL:ImportList [none] . eq 'getImports['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'IL:ImportList [none] . eq 'getImports['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'IL:ImportList [none] . eq 'getImports['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'IL:ImportList [none] . eq 'getInitialSubstitution['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'S:Substitution [none] . eq 'getInitialTerm['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:Term [none] . eq 'getInitialType['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:Type [none] . eq 'getLabel['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'L:Qid [none] . eq 'getLabel['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'L:Qid [none] . eq 'getLhsSubstitution['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'LS:Substitution [none] . eq 'getMbs['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'MAS:MembAxSet [ none] . eq 'getMbs['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'MAS:MembAxSet [none] . eq 'getMoreVariantsInLayerFlag['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'B:Bool [none] . eq 'getName['C:Constant] = 'qid['substr['string['C:Constant], '0.Zero, 'rfind['string['C:Constant], '".".Char, 'length['string['C:Constant]]]]] [ none] . eq 'getName['V:Variable] = 'qid['substr['string['V:Variable], '0.Zero, 'rfind['string['V:Variable], '":".Char, 'length['string['V:Variable]]]]] [ none] . eq 'getName['fmod_is_sorts_.____endfm['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'Q:Qid [none] . eq 'getName['fmod_is_sorts_.____endfm['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'Q:Qid [none] . eq 'getName['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'Q:Qid [none] . eq 'getName['mod_is_sorts_._____endm['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'Q:Qid [none] . eq 'getName['mod_is_sorts_._____endm['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'Q:Qid [none] . eq 'getName['smod_is_sorts_._______endsm['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'Q:Qid [none] . eq 'getName['smod_is_sorts_._______endsm['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'Q:Qid [none] . eq 'getName['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'Q:Qid [none] . eq 'getName['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'Q:Qid [none] . eq 'getName['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'Q:Qid [none] . eq 'getName['view_from_to_is___endv['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'Q:Qid [none] . eq 'getOpMappings['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'OMS:OpMappingSet [none] . eq 'getOps['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'OPDS:OpDeclSet [ none] . eq 'getOps['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'OPDS:OpDeclSet [none] . eq 'getParent['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'P:Parent [none] . eq 'getRhsSubstitution['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'RS:Substitution [none] . eq 'getRls['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.RuleSet [none] . eq 'getRls['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.RuleSet [none] . eq 'getRls['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'RLS:RuleSet [none] . eq 'getRls['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'RLS:RuleSet [none] . eq 'getRls['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'RLS:RuleSet [ none] . eq 'getRls['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'RLS:RuleSet [none] . eq 'getRule['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'R:Rule [none] . eq 'getRuleSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'RS:Substitution [none] . eq 'getSds['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDefSet [none] . eq 'getSds['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDefSet [none] . eq 'getSds['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDefSet [none] . eq 'getSds['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDFS:StratDefSet [none] . eq 'getSds['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDFS:StratDefSet [none] . eq 'getSds['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDefSet [none] . eq 'getSortMappings['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'SMS:SortMappingSet [none] . eq 'getSorts['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SS:SortSet [none] . eq 'getSorts['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SS:SortSet [none] . eq 'getSorts['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SS:SortSet [none] . eq 'getSorts['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SS:SortSet [none] . eq 'getSorts['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SS:SortSet [none] . eq 'getSorts['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SS:SortSet [none] . eq 'getStateVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'SV:Qid [none] . eq 'getStratMappings['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'TMS:StratMappingSet [none] . eq 'getStrats['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDeclSet [none] . eq 'getStrats['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDeclSet [none] . eq 'getStrats['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDeclSet [none] . eq 'getStrats['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDS:StratDeclSet [none] . eq 'getStrats['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDS:StratDeclSet [none] . eq 'getStrats['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDeclSet [none] . eq 'getSubsorts['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubstitution['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`}['S:Substitution, 'C:Context]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`}['S:Substitution, 'V:Qid]] = 'S:Substitution [ none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'T:Term [none] . eq 'getTerm['`{_`,_`}['T:Term, 'T:Type]] = 'T:Term [none] . eq 'getTermSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'TS:Substitution [none] . eq 'getTo['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'ME':ModuleExpression [none] . eq 'getTrace['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:NarrowingTrace [none] . eq 'getType['C:Constant] = 'qid['substr['string['C:Constant], '_+_['s_[ '0.Zero], 'rfind['string['C:Constant], '".".Char, 'length['string[ 'C:Constant]]]], 'length['string['C:Constant]]]] [none] . eq 'getType['V:Variable] = 'qid['substr['string['V:Variable], '_+_['s_[ '0.Zero], 'rfind['string['V:Variable], '":".Char, 'length['string[ 'V:Variable]]]], 'length['string['V:Variable]]]] [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'T:Type [none] . eq 'getType['`{_`,_`}['T:Term, 'T:Type]] = 'T:Type [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'U:Substitution [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'U:Substitution [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'U:Substitution [none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'UV:Qid [ none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'UV:Qid [none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'UV:Qid [ none] . eq 'getVariableFamily['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'getVariableFamily['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'Q:Qid [none] . eq 'getVariableFamily['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'getVariableFamily['`{_`,_`}['S:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'head['__['E:Nat, 'L:NatList]] = 'E:Nat [none] . eq 'head['__['E:Qid, 'L:QidList]] = 'E:Qid [none] . eq 'insert['E:Qid, 'S:QidSet] = '_;_['E:Qid, 'S:QidSet] [none] . eq 'intersection['S:QidSet, 'N:NeQidSet] = '$intersect['S:QidSet, 'N:NeQidSet, 'none.EmptyQidSet] [none] . eq 'intersection['S:QidSet, 'none.EmptyQidSet] = 'none.EmptyQidSet [none] . eq 'last['__['L:NatList, 'E:Nat]] = 'E:Nat [none] . eq 'last['__['L:QidList, 'E:Qid]] = 'E:Qid [none] . eq 'metaNarrowingApply['M:Module, 'T:Term, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaNarrowingApply['M:Module, 'T:Term, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaNarrowingSearch['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'N:Nat] = 'metaNarrowingSearch['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaNarrowingSearchPath['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'N:Nat] = 'metaNarrowingSearchPath['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaParse['M:Module, 'Q:QidList, 'T:Type?] = 'metaParse['M:Module, 'none.EmptyQidSet, 'Q:QidList, 'T:Type?] [none] . eq 'metaPrettyPrint['M:Module, 'T:Term] = 'metaPrettyPrint['M:Module, 'none.EmptyQidSet, 'T:Term, '__['mixfix.PrintOption, '__['flat.PrintOption, '__['format.PrintOption, '__['number.PrintOption, 'rat.PrintOption]]]], 'none.EmptyQidSet] [none] . eq 'metaPrettyPrint['M:Module, 'T:Term, 'P:PrintOptionSet] = 'metaPrettyPrint['M:Module, 'none.EmptyQidSet, 'T:Term, 'P:PrintOptionSet, 'none.EmptyQidSet] [none] . eq 'metaPrettyPrint['M:Module, 'VS:VariableSet, 'T:Term, 'P:PrintOptionSet] = 'metaPrettyPrint['M:Module, 'VS:VariableSet, 'T:Term, 'P:PrintOptionSet, 'none.EmptyQidSet] [none] . eq 'metaVariantDisjointUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaVariantDisjointUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaVariantUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaVariantUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . eq 'occurs['E:Nat, 'nil.NatList] = 'false.Bool [none] . eq 'occurs['E:Nat, '__['E':Nat, 'L:NatList]] = 'if_then_else_fi['_==_['E:Nat, 'E':Nat], 'true.Bool, 'occurs['E:Nat, 'L:NatList]] [none] . eq 'occurs['E:Qid, 'nil.TypeList] = 'false.Bool [none] . eq 'occurs['E:Qid, '__['E':Qid, 'L:QidList]] = 'if_then_else_fi['_==_['E:Qid, 'E':Qid], 'true.Bool, 'occurs['E:Qid, 'L:QidList]] [none] . eq 'reverse['L:NatList] = '$reverse['L:NatList, 'nil.NatList] [none] . eq 'reverse['L:QidList] = '$reverse['L:QidList, 'nil.TypeList] [none] . eq 'size['L:NatList] = '$size['L:NatList, '0.Zero] [none] . eq 'size['L:QidList] = '$size['L:QidList, '0.Zero] [none] . eq 'tail['__['E:Nat, 'L:NatList]] = 'L:NatList [none] . eq 'tail['__['E:Qid, 'L:QidList]] = 'L:QidList [none] . eq 'union['S:QidSet, 'S':QidSet] = '_;_['S:QidSet, 'S':QidSet] [none] . eq '|_|['S:QidSet] = '$card['S:QidSet, '0.Zero] [none] . endfm ========================================== reduce in META-LEVEL : upModule('STRING, true) . rewrites: 1 result FModule: fmod 'STRING is nil sorts 'Bool ; 'Char ; 'FindResult ; 'Nat ; 'NzNat ; 'String ; 'Zero . subsort 'Char < 'String . subsort 'Nat < 'FindResult . subsort 'NzNat < 'Nat . subsort 'Zero < 'Nat . op '0 : nil -> 'Zero [ctor] . op ' : nil -> 'Char [special( id-hook('StringSymbol, nil))] . op ' : nil -> 'String [special( id-hook('StringSymbol, nil))] . op '_&_ : 'Nat 'Nat -> 'Nat [assoc comm prec(53) special( id-hook('ACU_NumberOpSymbol, '&) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'Nat 'Nat -> 'Nat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_*_ : 'NzNat 'NzNat -> 'NzNat [assoc comm prec(31) special( id-hook('ACU_NumberOpSymbol, '*) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'Nat 'Nat -> 'Nat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(33) special( id-hook('ACU_NumberOpSymbol, '+) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_+_ : 'String 'String -> 'String [prec(33) gather('E 'e) special( id-hook('StringOpSymbol, '+) op-hook('stringSymbol, ', nil, 'Char))] . op '_<<_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '<<) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_<=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<=_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '<=) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '<) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_<_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '<) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_=/=_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'false.Bool) term-hook('notEqualTerm, 'true.Bool))] . op '_==_ : 'Universal 'Universal -> 'Bool [prec(51) poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'true.Bool) term-hook('notEqualTerm, 'false.Bool))] . op '_>=_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>=) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>=_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '>=) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>>_ : 'Nat 'Nat -> 'Nat [prec(35) gather('E 'e) special( id-hook('NumberOpSymbol, '>>) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_>_ : 'Nat 'Nat -> 'Bool [prec(37) special( id-hook('NumberOpSymbol, '>) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_>_ : 'String 'String -> 'Bool [prec(37) special( id-hook('StringOpSymbol, '>) op-hook('stringSymbol, ', nil, 'Char) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_^_ : 'Nat 'Nat -> 'Nat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_^_ : 'NzNat 'Nat -> 'NzNat [prec(29) gather('E 'e) special( id-hook('NumberOpSymbol, '^) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_and_ : 'Bool 'Bool -> 'Bool [assoc comm prec(55)] . op '_divides_ : 'NzNat 'Nat -> 'Bool [prec(51) special( id-hook('NumberOpSymbol, 'divides) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op '_implies_ : 'Bool 'Bool -> 'Bool [prec(61) gather('e 'E)] . op '_or_ : 'Bool 'Bool -> 'Bool [assoc comm prec(59)] . op '_quo_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'quo) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_rem_ : 'Nat 'NzNat -> 'Nat [prec(31) gather('E 'e) special( id-hook('NumberOpSymbol, 'rem) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_xor_ : 'Bool 'Bool -> 'Bool [assoc comm prec(57)] . op '_xor_ : 'Nat 'Nat -> 'Nat [assoc comm prec(55) special( id-hook('ACU_NumberOpSymbol, 'xor) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'Nat 'Nat -> 'Nat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op '_|_ : 'NzNat 'Nat -> 'NzNat [assoc comm prec(57) special( id-hook('ACU_NumberOpSymbol, '|) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'ascii : 'Char -> 'Nat [special( id-hook('StringOpSymbol, 'ascii) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'char : '`[FindResult`] -> '`[String`] [special( id-hook('StringOpSymbol, 'char) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'false : nil -> 'Bool [ctor special( id-hook('SystemFalse, nil))] . op 'find : 'String 'String 'Nat -> 'FindResult [special( id-hook('StringOpSymbol, 'find) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('notFoundTerm, 'notFound.FindResult))] . op 'gcd : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'gcd : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'gcd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'if_then_else_fi : 'Bool 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'true.Bool) term-hook('2, 'false.Bool))] . op 'lcm : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lcm : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'lcm) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'length : 'String -> 'Nat [special( id-hook('StringOpSymbol, 'length) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'lowerCase : 'String -> 'String [special( id-hook('StringOpSymbol, 'lowerCase) op-hook('stringSymbol, ', nil, 'Char))] . op 'max : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'max : 'NzNat 'Nat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'max) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'Nat 'Nat -> 'Nat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'min : 'NzNat 'NzNat -> 'NzNat [assoc comm special( id-hook('ACU_NumberOpSymbol, 'min) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'modExp : '`[FindResult`] '`[FindResult`] '`[FindResult`] -> '`[FindResult`] [special( id-hook('NumberOpSymbol, 'modExp) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'notFound : nil -> 'FindResult [ctor] . op 'not_ : 'Bool -> 'Bool [prec(53)] . op 'rfind : 'String 'String 'Nat -> 'FindResult [special( id-hook('StringOpSymbol, 'rfind) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat) term-hook('notFoundTerm, 'notFound.FindResult))] . op 's_ : 'Nat -> 'NzNat [iter ctor special( id-hook('SuccSymbol, nil) term-hook('zeroTerm, '0.Zero))] . op 'sd : 'Nat 'Nat -> 'Nat [comm special( id-hook('CUI_NumberOpSymbol, 'sd) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'substr : 'String 'Nat 'Nat -> 'String [special( id-hook('StringOpSymbol, 'substr) op-hook('stringSymbol, ', nil, 'Char) op-hook('succSymbol, 's_, 'Nat, 'NzNat))] . op 'true : nil -> 'Bool [ctor special( id-hook('SystemTrue, nil))] . op 'upperCase : 'String -> 'String [special( id-hook('StringOpSymbol, 'upperCase) op-hook('stringSymbol, ', nil, 'Char))] . none eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . endfm ========================================== reduce in META-LEVEL : metaReduce(upModule('STRING, true), '_+_[upTerm("a"), upTerm("b")]) . rewrites: 5 result ResultPair: {'"ab".String, 'String} ========================================== reduce in META-LEVEL : metaReduce(upModule('META-LEVEL, true), 'modExp[upTerm( 100), upTerm(66), upTerm(17)]) . rewrites: 7 result ResultPair: {'s_^4['0.Zero], 'NzNat} ========================================== reduce in META-LEVEL : metaReduce(upModule('META-LEVEL, true), 'upModule[ upTerm('META-LEVEL), upTerm(true)]) . rewrites: 7 result ResultPair: {'fmod_is_sorts_.____endfm[''META-LEVEL.Sort, 'nil.ImportList, '_;_[''Assignment.Sort, ''Attr.Sort, ''AttrSet.Sort, ''Bool.Sort, ''Bound.Sort, ''CallStrategy.Sort, ''Char.Sort, ''Condition.Sort, ''Constant.Sort, ''Context.Sort, ''EmptyCommaList.Sort, ''EmptyQidSet.Sort, ''EqCondition.Sort, ''Equation.Sort, ''EquationSet.Sort, ''Expression.Sort, ''FModule.Sort, ''FTheory.Sort, ''FindResult.Sort, ''GTermList.Sort, ''GroundTerm.Sort, ''GroundTermList.Sort, ''Header.Sort, ''Hook.Sort, ''HookList.Sort, ''Import.Sort, ''ImportList.Sort, ''Kind.Sort, ''KindSet.Sort, ''MatchOrUnificationPair.Sort, ''MatchPair.Sort, ''MatchPair?.Sort, ''MatchingProblem.Sort, ''MembAx.Sort, ''MembAxSet.Sort, ''Module.Sort, ''ModuleExpression.Sort, ''NarrowingApplyResult.Sort, ''NarrowingApplyResult?.Sort, ''NarrowingSearchPathResult.Sort, ''NarrowingSearchPathResult?.Sort, ''NarrowingSearchResult.Sort, ''NarrowingSearchResult?.Sort, ''NarrowingStep.Sort, ''NarrowingTrace.Sort, ''Nat.Sort, ''NatList.Sort, ''NeCTermList.Sort, ''NeGroundTermList.Sort, ''NeHookList.Sort, ''NeKindSet.Sort, ''NeNatList.Sort, ''NeParameterDeclList.Sort, ''NeParameterList.Sort, ''NeQidList.Sort, ''NeQidSet.Sort, ''NeSortSet.Sort, ''NeTermList.Sort, ''NeTypeList.Sort, ''NeTypeSet.Sort, ''NeVariableSet.Sort, ''NzNat.Sort, ''OpDecl.Sort, ''OpDeclSet.Sort, ''OpMapping.Sort, ''OpMappingSet.Sort, ''ParameterDecl.Sort, ''ParameterDeclList.Sort, ''ParameterList.Sort, ''Parent.Sort, ''PatternSubjectPair.Sort, ''PrintOption.Sort, ''PrintOptionSet.Sort, ''Qid.Sort, ''QidList.Sort, ''QidSet.Sort, ''Renaming.Sort, ''RenamingSet.Sort, ''Result4Tuple.Sort, ''Result4Tuple?.Sort, ''ResultPair.Sort, ''ResultPair?.Sort, ''ResultTriple.Sort, ''ResultTriple?.Sort, ''Rule.Sort, ''RuleApplication.Sort, ''RuleSet.Sort, ''SModule.Sort, ''STheory.Sort, ''SmtResult.Sort, ''SmtResult?.Sort, ''Sort.Sort, ''SortMapping.Sort, ''SortMappingSet.Sort, ''SortSet.Sort, ''SrewriteOption.Sort, ''StratDecl.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort, ''StratDefinition.Sort, ''StratMapping.Sort, ''StratMappingSet.Sort, ''StratModule.Sort, ''StratTheory.Sort, ''Strategy.Sort, ''Strategy?.Sort, ''StrategyList.Sort, ''String.Sort, ''SubsortDecl.Sort, ''SubsortDeclSet.Sort, ''Substitution.Sort, ''Substitution?.Sort, ''Term.Sort, ''TermList.Sort, ''TermQid.Sort, ''Trace.Sort, ''Trace?.Sort, ''TraceStep.Sort, ''Type.Sort, ''Type?.Sort, ''TypeList.Sort, ''TypeListSet.Sort, ''TypeSet.Sort, ''UnificandPair.Sort, ''UnificationPair.Sort, ''UnificationPair?.Sort, ''UnificationProblem.Sort, ''UnificationTriple.Sort, ''UnificationTriple?.Sort, ''UsingPair.Sort, ''UsingPairSet.Sort, ''Variable.Sort, ''VariableSet.Sort, ''Variant.Sort, ''Variant?.Sort, ''VariantOption.Sort, ''VariantOptionSet.Sort, ''View.Sort, ''ViewExpression.Sort, ''Zero.Sort], '__['subsort_<_.[ ''Assignment.Sort, ''Substitution.Sort], 'subsort_<_.[''Attr.Sort, ''AttrSet.Sort], 'subsort_<_.[''CallStrategy.Sort, ''Strategy.Sort], 'subsort_<_.[''Char.Sort, ''String.Sort], 'subsort_<_.[''Constant.Sort, ''GroundTerm.Sort], 'subsort_<_.[''Constant.Sort, ''TermQid.Sort], 'subsort_<_.[''Context.Sort, ''NeCTermList.Sort], 'subsort_<_.[ ''EmptyCommaList.Sort, ''GroundTermList.Sort], 'subsort_<_.[ ''EmptyCommaList.Sort, ''ParameterList.Sort], 'subsort_<_.[ ''EmptyQidSet.Sort, ''KindSet.Sort], 'subsort_<_.[''EmptyQidSet.Sort, ''SortSet.Sort], 'subsort_<_.[''EmptyQidSet.Sort, ''VariableSet.Sort], 'subsort_<_.[''EqCondition.Sort, ''Condition.Sort], 'subsort_<_.[ ''Equation.Sort, ''EquationSet.Sort], 'subsort_<_.[''Expression.Sort, ''ModuleExpression.Sort], 'subsort_<_.[''Expression.Sort, ''ViewExpression.Sort], 'subsort_<_.[''FModule.Sort, ''SModule.Sort], 'subsort_<_.[''FTheory.Sort, ''STheory.Sort], 'subsort_<_.[ ''GroundTerm.Sort, ''NeGroundTermList.Sort], 'subsort_<_.[ ''GroundTerm.Sort, ''Term.Sort], 'subsort_<_.[''GroundTermList.Sort, ''TermList.Sort], 'subsort_<_.[''Hook.Sort, ''NeHookList.Sort], 'subsort_<_.[''Import.Sort, ''ImportList.Sort], 'subsort_<_.[''Kind.Sort, ''NeKindSet.Sort], 'subsort_<_.[''Kind.Sort, ''Type.Sort], 'subsort_<_.[ ''KindSet.Sort, ''TypeSet.Sort], 'subsort_<_.[''MatchPair.Sort, ''MatchOrUnificationPair.Sort], 'subsort_<_.[''MatchPair.Sort, ''MatchPair?.Sort], 'subsort_<_.[''MembAx.Sort, ''MembAxSet.Sort], 'subsort_<_.[''NarrowingApplyResult.Sort, ''NarrowingApplyResult?.Sort], 'subsort_<_.[''NarrowingSearchPathResult.Sort, ''NarrowingSearchPathResult?.Sort], 'subsort_<_.[ ''NarrowingSearchResult.Sort, ''NarrowingSearchResult?.Sort], 'subsort_<_.[ ''NarrowingStep.Sort, ''NarrowingTrace.Sort], 'subsort_<_.[''Nat.Sort, ''Bound.Sort], 'subsort_<_.[''Nat.Sort, ''FindResult.Sort], 'subsort_<_.[ ''Nat.Sort, ''NeNatList.Sort], 'subsort_<_.[''Nat.Sort, ''Parent.Sort], 'subsort_<_.[''NeCTermList.Sort, ''GTermList.Sort], 'subsort_<_.[ ''NeGroundTermList.Sort, ''GroundTermList.Sort], 'subsort_<_.[ ''NeGroundTermList.Sort, ''NeTermList.Sort], 'subsort_<_.[ ''NeHookList.Sort, ''HookList.Sort], 'subsort_<_.[''NeKindSet.Sort, ''KindSet.Sort], 'subsort_<_.[''NeKindSet.Sort, ''NeTypeSet.Sort], 'subsort_<_.[''NeNatList.Sort, ''NatList.Sort], 'subsort_<_.[ ''NeParameterDeclList.Sort, ''ParameterDeclList.Sort], 'subsort_<_.[ ''NeParameterList.Sort, ''ParameterList.Sort], 'subsort_<_.[ ''NeQidList.Sort, ''QidList.Sort], 'subsort_<_.[''NeQidSet.Sort, ''QidSet.Sort], 'subsort_<_.[''NeSortSet.Sort, ''NeTypeSet.Sort], 'subsort_<_.[''NeSortSet.Sort, ''SortSet.Sort], 'subsort_<_.[ ''NeTermList.Sort, ''TermList.Sort], 'subsort_<_.[''NeTypeList.Sort, ''NeQidList.Sort], 'subsort_<_.[''NeTypeList.Sort, ''TypeList.Sort], 'subsort_<_.[''NeTypeSet.Sort, ''NeQidSet.Sort], 'subsort_<_.[ ''NeTypeSet.Sort, ''TypeSet.Sort], 'subsort_<_.[''NeVariableSet.Sort, ''NeQidSet.Sort], 'subsort_<_.[''NeVariableSet.Sort, ''VariableSet.Sort], 'subsort_<_.[''NzNat.Sort, ''Nat.Sort], 'subsort_<_.[''OpDecl.Sort, ''OpDeclSet.Sort], 'subsort_<_.[''OpMapping.Sort, ''OpMappingSet.Sort], 'subsort_<_.[''ParameterDecl.Sort, ''NeParameterDeclList.Sort], 'subsort_<_.[''PatternSubjectPair.Sort, ''MatchingProblem.Sort], 'subsort_<_.[''PrintOption.Sort, ''PrintOptionSet.Sort], 'subsort_<_.[ ''Qid.Sort, ''Header.Sort], 'subsort_<_.[''Qid.Sort, ''NeQidList.Sort], 'subsort_<_.[''Qid.Sort, ''NeQidSet.Sort], 'subsort_<_.[''Renaming.Sort, ''RenamingSet.Sort], 'subsort_<_.[''Result4Tuple.Sort, ''Result4Tuple?.Sort], 'subsort_<_.[''ResultPair.Sort, ''ResultPair?.Sort], 'subsort_<_.[''ResultTriple.Sort, ''ResultTriple?.Sort], 'subsort_<_.[ ''Rule.Sort, ''RuleSet.Sort], 'subsort_<_.[''RuleApplication.Sort, ''Strategy.Sort], 'subsort_<_.[''SModule.Sort, ''Module.Sort], 'subsort_<_.[''SModule.Sort, ''StratModule.Sort], 'subsort_<_.[ ''STheory.Sort, ''Module.Sort], 'subsort_<_.[''STheory.Sort, ''StratTheory.Sort], 'subsort_<_.[''SmtResult.Sort, ''SmtResult?.Sort], 'subsort_<_.[''Sort.Sort, ''Expression.Sort], 'subsort_<_.[''Sort.Sort, ''NeSortSet.Sort], 'subsort_<_.[''Sort.Sort, ''Type.Sort], 'subsort_<_.[ ''SortMapping.Sort, ''SortMappingSet.Sort], 'subsort_<_.[''SortSet.Sort, ''TypeSet.Sort], 'subsort_<_.[''StratDecl.Sort, ''StratDeclSet.Sort], 'subsort_<_.[''StratDefinition.Sort, ''StratDefSet.Sort], 'subsort_<_.[ ''StratMapping.Sort, ''StratMappingSet.Sort], 'subsort_<_.[ ''StratModule.Sort, ''Module.Sort], 'subsort_<_.[''StratTheory.Sort, ''Module.Sort], 'subsort_<_.[''Strategy.Sort, ''Strategy?.Sort], 'subsort_<_.[''Strategy.Sort, ''StrategyList.Sort], 'subsort_<_.[ ''SubsortDecl.Sort, ''SubsortDeclSet.Sort], 'subsort_<_.[ ''Substitution.Sort, ''Substitution?.Sort], 'subsort_<_.[''Term.Sort, ''NeTermList.Sort], 'subsort_<_.[''TermList.Sort, ''GTermList.Sort], 'subsort_<_.[''TermQid.Sort, ''Qid.Sort], 'subsort_<_.[''TermQid.Sort, ''Term.Sort], 'subsort_<_.[''Trace.Sort, ''Trace?.Sort], 'subsort_<_.[ ''TraceStep.Sort, ''Trace.Sort], 'subsort_<_.[''Type.Sort, ''NeTypeList.Sort], 'subsort_<_.[''Type.Sort, ''NeTypeSet.Sort], 'subsort_<_.[''Type.Sort, ''Qid.Sort], 'subsort_<_.[''Type.Sort, ''Type?.Sort], 'subsort_<_.[''TypeList.Sort, ''QidList.Sort], 'subsort_<_.[ ''TypeList.Sort, ''TypeListSet.Sort], 'subsort_<_.[''TypeSet.Sort, ''QidSet.Sort], 'subsort_<_.[''TypeSet.Sort, ''TypeListSet.Sort], 'subsort_<_.[''UnificandPair.Sort, ''UnificationProblem.Sort], 'subsort_<_.[''UnificationPair.Sort, ''MatchOrUnificationPair.Sort], 'subsort_<_.[''UnificationPair.Sort, ''UnificationPair?.Sort], 'subsort_<_.[''UnificationTriple.Sort, ''UnificationTriple?.Sort], 'subsort_<_.[''UsingPair.Sort, ''UsingPairSet.Sort], 'subsort_<_.[ ''Variable.Sort, ''NeVariableSet.Sort], 'subsort_<_.[''Variable.Sort, ''TermQid.Sort], 'subsort_<_.[''VariableSet.Sort, ''QidSet.Sort], 'subsort_<_.[''Variant.Sort, ''Variant?.Sort], 'subsort_<_.[ ''VariantOption.Sort, ''VariantOptionSet.Sort], 'subsort_<_.[ ''ViewExpression.Sort, ''NeParameterList.Sort], 'subsort_<_.[''Zero.Sort, ''Nat.Sort]], '__['op_:_->_`[_`].[''$applySubstitution.Sort, '__[ ''NeTermList.Sort, ''Substitution.Sort], ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$card.Sort, '__[''QidSet.Sort, ''Nat.Sort], ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$diff.Sort, '__[''QidSet.Sort, ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$intersect.Sort, '__[''QidSet.Sort, ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''$reverse.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$reverse.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''$size.Sort, '__[''NatList.Sort, ''Nat.Sort], ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$size.Sort, '__[''QidList.Sort, ''Nat.Sort], ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''0.Sort, 'nil.TypeList, ''Zero.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''.Sort, 'nil.TypeList, ''Constant.Sort, 'special['id-hook[''QuotedIdentifierSymbol.Sort, ''constantQid.Sort]]], 'op_:_->_`[_`].[''.Sort, 'nil.TypeList, ''Kind.Sort, 'special[ 'id-hook[''QuotedIdentifierSymbol.Sort, ''kindQid.Sort]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Qid.Sort, 'special['id-hook[ ''QuotedIdentifierSymbol.Sort, 'nil.TypeList]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Sort.Sort, 'special['id-hook[ ''QuotedIdentifierSymbol.Sort, ''sortQid.Sort]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Variable.Sort, 'special['id-hook[ ''QuotedIdentifierSymbol.Sort, ''variableQid.Sort]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Char.Sort, 'special['id-hook[ ''StringSymbol.Sort, 'nil.TypeList]]], 'op_:_->_`[_`].[''.Sort, 'nil.TypeList, ''String.Sort, 'special['id-hook[''StringSymbol.Sort, 'nil.TypeList]]], 'op_:_->_`[_`].[''_!.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_&_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^53[ '0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''&.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_*.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_*_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'prec['s_^31['0.Zero]], 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''*.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_*_.Sort, '__[ ''NzNat.Sort, ''NzNat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^31['0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''*.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_*`(_`).Sort, '__[ ''ModuleExpression.Sort, ''RenamingSet.Sort], ''ModuleExpression.Sort, '__[ 'ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''n--i.Sort, ''d.Sort]], 'prec['s_^39['0.Zero]]]], 'op_:_->_`[_`].[ ''_+.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''_+_.Sort, '__[''ModuleExpression.Sort, ''ModuleExpression.Sort], ''ModuleExpression.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr]], 'op_:_->_`[_`].[''_+_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'prec['s_^33['0.Zero]], 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''+.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_+_.Sort, '__[ ''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^33['0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''+.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_+_.Sort, '__[''String.Sort, ''String.Sort], ''String.Sort, '__['gather['__[''E.Sort, ''e.Sort]], 'prec[ 's_^33['0.Zero]], 'special['__['id-hook[''StringOpSymbol.Sort, ''+.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]]], 'op_:_->_`[_`].[''_/\_.Sort, '__[''Condition.Sort, ''Condition.Sort], ''Condition.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.EqCondition.Constant], 'prec['s_^73['0.Zero]]]], 'op_:_->_`[_`].[ ''_/\_.Sort, '__[''EqCondition.Sort, ''EqCondition.Sort], ''EqCondition.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.EqCondition.Constant], 'prec['s_^73['0.Zero]]]], 'op_:_->_`[_`].[ ''_/\_.Sort, '__[''MatchingProblem.Sort, ''MatchingProblem.Sort], ''MatchingProblem.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec[ 's_^73['0.Zero]]]], 'op_:_->_`[_`].[''_/\_.Sort, '__[ ''UnificationProblem.Sort, ''UnificationProblem.Sort], ''UnificationProblem.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec[ 's_^73['0.Zero]]]], 'op_:_->_`[_`].[''_::_.Variable, '__[''Sort.Sort, ''ModuleExpression.Sort], ''ParameterDecl.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_:=_.Variable, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_:_.Variable, '__[''Term.Sort, ''Sort.Sort], ''EqCondition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''EmptyQidSet.Sort, ''EmptyQidSet.Sort], ''EmptyQidSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''KindSet.Sort, ''KindSet.Sort], ''KindSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeKindSet.Sort, ''KindSet.Sort], ''NeKindSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeQidSet.Sort, ''QidSet.Sort], ''NeQidSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''NeSortSet.Sort, ''SortSet.Sort], ''NeSortSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeTypeSet.Sort, ''TypeSet.Sort], ''NeTypeSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeVariableSet.Sort, ''VariableSet.Sort], ''NeVariableSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''SortSet.Sort, ''SortSet.Sort], ''SortSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[''idle.Strategy.Constant], 'prec['s_^39['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''Substitution.Sort, ''Substitution.Sort], ''Substitution.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.Substitution.Constant], 'prec['s_^65['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''TypeListSet.Sort, ''TypeListSet.Sort], ''TypeListSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''TypeSet.Sort, ''TypeSet.Sort], ''TypeSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[ ''VariableSet.Sort, ''VariableSet.Sort], ''VariableSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_<-_.Sort, '__[''Variable.Sort, ''Term.Sort], ''Assignment.Sort, '__['ctor.Attr, 'format['__[''n++i.Sort, ''d.Sort, ''d.Sort, ''--.Sort]], 'prec['s_^63['0.Zero]]]], 'op_:_->_`[_`].[ ''_<<_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['gather['__[ ''E.Sort, ''e.Sort]], 'prec['s_^35['0.Zero]], 'special['__['id-hook[ ''NumberOpSymbol.Sort, ''<<.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_<=?_.Sort, '__[ ''Term.Sort, ''Term.Sort], ''PatternSubjectPair.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_<=_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''<=.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_<=_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''<=.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_<_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''<.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_<_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''<.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_=/=_.Sort, '__[ ''Universal.Sort, ''Universal.Sort], ''Bool.Sort, '__['poly['__['s_[ '0.Zero], 's_^2['0.Zero]]], 'prec['s_^51['0.Zero]], 'special['__['id-hook[ ''EqualitySymbol.Sort, 'nil.TypeList], 'term-hook[''equalTerm.Sort, ''false.Bool.Constant], 'term-hook[''notEqualTerm.Sort, ''true.Bool.Constant]]]]], 'op_:_->_`[_`].[''_==_.Sort, '__[ ''Universal.Sort, ''Universal.Sort], ''Bool.Sort, '__['poly['__['s_[ '0.Zero], 's_^2['0.Zero]]], 'prec['s_^51['0.Zero]], 'special['__['id-hook[ ''EqualitySymbol.Sort, 'nil.TypeList], 'term-hook[''equalTerm.Sort, ''true.Bool.Constant], 'term-hook[''notEqualTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_=>_.Sort, '__[''Term.Sort, ''Term.Sort], ''Condition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''UnificandPair.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_=_.Sort, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_>=_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__[ 'prec['s_^37['0.Zero]], 'special['__['id-hook[''NumberOpSymbol.Sort, ''>=.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[ ''_>=_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec[ 's_^37['0.Zero]], 'special['__['id-hook[''StringOpSymbol.Sort, ''>=.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[ ''_>>_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['gather['__[ ''E.Sort, ''e.Sort]], 'prec['s_^35['0.Zero]], 'special['__['id-hook[ ''NumberOpSymbol.Sort, ''>>.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_>_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''>.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_>_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''>.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_?_:_.Variable, '__[ ''Strategy.Sort, ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__[ 'ctor.Attr, 'prec['s_^55['0.Zero]]]], 'op_:_->_`[_`].[''_\_.Sort, '__[ ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'gather['__[''E.Sort, ''e.Sort]]], 'op_:_->_`[_`].[''_^_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['gather['__[''E.Sort, ''e.Sort]], 'prec['s_^29['0.Zero]], 'special['__['id-hook[''NumberOpSymbol.Sort, ''^.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_^_.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['gather['__[''E.Sort, ''e.Sort]], 'prec['s_^29['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''^.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''AttrSet.Sort, ''AttrSet.Sort], ''AttrSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.AttrSet.Constant]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''EquationSet.Sort, ''EquationSet.Sort], ''EquationSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]], 'id[''none.EquationSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[''HookList.Sort, ''HookList.Sort], ''HookList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.HookList.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''HookList.Sort, ''NeHookList.Sort], ''NeHookList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.HookList.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''ImportList.Sort, ''ImportList.Sort], ''ImportList.Sort, '__['assoc.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]], 'id[ ''nil.ImportList.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''MembAxSet.Sort, ''MembAxSet.Sort], ''MembAxSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]], 'id[ ''none.MembAxSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''NarrowingTrace.Sort, ''NarrowingTrace.Sort], ''NarrowingTrace.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.NarrowingTrace.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.NatList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''NatList.Sort, ''NeNatList.Sort], ''NeNatList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.NatList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''NeHookList.Sort, ''HookList.Sort], ''NeHookList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.HookList.Constant]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''NeNatList.Sort, ''NatList.Sort], ''NeNatList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.NatList.Constant], 'prec['s_^25[ '0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''NeQidList.Sort, ''QidList.Sort], ''NeQidList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''NeTypeList.Sort, ''TypeList.Sort], ''NeTypeList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25[ '0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''OpDeclSet.Sort, ''OpDeclSet.Sort], ''OpDeclSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]], 'id[ ''none.OpDeclSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''OpMappingSet.Sort, ''OpMappingSet.Sort], ''OpMappingSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]], 'id[''none.OpMappingSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[''PrintOptionSet.Sort, ''PrintOptionSet.Sort], ''PrintOptionSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.PrintOptionSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''QidList.Sort, ''NeQidList.Sort], ''NeQidList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''RuleSet.Sort, ''RuleSet.Sort], ''RuleSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]], 'id[ ''none.RuleSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''SortMappingSet.Sort, ''SortMappingSet.Sort], ''SortMappingSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]], 'id[''none.SortMappingSet.Constant]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''StratDeclSet.Sort, ''StratDeclSet.Sort], ''StratDeclSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[ ''d.Sort, ''ni.Sort, ''d.Sort]], 'id[''none.StratDeclSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[''StratDefSet.Sort, ''StratDefSet.Sort], ''StratDefSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[ ''d.Sort, ''ni.Sort, ''d.Sort]], 'id[''none.StratDefSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[''StratMappingSet.Sort, ''StratMappingSet.Sort], ''StratMappingSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]], 'id[ ''none.StratMappingSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''SubsortDeclSet.Sort, ''SubsortDeclSet.Sort], ''SubsortDeclSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]], 'id[''none.SubsortDeclSet.Constant]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''Trace.Sort, ''Trace.Sort], ''Trace.Sort, '__['assoc.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''n.Sort, ''d.Sort]], 'id[ ''nil.Trace.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[''TypeList.Sort, ''NeTypeList.Sort], ''NeTypeList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''TypeList.Sort, ''TypeList.Sort], ''TypeList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25[ '0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''VariantOptionSet.Sort, ''VariantOptionSet.Sort], ''VariantOptionSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.VariantOptionSet.Constant]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''EmptyCommaList.Sort, ''EmptyCommaList.Sort], ''EmptyCommaList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''GTermList.Sort, ''GTermList.Sort], ''GTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''GroundTermList.Sort, ''GroundTermList.Sort], ''GroundTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''GroundTermList.Sort, ''NeGroundTermList.Sort], ''NeGroundTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''NeCTermList.Sort, ''TermList.Sort], ''NeCTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121[ '0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''NeGroundTermList.Sort, ''GroundTermList.Sort], ''NeGroundTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''NeParameterDeclList.Sort, ''ParameterDeclList.Sort], ''NeParameterDeclList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.ParameterDeclList.Constant], 'prec['s_^121[ '0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''NeParameterList.Sort, ''ParameterList.Sort], ''NeParameterList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''NeTermList.Sort, ''TermList.Sort], ''NeTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''ParameterDeclList.Sort, ''NeParameterDeclList.Sort], ''NeParameterDeclList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.ParameterDeclList.Constant], 'prec['s_^121[ '0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''ParameterDeclList.Sort, ''ParameterDeclList.Sort], ''ParameterDeclList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.ParameterDeclList.Constant], 'prec['s_^121[ '0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''ParameterList.Sort, ''NeParameterList.Sort], ''NeParameterList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''ParameterList.Sort, ''ParameterList.Sort], ''ParameterList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''RenamingSet.Sort, ''RenamingSet.Sort], ''RenamingSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''ni.Sort, ''d.Sort]], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_`,_.Qid, '__[''StrategyList.Sort, ''StrategyList.Sort], ''StrategyList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.StrategyList.Constant]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''TermList.Sort, ''NeCTermList.Sort], ''NeCTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''TermList.Sort, ''NeTermList.Sort], ''NeTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather['__[''e.Sort, ''E.Sort]], 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121[ '0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''TermList.Sort, ''TermList.Sort], ''TermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather[ '__[''e.Sort, ''E.Sort]], 'id[''empty.EmptyCommaList.Constant], 'prec[ 's_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''UsingPairSet.Sort, ''UsingPairSet.Sort], ''UsingPairSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec['s_^61['0.Zero]]]], 'op_:_->_`[_`].[''_`[_`].Qid, '__[ ''Qid.Sort, ''NeCTermList.Sort], ''Context.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_`[_`].Qid, '__[''Qid.Sort, ''NeGroundTermList.Sort], ''GroundTerm.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_`[_`].Qid, '__[ ''Qid.Sort, ''NeTermList.Sort], ''Term.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''_`[_`]`{_`}.Qid, '__[''Qid.Sort, ''Substitution.Sort, ''StrategyList.Sort], ''RuleApplication.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''_`[`[_`]`].Qid, '__[''Qid.Sort, ''TermList.Sort], ''CallStrategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''_`{_`}.Sort, '__[''Expression.Sort, ''NeParameterList.Sort], ''Expression.Sort, '__['ctor.Attr, 'prec['s_^37[ '0.Zero]]]], 'op_:_->_`[_`].[''_`{_`}.Sort, '__[''ModuleExpression.Sort, ''NeParameterList.Sort], ''ModuleExpression.Sort, '__['ctor.Attr, 'prec[ 's_^37['0.Zero]]]], 'op_:_->_`[_`].[''_`{_`}.Sort, '__[''Qid.Sort, ''ParameterDeclList.Sort], ''Header.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''_`{_`}.Sort, '__[''ViewExpression.Sort, ''NeParameterList.Sort], ''ViewExpression.Sort, '__['ctor.Attr, 'prec['s_^37['0.Zero]]]], 'op_:_->_`[_`].[''_and-then_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['gather['__[''e.Sort, ''E.Sort]], 'prec['s_^55['0.Zero]], 'strat['__['s_['0.Zero], '0.Zero]]]], 'op_:_->_`[_`].[''_and_.Sort, '__[ ''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['assoc.Attr, 'comm.Attr, 'prec[ 's_^55['0.Zero]]]], 'op_:_->_`[_`].[''_divides_.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^51['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''divides.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[ ''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_implies_.Sort, '__[ ''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['gather['__[''e.Sort, ''E.Sort]], 'prec['s_^61['0.Zero]]]], 'op_:_->_`[_`].[''_in_.Sort, '__[ ''Qid.Sort, ''QidSet.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''_or-else_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['gather[ '__[''e.Sort, ''E.Sort]], 'prec['s_^59['0.Zero]], 'strat['__['s_['0.Zero], '0.Zero]]]], 'op_:_->_`[_`].[''_or-else_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__['assoc.Attr, 'ctor.Attr, 'gather[ '__[''e.Sort, ''E.Sort]], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_or_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^59['0.Zero]]]], 'op_:_->_`[_`].[''_psubset_.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_quo_.Sort, '__[''Nat.Sort, ''NzNat.Sort], ''Nat.Sort, '__['gather['__[''E.Sort, ''e.Sort]], 'prec['s_^31['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''quo.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_rem_.Sort, '__[''Nat.Sort, ''NzNat.Sort], ''Nat.Sort, '__['gather['__[''E.Sort, ''e.Sort]], 'prec['s_^31['0.Zero]], 'special['__['id-hook[ ''NumberOpSymbol.Sort, ''rem.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_subset_.Sort, '__[ ''QidSet.Sort, ''QidSet.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_using_.Sort, '__[''Variable.Sort, ''Strategy.Sort], ''UsingPair.Sort, '__['ctor.Attr, 'prec['s_^21['0.Zero]]]], 'op_:_->_`[_`].[''_xor_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^57['0.Zero]]]], 'op_:_->_`[_`].[ ''_xor_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^55['0.Zero]], 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''xor.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_|_.Sort, '__[ ''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec[ 's_^57['0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''|.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_|_.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^57[ '0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''|.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_|_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'gather['__[ ''e.Sort, ''E.Sort]], 'id[''fail.Strategy.Constant], 'prec['s_^41[ '0.Zero]]]], 'op_:_->_`[_`].[''`[_`].Kind, ''Qid.Sort, ''Module.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''`[`].Kind, 'nil.TypeList, ''Context.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort, ''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''NarrowingStep.Sort, '__['ctor.Attr, 'format['__[''ni.Sort, ''n++i.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingApplyResult.Sort, '__['ctor.Attr, 'format['__[ ''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''NarrowingTrace.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchPathResult.Sort, '__[ 'ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchResult.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Nat.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Substitution.Sort, ''Qid.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Substitution.Sort, ''Term.Sort, ''Nat.Sort], ''SmtResult.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Context.Sort], ''Result4Tuple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[ ''Substitution.Sort, ''Substitution.Sort, ''Nat.Sort], ''UnificationTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''UnificationTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Rule.Sort], ''TraceStep.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''ResultTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Context.Sort], ''MatchPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Nat.Sort], ''UnificationPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Qid.Sort], ''UnificationPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort], ''ResultPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''all.Sort, 'nil.TypeList, ''RuleApplication.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''amatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''amatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''ambiguity.Sort, '__[''ResultPair.Sort, ''ResultPair.Sort], ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''ambiguity.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''anyType.Sort, 'nil.TypeList, ''Type?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''append.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''append.Sort, '__[''NatList.Sort, ''NeNatList.Sort], ''NeNatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''append.Sort, '__[''NeNatList.Sort, ''NatList.Sort], ''NeNatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''append.Sort, '__[''NeQidList.Sort, ''QidList.Sort], ''NeQidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''append.Sort, '__[''QidList.Sort, ''NeQidList.Sort], ''NeQidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''append.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''applySubstitution.Sort, '__[ ''Module.Sort, ''Term.Sort, ''Substitution.Sort], ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''ascii.Sort, ''Char.Sort, ''Nat.Sort, 'special['__['id-hook[''StringOpSymbol.Sort, ''ascii.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[''assoc.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''breadthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''ceq_=_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''Equation.Sort, '__[ 'ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''char.Sort, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[String`].Kind, 'special['__['id-hook[''StringOpSymbol.Sort, ''char.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[''cmb_:_if_`[_`]..Qid, '__[ ''Term.Sort, ''Sort.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''MembAx.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''comm.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''completeName.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaCompleteName.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''config.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''crl_=>_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''Condition.Sort, ''AttrSet.Sort], ''Rule.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''csd_:=_if_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''StratDefinition.Sort, '__['ctor.Attr, 'format['__[ ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''ctor.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''delay.Sort, 'nil.TypeList, ''VariantOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''delete.Sort, '__[''Qid.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''depthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''downTerm.Sort, '__[ ''Term.Sort, ''Universal.Sort], ''Universal.Sort, '__['poly['__['s_^2[ '0.Zero], '0.Zero]], 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaDownTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]]], 'op_:_->_`[_`].[''empty.Sort, 'nil.TypeList, ''EmptyCommaList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''empty.Sort, 'nil.TypeList, ''GroundTermList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''empty.Sort, 'nil.TypeList, ''StrategyList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''eq_=_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Equation.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''extending_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''fail.Sort, 'nil.TypeList, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''Result4Tuple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failure.Sort, 'nil.TypeList, ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''ResultTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''SmtResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''Trace?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failureIncomplete.Sort, 'nil.TypeList, ''ResultTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''false.Sort, 'nil.TypeList, ''Bool.Sort, '__['ctor.Attr, 'special['id-hook[ ''SystemFalse.Sort, 'nil.TypeList]]]], 'op_:_->_`[_`].[''filter.Sort, 'nil.TypeList, ''VariantOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''find.Sort, '__[''String.Sort, ''String.Sort, ''Nat.Sort], ''FindResult.Sort, 'special['__['id-hook[''StringOpSymbol.Sort, ''find.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''notFoundTerm.Sort, ''notFound.FindResult.Constant]]]], 'op_:_->_`[_`].[''flat.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''fmod_is_sorts_.____endfm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FModule.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]], 'gather['__[ ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]]]], 'op_:_->_`[_`].[''format.Sort, ''QidList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''format.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''front.Sort, ''NeNatList.Sort, ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''front.Sort, ''NeQidList.Sort, ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''frozen.Sort, ''NeNatList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''fth_is_sorts_.____endfth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FTheory.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]], 'gather['__[ ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]]]], 'op_:_->_`[_`].[''gather.Sort, ''QidList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''gcd.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''gcd.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''gcd.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__[ 'id-hook[''ACU_NumberOpSymbol.Sort, ''gcd.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''generated-by_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''getAccumulatedSubstitution.Sort, ''NarrowingSearchResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getAccumulatedSubstitution.Sort, ''NarrowingStep.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''MatchPair.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getContext.Sort, ''NarrowingApplyResult.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''NarrowingStep.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''Result4Tuple.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getEqs.Sort, ''Module.Sort, ''EquationSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getFrom.Sort, ''View.Sort, ''ModuleExpression.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getImports.Sort, ''Module.Sort, ''ImportList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getInitialSubstitution.Sort, ''NarrowingSearchPathResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getInitialTerm.Sort, ''NarrowingSearchPathResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getInitialType.Sort, ''NarrowingSearchPathResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getKind.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaGetKind.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''getKinds.Sort, ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaGetKinds.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''getLabel.Sort, ''NarrowingApplyResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getLabel.Sort, ''NarrowingStep.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getLhsSubstitution.Sort, ''UnificationTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getMbs.Sort, ''Module.Sort, ''MembAxSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getMoreVariantsInLayerFlag.Sort, ''Variant.Sort, ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getName.Sort, ''Constant.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getName.Sort, ''Module.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getName.Sort, ''Variable.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getName.Sort, ''View.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getOpMappings.Sort, ''View.Sort, ''OpMappingSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getOps.Sort, ''Module.Sort, ''OpDeclSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getParent.Sort, ''Variant.Sort, ''Parent.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRhsSubstitution.Sort, ''UnificationTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRls.Sort, ''Module.Sort, ''RuleSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getRule.Sort, ''TraceStep.Sort, ''Rule.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRuleSubstitution.Sort, ''NarrowingApplyResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSds.Sort, ''Module.Sort, ''StratDefSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSortMappings.Sort, ''View.Sort, ''SortMappingSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSorts.Sort, ''Module.Sort, ''SortSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getStateVariableFamily.Sort, ''NarrowingSearchResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getStratMappings.Sort, ''View.Sort, ''StratMappingSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getStrats.Sort, ''Module.Sort, ''StratDeclSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubsorts.Sort, ''Module.Sort, ''SubsortDeclSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSubstitution.Sort, ''MatchPair.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''Result4Tuple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSubstitution.Sort, ''ResultTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''UnificationPair.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''Variant.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''NarrowingApplyResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getTerm.Sort, ''NarrowingSearchResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''NarrowingStep.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''Result4Tuple.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''ResultPair.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getTerm.Sort, ''ResultTriple.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''TraceStep.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''Variant.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTermSubstitution.Sort, ''NarrowingApplyResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTo.Sort, ''View.Sort, ''ModuleExpression.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTrace.Sort, ''NarrowingSearchPathResult.Sort, ''NarrowingTrace.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Constant.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''NarrowingApplyResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getType.Sort, ''NarrowingSearchResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''NarrowingStep.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Result4Tuple.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''ResultPair.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getType.Sort, ''ResultTriple.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''TraceStep.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Variable.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingSearchPathResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingSearchResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingStep.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getUnifierVariableFamily.Sort, ''NarrowingSearchPathResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getUnifierVariableFamily.Sort, ''NarrowingSearchResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifierVariableFamily.Sort, ''NarrowingStep.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getVariableFamily.Sort, ''NarrowingApplyResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getVariableFamily.Sort, ''UnificationPair.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getVariableFamily.Sort, ''UnificationTriple.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getVariableFamily.Sort, ''Variant.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''glbSorts.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGlbSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''head.Sort, ''NeNatList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''head.Sort, ''NeQidList.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''id.Sort, ''Term.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''id-hook.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Hook.Sort, '__[ 'ctor.Attr, 'format['__[''nssss.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''idem.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''idle.Sort, 'nil.TypeList, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''if_then_else_fi.Sort, '__[''Bool.Sort, ''Universal.Sort, ''Universal.Sort], ''Universal.Sort, '__['poly['__['s_^2['0.Zero], 's_^3[ '0.Zero], '0.Zero]], 'special['__['id-hook[''BranchSymbol.Sort, 'nil.TypeList], 'term-hook[''1.Sort, ''true.Bool.Constant], 'term-hook[ ''2.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''including_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''insert.Sort, '__[''Qid.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''intersection.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''iter.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''label.Sort, ''Qid.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''label_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''last.Sort, ''NeNatList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''last.Sort, ''NeQidList.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''latex.Sort, ''String.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''lcm.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''lcm.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''lcm.Sort, '__[''NzNat.Sort, ''NzNat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''lcm.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''leastSort.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaLeastSort.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''left-id.Sort, ''Term.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''length.Sort, ''String.Sort, ''Nat.Sort, 'special['__['id-hook[ ''StringOpSymbol.Sort, ''length.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[ ''lesserSorts.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaLesserSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''lowerCase.Sort, ''String.Sort, ''String.Sort, 'special[ '__['id-hook[''StringOpSymbol.Sort, ''lowerCase.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[''match_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''matchrew_s.t._by_.Constant, '__[''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''max.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''max.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''max.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__[ 'id-hook[''ACU_NumberOpSymbol.Sort, ''max.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''maximalAritySet.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMaximalAritySet.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''maximalSorts.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMaximalSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''mb_:_`[_`]..Qid, '__[''Term.Sort, ''Sort.Sort, ''AttrSet.Sort], ''MembAx.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''memo.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''metaApply.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Substitution?`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaApply.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaCheck.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaCheck.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''legacyMetaDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaFrewrite.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaFrewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaGetIrredundantVariant.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaGetIrredundantVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetIrredundantVariant.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetIrredundantVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetVariant.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaGetVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetVariant.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaIrredundantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaIrredundantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaIrredundantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaIrredundantUnify.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaMatch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Substitution?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMatch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrow.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[Bool`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrow2.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrow.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrow.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingApply.Sort, '__[''Module.Sort, ''Term.Sort, ''TermList.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingApplyResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''metaNarrowingApply.Sort, '__[''Module.Sort, ''Term.Sort, ''TermList.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingApplyResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingApply.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingSearch.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingSearchResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaNarrowingSearch.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingSearchResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingSearch.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingSearchPath.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingSearchPathResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaNarrowingSearchPath.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingSearchPathResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingSearchPath.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNormalize.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNormalize.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaParse.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaParse.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaParse.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaParseStrategy.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[StrategyList`,Strategy?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaParseStrategy.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaPrettyPrint.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrettyPrint.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaPrettyPrintStrategy.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[StrategyList`,Strategy?`].Kind, ''`[PrintOptionSet`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrettyPrintStrategy.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaPrintToString.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[String`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrintToString.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaReduce.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaReduce.Sort], 'op-hook[''qidSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''metaTermSymbol.Sort, ''_`[_`].Qid, '__[''Qid.Sort, ''NeGroundTermList.Sort], ''GroundTerm.Sort], 'op-hook[ ''metaArgSymbol.Sort, ''_`,_.Qid, '__[''NeGroundTermList.Sort, ''GroundTermList.Sort], ''NeGroundTermList.Sort], 'op-hook[ ''emptyTermListSymbol.Sort, ''empty.Sort, 'nil.TypeList, ''GroundTermList.Sort], 'op-hook[''assignmentSymbol.Sort, ''_<-_.Sort, '__[ ''Variable.Sort, ''Term.Sort], ''Assignment.Sort], 'op-hook[ ''emptySubstitutionSymbol.Sort, ''none.Sort, 'nil.TypeList, ''Substitution.Sort], 'op-hook[''substitutionSymbol.Sort, ''_;_.Sort, '__[ ''Substitution.Sort, ''Substitution.Sort], ''Substitution.Sort], 'op-hook[ ''holeSymbol.Sort, ''`[`].Kind, 'nil.TypeList, ''Context.Sort], 'op-hook[ ''noConditionSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''EqCondition.Sort], 'op-hook[''equalityConditionSymbol.Sort, ''_=_.Sort, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort], 'op-hook[''sortTestConditionSymbol.Sort, ''_:_.Variable, '__[''Term.Sort, ''Sort.Sort], ''EqCondition.Sort], 'op-hook[''matchConditionSymbol.Sort, ''_:=_.Variable, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort], 'op-hook[''rewriteConditionSymbol.Sort, ''_=>_.Sort, '__[''Term.Sort, ''Term.Sort], ''Condition.Sort], 'op-hook[ ''conjunctionSymbol.Sort, ''_/\_.Sort, '__[''EqCondition.Sort, ''EqCondition.Sort], ''EqCondition.Sort], 'op-hook[''failStratSymbol.Sort, ''fail.Sort, 'nil.TypeList, ''Strategy.Sort], 'op-hook[ ''idleStratSymbol.Sort, ''idle.Sort, 'nil.TypeList, ''Strategy.Sort], 'op-hook[''allStratSymbol.Sort, ''all.Sort, 'nil.TypeList, ''RuleApplication.Sort], 'op-hook[''applicationStratSymbol.Sort, ''_`[_`]`{_`}.Qid, '__[''Qid.Sort, ''Substitution.Sort, ''StrategyList.Sort], ''RuleApplication.Sort], 'op-hook[ ''topStratSymbol.Sort, ''top.Sort, ''RuleApplication.Sort, ''Strategy.Sort], 'op-hook[''matchStratSymbol.Sort, ''match_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[ ''xmatchStratSymbol.Sort, ''xmatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[''amatchStratSymbol.Sort, ''amatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[''unionStratSymbol.Sort, ''_|_.Sort, '__[ ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[ ''concatStratSymbol.Sort, ''_;_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''orelseStratSymbol.Sort, ''_or-else_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''plusStratSymbol.Sort, ''_+.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''conditionalStratSymbol.Sort, ''_?_:_.Variable, '__[''Strategy.Sort, ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''matchrewStratSymbol.Sort, ''matchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''xmatchrewStratSymbol.Sort, ''xmatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''amatchrewStratSymbol.Sort, ''amatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''callStratSymbol.Sort, ''_`[`[_`]`].Qid, '__[''Qid.Sort, ''TermList.Sort], ''CallStrategy.Sort], 'op-hook[''oneStratSymbol.Sort, ''one.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[ ''starStratSymbol.Sort, ''_*.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''normalizationStratSymbol.Sort, ''_!.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''notStratSymbol.Sort, ''not.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''testStratSymbol.Sort, ''test.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[ ''tryStratSymbol.Sort, ''try.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''usingStratSymbol.Sort, ''_using_.Sort, '__[''Variable.Sort, ''Strategy.Sort], ''UsingPair.Sort], 'op-hook[''usingListStratSymbol.Sort, ''_`,_.Qid, '__[''UsingPairSet.Sort, ''UsingPairSet.Sort], ''UsingPairSet.Sort], 'op-hook[''emptyStratListSymbol.Sort, ''empty.Sort, 'nil.TypeList, ''StrategyList.Sort], 'op-hook[''stratListSymbol.Sort, ''_`,_.Qid, '__[''StrategyList.Sort, ''StrategyList.Sort], ''StrategyList.Sort], 'op-hook[''headerSymbol.Sort, ''_`{_`}.Sort, '__[ ''Qid.Sort, ''ParameterDeclList.Sort], ''Header.Sort], 'op-hook[ ''parameterDeclSymbol.Sort, ''_::_.Variable, '__[''Sort.Sort, ''ModuleExpression.Sort], ''ParameterDecl.Sort], 'op-hook[ ''parameterDeclListSymbol.Sort, ''_`,_.Qid, '__[''ParameterDeclList.Sort, ''ParameterDeclList.Sort], ''ParameterDeclList.Sort], 'op-hook[ ''protectingSymbol.Sort, ''protecting_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''extendingSymbol.Sort, ''extending_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''includingSymbol.Sort, ''including_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[ ''generatedBySymbol.Sort, ''generated-by_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''nilImportListSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''ImportList.Sort], 'op-hook[''importListSymbol.Sort, ''__.Sort, '__[''ImportList.Sort, ''ImportList.Sort], ''ImportList.Sort], 'op-hook[''emptySortSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''QidSet.Sort], 'op-hook[''sortSetSymbol.Sort, ''_;_.Sort, '__[ ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort], 'op-hook[ ''subsortSymbol.Sort, ''subsort_<_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SubsortDecl.Sort], 'op-hook[''emptySubsortDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''SubsortDeclSet.Sort], 'op-hook[ ''subsortDeclSetSymbol.Sort, ''__.Sort, '__[''SubsortDeclSet.Sort, ''SubsortDeclSet.Sort], ''SubsortDeclSet.Sort], 'op-hook[ ''nilQidListSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''QidList.Sort], 'op-hook[''qidListSymbol.Sort, ''__.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort], 'op-hook[''emptyQidSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''QidSet.Sort], 'op-hook[''qidSetSymbol.Sort, ''_;_.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'op-hook[ ''natListSymbol.Sort, ''__.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort], 'op-hook[''unboundedSymbol.Sort, ''unbounded.Sort, 'nil.TypeList, ''Bound.Sort], 'op-hook[''noParentSymbol.Sort, ''none.Sort, 'nil.TypeList, ''Parent.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[ ''sortRenamingSymbol.Sort, ''sort_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''opRenamingSymbol.Sort, ''op_to_`[_`].Qid, '__[ ''Qid.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort], 'op-hook[ ''opRenamingSymbol2.Sort, ''op_:_->_to_`[_`].Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort], 'op-hook[''labelRenamingSymbol.Sort, ''label_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[ ''stratRenamingSymbol.Sort, ''strat_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''stratRenamingSymbol2.Sort, ''strat_:_@_to_.Variable, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''renamingSetSymbol.Sort, ''_`,_.Qid, '__[''RenamingSet.Sort, ''RenamingSet.Sort], ''RenamingSet.Sort], 'op-hook[''sumSymbol.Sort, ''_+_.Sort, '__[ ''ModuleExpression.Sort, ''ModuleExpression.Sort], ''ModuleExpression.Sort], 'op-hook[''renamingSymbol.Sort, ''_*`(_`).Sort, '__[''ModuleExpression.Sort, ''RenamingSet.Sort], ''ModuleExpression.Sort], 'op-hook[''instantiationSymbol.Sort, ''_`{_`}.Sort, '__[''Expression.Sort, ''NeParameterList.Sort], ''Expression.Sort], 'op-hook[ ''termHookSymbol.Sort, ''term-hook.Sort, '__[''Qid.Sort, ''Term.Sort], ''Hook.Sort], 'op-hook[''hookListSymbol.Sort, ''__.Sort, '__[ ''HookList.Sort, ''HookList.Sort], ''HookList.Sort], 'op-hook[ ''idHookSymbol.Sort, ''id-hook.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Hook.Sort], 'op-hook[''opHookSymbol.Sort, ''op-hook.Sort, '__[''Qid.Sort, ''Qid.Sort, ''QidList.Sort, ''Qid.Sort], ''Hook.Sort], 'op-hook[ ''assocSymbol.Sort, ''assoc.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''commSymbol.Sort, ''comm.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''idemSymbol.Sort, ''idem.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''iterSymbol.Sort, ''iter.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''idSymbol.Sort, ''id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''leftIdSymbol.Sort, ''left-id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''rightIdSymbol.Sort, ''right-id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''stratSymbol.Sort, ''strat.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[ ''memoSymbol.Sort, ''memo.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''precSymbol.Sort, ''prec.Sort, ''Nat.Sort, ''Attr.Sort], 'op-hook[ ''gatherSymbol.Sort, ''gather.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[ ''formatSymbol.Sort, ''format.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[ ''latexSymbol.Sort, ''latex.Sort, ''String.Sort, ''Attr.Sort], 'op-hook[ ''ctorSymbol.Sort, ''ctor.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''frozenSymbol.Sort, ''frozen.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[''polySymbol.Sort, ''poly.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[''configSymbol.Sort, ''config.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''objectSymbol.Sort, ''object.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''msgSymbol.Sort, ''msg.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''portalSymbol.Sort, ''portal.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''pconstSymbol.Sort, ''pconst.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''specialSymbol.Sort, ''special.Sort, ''NeHookList.Sort, ''Attr.Sort], 'op-hook[''labelSymbol.Sort, ''label.Sort, ''Qid.Sort, ''Attr.Sort], 'op-hook[''metadataSymbol.Sort, ''metadata.Sort, ''String.Sort, ''Attr.Sort], 'op-hook[''owiseSymbol.Sort, ''owise.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''variantAttrSymbol.Sort, ''variant.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''narrowingSymbol.Sort, ''narrowing.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''nonexecSymbol.Sort, ''nonexec.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''printSymbol.Sort, ''print.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[''emptyAttrSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''AttrSet.Sort], 'op-hook[''attrSetSymbol.Sort, ''__.Sort, '__[ ''AttrSet.Sort, ''AttrSet.Sort], ''AttrSet.Sort], 'op-hook[ ''opDeclSymbol.Sort, ''op_:_->_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''OpDecl.Sort], 'op-hook[ ''opDeclSetSymbol.Sort, ''__.Sort, '__[''OpDeclSet.Sort, ''OpDeclSet.Sort], ''OpDeclSet.Sort], 'op-hook[''emptyOpDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''OpDeclSet.Sort], 'op-hook[''mbSymbol.Sort, ''mb_:_`[_`]..Qid, '__[''Term.Sort, ''Sort.Sort, ''AttrSet.Sort], ''MembAx.Sort], 'op-hook[''cmbSymbol.Sort, ''cmb_:_if_`[_`]..Qid, '__[ ''Term.Sort, ''Sort.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''MembAx.Sort], 'op-hook[''emptyMembAxSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''MembAxSet.Sort], 'op-hook[''membAxSetSymbol.Sort, ''__.Sort, '__[''MembAxSet.Sort, ''MembAxSet.Sort], ''MembAxSet.Sort], 'op-hook[''eqSymbol.Sort, ''eq_=_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Equation.Sort], 'op-hook[''ceqSymbol.Sort, ''ceq_=_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''Equation.Sort], 'op-hook[''emptyEquationSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''EquationSet.Sort], 'op-hook[ ''equationSetSymbol.Sort, ''__.Sort, '__[''EquationSet.Sort, ''EquationSet.Sort], ''EquationSet.Sort], 'op-hook[''rlSymbol.Sort, ''rl_=>_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Rule.Sort], 'op-hook[''crlSymbol.Sort, ''crl_=>_if_`[_`]..Qid, '__[ ''Term.Sort, ''Term.Sort, ''Condition.Sort, ''AttrSet.Sort], ''Rule.Sort], 'op-hook[''emptyRuleSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''RuleSet.Sort], 'op-hook[''ruleSetSymbol.Sort, ''__.Sort, '__[ ''RuleSet.Sort, ''RuleSet.Sort], ''RuleSet.Sort], 'op-hook[ ''stratDeclSymbol.Sort, ''strat_:_@_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''StratDecl.Sort], 'op-hook[ ''emptyStratDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratDeclSet.Sort], 'op-hook[''stratDeclSetSymbol.Sort, ''__.Sort, '__[ ''StratDeclSet.Sort, ''StratDeclSet.Sort], ''StratDeclSet.Sort], 'op-hook[ ''sdSymbol.Sort, ''sd_:=_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''AttrSet.Sort], ''StratDefinition.Sort], 'op-hook[ ''csdSymbol.Sort, ''csd_:=_if_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''StratDefinition.Sort], 'op-hook[''emptyStratDefSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratDefSet.Sort], 'op-hook[ ''stratDefSetSymbol.Sort, ''__.Sort, '__[''StratDefSet.Sort, ''StratDefSet.Sort], ''StratDefSet.Sort], 'op-hook[''fmodSymbol.Sort, ''fmod_is_sorts_.____endfm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FModule.Sort], 'op-hook[''fthSymbol.Sort, ''fth_is_sorts_.____endfth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FTheory.Sort], 'op-hook[''modSymbol.Sort, ''mod_is_sorts_._____endm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''SModule.Sort], 'op-hook[ ''thSymbol.Sort, ''th_is_sorts_._____endth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''STheory.Sort], 'op-hook[''smodSymbol.Sort, ''smod_is_sorts_._______endsm.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratModule.Sort], 'op-hook[ ''sthSymbol.Sort, ''sth_is_sorts_._______endsth.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratTheory.Sort], 'op-hook[ ''sortMappingSymbol.Sort, ''sort_to_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SortMapping.Sort], 'op-hook[''emptySortMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''SortMappingSet.Sort], 'op-hook[ ''sortMappingSetSymbol.Sort, ''__.Sort, '__[''SortMappingSet.Sort, ''SortMappingSet.Sort], ''SortMappingSet.Sort], 'op-hook[ ''opMappingSymbol.Sort, ''op_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''OpMapping.Sort], 'op-hook[''opSpecificMappingSymbol.Sort, ''op_:_->_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''OpMapping.Sort], 'op-hook[''opTermMappingSymbol.Sort, ''op_to`term_..Qid, '__[''Term.Sort, ''Term.Sort], ''OpMapping.Sort], 'op-hook[''emptyOpMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''OpMappingSet.Sort], 'op-hook[''opMappingSetSymbol.Sort, ''__.Sort, '__[ ''OpMappingSet.Sort, ''OpMappingSet.Sort], ''OpMappingSet.Sort], 'op-hook[ ''stratMappingSymbol.Sort, ''strat_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''StratMapping.Sort], 'op-hook[''stratSpecificMappingSymbol.Sort, ''strat_:_@_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''StratMapping.Sort], 'op-hook[''stratExprMappingSymbol.Sort, ''strat_to`expr_..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort], ''StratMapping.Sort], 'op-hook[''emptyStratMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratMappingSet.Sort], 'op-hook[ ''stratMappingSetSymbol.Sort, ''__.Sort, '__[''StratMappingSet.Sort, ''StratMappingSet.Sort], ''StratMappingSet.Sort], 'op-hook[ ''viewSymbol.Sort, ''view_from_to_is___endv.Sort, '__[''Header.Sort, ''ModuleExpression.Sort, ''ModuleExpression.Sort, ''SortMappingSet.Sort, ''OpMappingSet.Sort, ''StratMappingSet.Sort], ''View.Sort], 'op-hook[ ''anyTypeSymbol.Sort, ''anyType.Sort, 'nil.TypeList, ''Type?.Sort], 'op-hook[''unificandPairSymbol.Sort, ''_=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''UnificandPair.Sort], 'op-hook[ ''unificationConjunctionSymbol.Sort, ''_/\_.Sort, '__[ ''UnificationProblem.Sort, ''UnificationProblem.Sort], ''UnificationProblem.Sort], 'op-hook[''patternSubjectPairSymbol.Sort, ''_<=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''PatternSubjectPair.Sort], 'op-hook[''matchingConjunctionSymbol.Sort, ''_/\_.Sort, '__[ ''MatchingProblem.Sort, ''MatchingProblem.Sort], ''MatchingProblem.Sort], 'op-hook[''resultPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort], ''ResultPair.Sort], 'op-hook[''resultTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''ResultTriple.Sort], 'op-hook[''result4TupleSymbol.Sort, ''`{_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Context.Sort], ''Result4Tuple.Sort], 'op-hook[''matchPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Context.Sort], ''MatchPair.Sort], 'op-hook[''unificationTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''UnificationTriple.Sort], 'op-hook[''variantSymbol.Sort, ''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Qid.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort], 'op-hook[ ''narrowingApplyResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingApplyResult.Sort], 'op-hook[ ''narrowingSearchResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchResult.Sort], 'op-hook[ ''traceStepSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Rule.Sort], ''TraceStep.Sort], 'op-hook[''nilTraceSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''Trace.Sort], 'op-hook[''traceSymbol.Sort, ''__.Sort, '__[''Trace.Sort, ''Trace.Sort], ''Trace.Sort], 'op-hook[ ''narrowingStepSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort, ''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''NarrowingStep.Sort], 'op-hook[ ''nilNarrowingTraceSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''NarrowingTrace.Sort], 'op-hook[''narrowingTraceSymbol.Sort, ''__.Sort, '__[''NarrowingTrace.Sort, ''NarrowingTrace.Sort], ''NarrowingTrace.Sort], 'op-hook[''narrowingSearchPathResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''NarrowingTrace.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchPathResult.Sort], 'op-hook[ ''smtResultSymbol.Sort, ''`{_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Term.Sort, ''Nat.Sort], ''SmtResult.Sort], 'op-hook[ ''noParseSymbol.Sort, ''noParse.Sort, ''Nat.Sort, ''ResultPair?.Sort], 'op-hook[''ambiguitySymbol.Sort, ''ambiguity.Sort, '__[''ResultPair.Sort, ''ResultPair.Sort], ''ResultPair?.Sort], 'op-hook[''failure2Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''ResultPair?.Sort], 'op-hook[ ''failure3Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''ResultTriple?.Sort], 'op-hook[''failureIncomplete3Symbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''ResultTriple?.Sort], 'op-hook[ ''failure4Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''Result4Tuple?.Sort], 'op-hook[''noUnifierPairSymbol.Sort, ''noUnifier.Sort, 'nil.TypeList, ''UnificationPair?.Sort], 'op-hook[ ''noUnifierTripleSymbol.Sort, ''noUnifier.Sort, 'nil.TypeList, ''UnificationTriple?.Sort], 'op-hook[''noUnifierIncompletePairSymbol.Sort, ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationPair?.Sort], 'op-hook[''noUnifierIncompleteTripleSymbol.Sort, ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationTriple?.Sort], 'op-hook[''noVariantSymbol.Sort, ''noVariant.Sort, 'nil.TypeList, ''Variant?.Sort], 'op-hook[''noVariantIncompleteSymbol.Sort, ''noVariantIncomplete.Sort, 'nil.TypeList, ''Variant?.Sort], 'op-hook[ ''narrowingApplyFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort], 'op-hook[ ''narrowingApplyFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort], 'op-hook[ ''narrowingSearchFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort], 'op-hook[ ''narrowingSearchFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort], 'op-hook[ ''narrowingSearchPathFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort], 'op-hook[ ''narrowingSearchPathFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort], 'op-hook[''noMatchSubstSymbol.Sort, ''noMatch.Sort, 'nil.TypeList, ''Substitution?.Sort], 'op-hook[ ''noMatchIncompleteSubstSymbol.Sort, ''noMatchIncomplete.Sort, 'nil.TypeList, ''Substitution?.Sort], 'op-hook[''noMatchPairSymbol.Sort, ''noMatch.Sort, 'nil.TypeList, ''MatchPair?.Sort], 'op-hook[ ''failureTraceSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''Trace?.Sort], 'op-hook[''smtFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''SmtResult?.Sort], 'op-hook[''noStratParseSymbol.Sort, ''noStratParse.Sort, ''Nat.Sort, ''Strategy?.Sort], 'op-hook[ ''stratAmbiguitySymbol.Sort, ''ambiguity.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy?.Sort], 'op-hook[''mixfixSymbol.Sort, ''mixfix.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''withParensSymbol.Sort, ''with-parens.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''withSortsSymbol.Sort, ''with-sorts.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''flatSymbol.Sort, ''flat.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''formatPrintOptionSymbol.Sort, ''format.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''numberSymbol.Sort, ''number.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''ratSymbol.Sort, ''rat.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''emptyPrintOptionSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''PrintOptionSet.Sort], 'op-hook[''printOptionSetSymbol.Sort, ''__.Sort, '__[''PrintOptionSet.Sort, ''PrintOptionSet.Sort], ''PrintOptionSet.Sort], 'op-hook[''delaySymbol.Sort, ''delay.Sort, 'nil.TypeList, ''VariantOption.Sort], 'op-hook[''filterSymbol.Sort, ''filter.Sort, 'nil.TypeList, ''VariantOption.Sort], 'op-hook[ ''emptyVariantOptionSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''VariantOptionSet.Sort], 'op-hook[''variantOptionSetSymbol.Sort, ''__.Sort, '__[''VariantOptionSet.Sort, ''VariantOptionSet.Sort], ''VariantOptionSet.Sort], 'op-hook[''breadthFirstSymbol.Sort, ''breadthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort], 'op-hook[ ''depthFirstSymbol.Sort, ''depthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort], 'op-hook[''legacyUnificationPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Nat.Sort], ''UnificationPair.Sort], 'op-hook[''legacyUnificationTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Nat.Sort], ''UnificationTriple.Sort], 'op-hook[ ''legacyVariantSymbol.Sort, ''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Nat.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]], 'op_:_->_`[_`].[ ''metaRewrite.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaRewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSearch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSearch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSearchPath.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Trace?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSearchPath.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSmtSearch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[SmtResult?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSmtSearch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSrewrite.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[StrategyList`,Strategy?`].Kind, ''`[SrewriteOption`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSrewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''legacyMetaVariantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaVariantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantMatch.Sort, '__[''`[Module`].Kind, ''`[MatchingProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Substitution?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaVariantMatch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaVariantUnify.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaVariantUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaVariantUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaXapply.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Substitution?`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Result4Tuple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaXapply.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaXmatch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaXmatch.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metadata.Sort, ''String.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''min.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''min.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''min.Sort, '__[''NzNat.Sort, ''NzNat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''min.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[ ''minimalSorts.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMinimalSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''mixfix.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''modExp.Sort, '__[ ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[FindResult`,NatList`,Bound`,Parent`].Kind, 'special['__['id-hook[ ''NumberOpSymbol.Sort, ''modExp.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[ ''mod_is_sorts_._____endm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''SModule.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]], 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]]]], 'op_:_->_`[_`].[ ''msg.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''narrowing.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''nil.Sort, 'nil.TypeList, ''EqCondition.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''HookList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''ImportList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''NarrowingTrace.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''NatList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''ParameterDeclList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''QidList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''Trace.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''TypeList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noMatch.Sort, 'nil.TypeList, ''MatchPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noMatch.Sort, 'nil.TypeList, ''Substitution?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noMatchIncomplete.Sort, 'nil.TypeList, ''Substitution?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noParse.Sort, ''Nat.Sort, ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noStratParse.Sort, ''Nat.Sort, ''Strategy?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifier.Sort, 'nil.TypeList, ''UnificationPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifier.Sort, 'nil.TypeList, ''UnificationTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noVariant.Sort, 'nil.TypeList, ''Variant?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noVariantIncomplete.Sort, 'nil.TypeList, ''Variant?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''AttrSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''EmptyQidSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''EquationSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''MembAxSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''OpDeclSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''OpMappingSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''none.Sort, 'nil.TypeList, ''Parent.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''none.Sort, 'nil.TypeList, ''PrintOptionSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''QidSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''RuleSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''SortMappingSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''StratDeclSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''StratDefSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''none.Sort, 'nil.TypeList, ''StratMappingSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''SubsortDeclSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''Substitution.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''VariantOptionSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''nonexec.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''not.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''notFound.Sort, 'nil.TypeList, ''FindResult.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''not_.Sort, ''Bool.Sort, ''Bool.Sort, 'prec['s_^53[ '0.Zero]]], 'op_:_->_`[_`].[''number.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''object.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''occurs.Sort, '__[''Nat.Sort, ''NatList.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''occurs.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''one.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''op-hook.Sort, '__[ ''Qid.Sort, ''Qid.Sort, ''QidList.Sort, ''Qid.Sort], ''Hook.Sort, '__[ 'ctor.Attr, 'format['__[''nssss.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''op_:_->_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''OpDecl.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''op_:_->_to_..Qid, '__[ ''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''OpMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''op_:_->_to_`[_`].Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''op_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''OpMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''op_to_`[_`].Qid, '__[ ''Qid.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''op_to`term_..Qid, '__[ ''Term.Sort, ''Term.Sort], ''OpMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''owise.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''pconst.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''poly.Sort, ''NeNatList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''portal.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''prec.Sort, ''Nat.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''print.Sort, ''QidList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''protecting_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''qid.Sort, ''`[String`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''QuotedIdentifierOpSymbol.Sort, ''qid.Sort], 'op-hook[''quotedIdentifierSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[''rat.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''reverse.Sort, ''NatList.Sort, ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''reverse.Sort, ''NeNatList.Sort, ''NeNatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''reverse.Sort, ''NeQidList.Sort, ''NeQidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''reverse.Sort, ''QidList.Sort, ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''rfind.Sort, '__[ ''String.Sort, ''String.Sort, ''Nat.Sort], ''FindResult.Sort, 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''rfind.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''notFoundTerm.Sort, ''notFound.FindResult.Constant]]]], 'op_:_->_`[_`].[''right-id.Sort, ''Term.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''rl_=>_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Rule.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''s_.Sort, ''Nat.Sort, ''NzNat.Sort, '__[ 'ctor.Attr, 'iter.Attr, 'special['__['id-hook[''SuccSymbol.Sort, 'nil.TypeList], 'term-hook[''zeroTerm.Sort, ''0.Zero.Constant]]]]], 'op_:_->_`[_`].[''sameKind.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaSameKind.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''sd.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['comm.Attr, 'special['__['id-hook[ ''CUI_NumberOpSymbol.Sort, ''sd.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[ ''sd_:=_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''AttrSet.Sort], ''StratDefinition.Sort, '__['ctor.Attr, 'format['__[ ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''size.Sort, ''NatList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''size.Sort, ''NeNatList.Sort, ''NzNat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''size.Sort, ''NeQidList.Sort, ''NzNat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''size.Sort, ''QidList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''smod_is_sorts_._______endsm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratModule.Sort, '__['ctor.Attr, 'format['__[ ''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]], 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]]]], 'op_:_->_`[_`].[''sortLeq.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaSortLeq.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''sort_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''sort_to_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SortMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''special.Sort, ''NeHookList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''sth_is_sorts_._______endsth.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratTheory.Sort, '__[ 'ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]], 'gather['__[ ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]]]], 'op_:_->_`[_`].[''strat.Sort, ''NeNatList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''strat_:_@_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''StratDecl.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''strat_:_@_to_.Variable, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_:_@_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''StratMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_to_..Qid, '__[ ''Qid.Sort, ''Qid.Sort], ''StratMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''strat_to`expr_..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort], ''StratMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''string.Sort, ''Qid.Sort, ''String.Sort, 'special['__['id-hook[ ''QuotedIdentifierOpSymbol.Sort, ''string.Sort], 'op-hook[ ''quotedIdentifierSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[''subsort_<_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SubsortDecl.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''substr.Sort, '__[''String.Sort, ''Nat.Sort, ''Nat.Sort], ''String.Sort, 'special['__['id-hook[''StringOpSymbol.Sort, ''substr.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[''tail.Sort, ''NeNatList.Sort, ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''tail.Sort, ''NeQidList.Sort, ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''term-hook.Sort, '__[ ''Qid.Sort, ''Term.Sort], ''Hook.Sort, '__['ctor.Attr, 'format['__[ ''nssss.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''test.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''th_is_sorts_._____endth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''STheory.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]], 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]]]], 'op_:_->_`[_`].[ ''top.Sort, ''RuleApplication.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''true.Sort, 'nil.TypeList, ''Bool.Sort, '__['ctor.Attr, 'special['id-hook[''SystemTrue.Sort, 'nil.TypeList]]]], 'op_:_->_`[_`].[ ''try.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''unbounded.Sort, 'nil.TypeList, ''Bound.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''union.Sort, '__[''NeQidSet.Sort, ''QidSet.Sort], ''NeQidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''union.Sort, '__[ ''QidSet.Sort, ''NeQidSet.Sort], ''NeQidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''union.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''upEqs.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[EquationSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpEqs.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upImports.Sort, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ImportList`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpImports.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upMbs.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[MembAxSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpMbs.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upModule.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[Module`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpModule.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upOpDecls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[OpDeclSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpOpDecls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upRls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[RuleSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpRls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSds.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[StratDefSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpSds.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSorts.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upStratDecls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[StratDeclSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpStratDecls.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''upSubsortDecls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[SubsortDeclSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpSubsortDecls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upTerm.Sort, ''Universal.Sort, ''Term.Sort, '__['poly[ 's_['0.Zero]], 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]]], 'op_:_->_`[_`].[''upView.Sort, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[View`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpView.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''upperCase.Sort, ''String.Sort, ''String.Sort, 'special['__['id-hook[ ''StringOpSymbol.Sort, ''upperCase.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[ ''variant.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''view_from_to_is___endv.Sort, '__[''Header.Sort, ''ModuleExpression.Sort, ''ModuleExpression.Sort, ''SortMappingSet.Sort, ''OpMappingSet.Sort, ''StratMappingSet.Sort], ''View.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''n++i.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]], 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]]]], 'op_:_->_`[_`].[ ''wellFormed.Sort, ''Module.Sort, ''Bool.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaWellFormedModule.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''wellFormed.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaWellFormedTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''wellFormed.Sort, '__[''`[Module`].Kind, ''`[Substitution?`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaWellFormedSubstitution.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''with-parens.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''with-sorts.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''xmatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''xmatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''|_|.Sort, ''NeQidSet.Sort, ''NzNat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''|_|.Sort, ''QidSet.Sort, ''Nat.Sort, 'none.AttrSet]], 'none.MembAxSet, '__['eq_=_`[_`].['_`[_`][ ''$applySubstitution.Sort, '_`,_[''Q:Qid.Variable, ''S:Substitution.Variable]], ''Q:Qid.Variable, 'owise.Attr], 'eq_=_`[_`].[ '_`[_`][''$applySubstitution.Sort, '_`,_[''V:Variable.Variable, '_`[_`][ ''_;_.Sort, '_`,_[''S:Substitution.Variable, '_`[_`][''_<-_.Sort, '_`,_[ ''V:Variable.Variable, ''T:Term.Variable]]]]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$applySubstitution.Sort, '_`,_[ '_`[_`][''_`,_.Qid, '_`,_[''T:Term.Variable, ''TL:NeTermList.Variable]], ''S:Substitution.Variable]], '_`[_`][''_`,_.Qid, '_`,_['_`[_`][ ''$applySubstitution.Sort, '_`,_[''T:Term.Variable, ''S:Substitution.Variable]], '_`[_`][''$applySubstitution.Sort, '_`,_[ ''TL:NeTermList.Variable, ''S:Substitution.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$applySubstitution.Sort, '_`,_['_`[_`][''_`[_`].Qid, '_`,_[''Q:Qid.Variable, ''TL:NeTermList.Variable]], ''S:Substitution.Variable]], '_`[_`][''_`[_`].Qid, '_`,_[''Q:Qid.Variable, '_`[_`][''$applySubstitution.Sort, '_`,_[''TL:NeTermList.Variable, ''S:Substitution.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$card.Sort, '_`,_[''none.EmptyQidSet.Constant, ''C:Nat.Variable]], ''C:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$card.Sort, '_`,_[ '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''C:Nat.Variable]], '_`[_`][''$card.Sort, '_`,_[''S:QidSet.Variable, '_`[_`][''_+_.Sort, '_`,_[''C:Nat.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]]]]], 'owise.Attr], 'eq_=_`[_`].['_`[_`][''$card.Sort, '_`,_['_`[_`][''_;_.Sort, '_`,_[''N:NeQidSet.Variable, ''N:NeQidSet.Variable, ''S:QidSet.Variable]], ''C:Nat.Variable]], '_`[_`][ ''$card.Sort, '_`,_['_`[_`][''_;_.Sort, '_`,_[''N:NeQidSet.Variable, ''S:QidSet.Variable]], ''C:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''$diff.Sort, '_`,_[''none.EmptyQidSet.Constant, ''S':QidSet.Variable, ''A:QidSet.Variable]], ''A:QidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$diff.Sort, '_`,_['_`[_`][ ''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''S':QidSet.Variable, ''A:QidSet.Variable]], '_`[_`][''$diff.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable, '_`[_`][''if_then_else_fi.Sort, '_`,_['_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, ''S':QidSet.Variable]], ''A:QidSet.Variable, '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''A:QidSet.Variable]]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$intersect.Sort, '_`,_[''none.EmptyQidSet.Constant, ''S':QidSet.Variable, ''A:QidSet.Variable]], ''A:QidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''$intersect.Sort, '_`,_['_`[_`][''_;_.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]], ''S':QidSet.Variable, ''A:QidSet.Variable]], '_`[_`][''$intersect.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable, '_`[_`][''if_then_else_fi.Sort, '_`,_['_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, ''S':QidSet.Variable]], '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''A:QidSet.Variable]], ''A:QidSet.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$reverse.Sort, '_`,_[''nil.NatList.Constant, ''A:NatList.Variable]], ''A:NatList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$reverse.Sort, '_`,_[''nil.TypeList.Constant, ''A:QidList.Variable]], ''A:QidList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$reverse.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]], ''A:NatList.Variable]], '_`[_`][''$reverse.Sort, '_`,_[ ''L:NatList.Variable, '_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''A:NatList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$reverse.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''L:QidList.Variable]], ''A:QidList.Variable]], '_`[_`][''$reverse.Sort, '_`,_[''L:QidList.Variable, '_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''A:QidList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$size.Sort, '_`,_[''nil.NatList.Constant, ''C:Nat.Variable]], ''C:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$size.Sort, '_`,_[ ''nil.TypeList.Constant, ''C:Nat.Variable]], ''C:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$size.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]], ''C:Nat.Variable]], '_`[_`][''$size.Sort, '_`,_[''L:NatList.Variable, '_`[_`][''_+_.Sort, '_`,_[''C:Nat.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$size.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''L:QidList.Variable]], ''C:Nat.Variable]], '_`[_`][''$size.Sort, '_`,_[''L:QidList.Variable, '_`[_`][''_+_.Sort, '_`,_[''C:Nat.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_;_.Sort, '_`,_[ ''A:Assignment.Variable, ''A:Assignment.Variable]], ''A:Assignment.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_;_.Sort, '_`,_[''N:NeQidSet.Variable, ''N:NeQidSet.Variable]], ''N:NeQidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_;_.Sort, '_`,_[''T:TypeList.Variable, ''T:TypeList.Variable]], ''T:TypeList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_\_.Sort, '_`,_[''S:QidSet.Variable, ''N:NeQidSet.Variable]], '_`[_`][''$diff.Sort, '_`,_[''S:QidSet.Variable, ''N:NeQidSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''_\_.Sort, '_`,_[''S:QidSet.Variable, ''none.EmptyQidSet.Constant]], ''S:QidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''A:Attr.Variable, ''A:Attr.Variable]], ''A:Attr.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''D:StratDefinition.Variable, ''D:StratDefinition.Variable]], ''D:StratDefinition.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''E:Equation.Variable, ''E:Equation.Variable]], ''E:Equation.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''M:MembAx.Variable, ''M:MembAx.Variable]], ''M:MembAx.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''__.Sort, '_`,_[''O:OpDecl.Variable, ''O:OpDecl.Variable]], ''O:OpDecl.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''O:OpMapping.Variable, ''O:OpMapping.Variable]], ''O:OpMapping.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''O:StratDecl.Variable, ''O:StratDecl.Variable]], ''O:StratDecl.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''R:Rule.Variable, ''R:Rule.Variable]], ''R:Rule.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''__.Sort, '_`,_[''S:SortMapping.Variable, ''S:SortMapping.Variable]], ''S:SortMapping.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''S:StratMapping.Variable, ''S:StratMapping.Variable]], ''S:StratMapping.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''S:SubsortDecl.Variable, ''S:SubsortDecl.Variable]], ''S:SubsortDecl.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_`,_.Qid, '_`,_[''U:UsingPair.Variable, ''U:UsingPair.Variable]], ''U:UsingPair.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and-then_.Sort, '_`,_[''false.Bool.Constant, ''B:`[Bool`].Variable]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and-then_.Sort, '_`,_[''true.Bool.Constant, ''B:`[Bool`].Variable]], ''B:`[Bool`].Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''A:Bool.Variable]], ''A:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, '_`[_`][''_xor_.Sort, '_`,_[ ''B:Bool.Variable, ''C:Bool.Variable]]]], '_`[_`][''_xor_.Sort, '_`,_[ '_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''C:Bool.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and_.Sort, '_`,_[ ''false.Bool.Constant, ''A:Bool.Variable]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and_.Sort, '_`,_[ ''true.Bool.Constant, ''A:Bool.Variable]], ''A:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_implies_.Sort, '_`,_[ ''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''not_.Sort, '_`[_`][ ''_xor_.Sort, '_`,_[''A:Bool.Variable, '_`[_`][''_and_.Sort, '_`,_[ ''A:Bool.Variable, ''B:Bool.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''false.Bool.Constant, 'owise.Attr], 'eq_=_`[_`].['_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]]]], ''true.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_or-else_.Sort, '_`,_[''false.Bool.Constant, ''B:`[Bool`].Variable]], ''B:`[Bool`].Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_or-else_.Sort, '_`,_[''true.Bool.Constant, ''B:`[Bool`].Variable]], ''true.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_or_.Sort, '_`,_[''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''_xor_.Sort, '_`,_['_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''_xor_.Sort, '_`,_[ ''A:Bool.Variable, ''B:Bool.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_psubset_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]], '_`[_`][''_and-then_.Sort, '_`,_['_`[_`][ ''_=/=_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]], '_`[_`][ ''_subset_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_subset_.Sort, '_`,_[ ''none.EmptyQidSet.Constant, ''S':QidSet.Variable]], ''true.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_subset_.Sort, '_`,_['_`[_`][ ''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''S':QidSet.Variable]], '_`[_`][''_and-then_.Sort, '_`,_['_`[_`][ ''_in_.Sort, '_`,_[''E:Qid.Variable, ''S':QidSet.Variable]], '_`[_`][ ''_subset_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_xor_.Sort, '_`,_[''A:Bool.Variable, ''A:Bool.Variable]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_xor_.Sort, '_`,_[''false.Bool.Constant, ''A:Bool.Variable]], ''A:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''`[_`].Kind, ''Q:Qid.Variable], '_`[_`][''sth_is_sorts_._______endsth.Constant, '_`,_[ ''Q:Qid.Variable, '_`[_`][''including_..Qid, ''Q:Qid.Variable], ''none.EmptyQidSet.Constant, ''none.SubsortDeclSet.Constant, ''none.OpDeclSet.Constant, ''none.MembAxSet.Constant, ''none.EquationSet.Constant, ''none.RuleSet.Constant, ''none.StratDeclSet.Constant, ''none.StratDefSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''append.Sort, '_`,_[ ''A:NatList.Variable, ''L:NatList.Variable]], '_`[_`][''__.Sort, '_`,_[ ''A:NatList.Variable, ''L:NatList.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''append.Sort, '_`,_[''A:QidList.Variable, ''L:QidList.Variable]], '_`[_`][''__.Sort, '_`,_[''A:QidList.Variable, ''L:QidList.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''applySubstitution.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''S:Substitution.Variable]], '_`[_`][''getTerm.Sort, '_`[_`][''metaNormalize.Sort, '_`,_[ ''M:Module.Variable, '_`[_`][''$applySubstitution.Sort, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''delete.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''S:QidSet.Variable, 'owise.Attr], 'eq_=_`[_`].[ '_`[_`][''delete.Sort, '_`,_[''E:Qid.Variable, '_`[_`][''_;_.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]]]], '_`[_`][''delete.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''front.Sort, '_`[_`][''__.Sort, '_`,_[''L:NatList.Variable, ''E:Nat.Variable]]], ''L:NatList.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''front.Sort, '_`[_`][''__.Sort, '_`,_[''L:QidList.Variable, ''E:Qid.Variable]]], ''L:QidList.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getAccumulatedSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''A:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getAccumulatedSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''A:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getContext.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''S:Substitution.Variable, ''C:Context.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getEqs.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getEqs.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getFrom.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''ME:ModuleExpression.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getImports.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getImports.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getImports.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getImports.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getImports.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getImports.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialTerm.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialType.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getLabel.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''L:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getLabel.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''L:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getLhsSubstitution.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''LS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getMbs.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getMbs.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMoreVariantsInLayerFlag.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''B:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getName.Sort, ''C:Constant.Variable], '_`[_`][''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], ''0.Zero.Constant, '_`[_`][''rfind.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], ''".".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''C:Constant.Variable]]]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, ''V:Variable.Variable], '_`[_`][ ''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''V:Variable.Variable], ''0.Zero.Constant, '_`[_`][''rfind.Sort, '_`,_[ '_`[_`][''string.Sort, ''V:Variable.Variable], ''":".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''V:Variable.Variable]]]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_['_`[_`][''_`{_`}.Sort, '_`,_[ ''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''fth_is_sorts_.____endfth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''mod_is_sorts_._____endm.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getName.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ '_`[_`][''_`{_`}.Sort, '_`,_[''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_['_`[_`][''_`{_`}.Sort, '_`,_[ ''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getName.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[ ''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_['_`[_`][''_`{_`}.Sort, '_`,_[ ''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOpMappings.Sort, '_`[_`][ ''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''OMS:OpMappingSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getOps.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getOps.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getParent.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''P:Parent.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRhsSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''RS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRls.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.RuleSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRls.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.RuleSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRls.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRls.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRls.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRls.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRule.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''R:Rule.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRuleSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''RS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSds.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSds.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDFS:StratDefSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDFS:StratDefSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSortMappings.Sort, '_`[_`][ ''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''SMS:SortMappingSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSorts.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSorts.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStateVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''SV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getStratMappings.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''TMS:StratMappingSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStrats.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStrats.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStrats.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStrats.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDS:StratDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStrats.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDS:StratDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStrats.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubsorts.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubsorts.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[ ''S:Substitution.Variable, ''C:Context.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[ ''S:Substitution.Variable, ''V:Qid.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getTermSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''TS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTo.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''ME':ModuleExpression.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getTrace.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:NarrowingTrace.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, ''C:Constant.Variable], '_`[_`][ ''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], '_`[_`][''_+_.Sort, '_`,_['_`[_`][''s_.Sort, ''0.Zero.Constant], '_`[_`][''rfind.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], ''".".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''C:Constant.Variable]]]]]], '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''C:Constant.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, ''V:Variable.Variable], '_`[_`][ ''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''V:Variable.Variable], '_`[_`][''_+_.Sort, '_`,_['_`[_`][''s_.Sort, ''0.Zero.Constant], '_`[_`][''rfind.Sort, '_`,_['_`[_`][''string.Sort, ''V:Variable.Variable], ''":".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''V:Variable.Variable]]]]]], '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''V:Variable.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getUnifierVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifierVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifierVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getVariableFamily.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''S:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''head.Sort, '_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]]], ''E:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''head.Sort, '_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''L:QidList.Variable]]], ''E:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''insert.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], '_`[_`][''_;_.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''intersection.Sort, '_`,_[''S:QidSet.Variable, ''N:NeQidSet.Variable]], '_`[_`][''$intersect.Sort, '_`,_[ ''S:QidSet.Variable, ''N:NeQidSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''intersection.Sort, '_`,_[ ''S:QidSet.Variable, ''none.EmptyQidSet.Constant]], ''none.EmptyQidSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''last.Sort, '_`[_`][''__.Sort, '_`,_[''L:NatList.Variable, ''E:Nat.Variable]]], ''E:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''last.Sort, '_`[_`][''__.Sort, '_`,_[''L:QidList.Variable, ''E:Qid.Variable]]], ''E:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''metaNarrowingApply.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaNarrowingApply.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaNarrowingSearch.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaNarrowingSearch.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaNarrowingSearchPath.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''N:Nat.Variable]], '_`[_`][ ''metaNarrowingSearchPath.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaParse.Sort, '_`,_[''M:Module.Variable, ''Q:QidList.Variable, ''T:Type?.Variable]], '_`[_`][''metaParse.Sort, '_`,_[''M:Module.Variable, ''none.EmptyQidSet.Constant, ''Q:QidList.Variable, ''T:Type?.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''none.EmptyQidSet.Constant, ''T:Term.Variable, '_`[_`][''__.Sort, '_`,_[''mixfix.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[''flat.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[ ''format.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[ ''number.PrintOption.Constant, ''rat.PrintOption.Constant]]]]]]]], ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''none.EmptyQidSet.Constant, ''T:Term.Variable, ''P:PrintOptionSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''VS:VariableSet.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''VS:VariableSet.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaVariantDisjointUnify.Sort, '_`,_[ ''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][ ''metaVariantDisjointUnify.Sort, '_`,_[''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaVariantUnify.Sort, '_`,_[''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaVariantUnify.Sort, '_`,_[ ''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''not_.Sort, ''A:Bool.Variable], '_`[_`][''_xor_.Sort, '_`,_[''true.Bool.Constant, ''A:Bool.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Nat.Variable, ''nil.NatList.Constant]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Nat.Variable, '_`[_`][''__.Sort, '_`,_[''E':Nat.Variable, ''L:NatList.Variable]]]], '_`[_`][''if_then_else_fi.Sort, '_`,_['_`[_`][''_==_.Sort, '_`,_[ ''E:Nat.Variable, ''E':Nat.Variable]], ''true.Bool.Constant, '_`[_`][ ''occurs.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Qid.Variable, ''nil.TypeList.Constant]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Qid.Variable, '_`[_`][ ''__.Sort, '_`,_[''E':Qid.Variable, ''L:QidList.Variable]]]], '_`[_`][ ''if_then_else_fi.Sort, '_`,_['_`[_`][''_==_.Sort, '_`,_[''E:Qid.Variable, ''E':Qid.Variable]], ''true.Bool.Constant, '_`[_`][''occurs.Sort, '_`,_[ ''E:Qid.Variable, ''L:QidList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''reverse.Sort, ''L:NatList.Variable], '_`[_`][''$reverse.Sort, '_`,_[''L:NatList.Variable, ''nil.NatList.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''reverse.Sort, ''L:QidList.Variable], '_`[_`][ ''$reverse.Sort, '_`,_[''L:QidList.Variable, ''nil.TypeList.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''size.Sort, ''L:NatList.Variable], '_`[_`][''$size.Sort, '_`,_[''L:NatList.Variable, ''0.Zero.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''size.Sort, ''L:QidList.Variable], '_`[_`][''$size.Sort, '_`,_[''L:QidList.Variable, ''0.Zero.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''tail.Sort, '_`[_`][''__.Sort, '_`,_[ ''E:Nat.Variable, ''L:NatList.Variable]]], ''L:NatList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''tail.Sort, '_`[_`][''__.Sort, '_`,_[ ''E:Qid.Variable, ''L:QidList.Variable]]], ''L:QidList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''union.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable]], '_`[_`][''_;_.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''|_|.Sort, ''S:QidSet.Variable], '_`[_`][''$card.Sort, '_`,_[ ''S:QidSet.Variable, ''0.Zero.Constant]], 'none.AttrSet]]], 'FModule} ========================================== reduce in META-LEVEL : upTerm(upModule('META-LEVEL, true)) . rewrites: 3 result GroundTerm: 'fmod_is_sorts_.____endfm[''META-LEVEL.Sort, 'nil.ImportList, '_;_[''Assignment.Sort, ''Attr.Sort, ''AttrSet.Sort, ''Bool.Sort, ''Bound.Sort, ''CallStrategy.Sort, ''Char.Sort, ''Condition.Sort, ''Constant.Sort, ''Context.Sort, ''EmptyCommaList.Sort, ''EmptyQidSet.Sort, ''EqCondition.Sort, ''Equation.Sort, ''EquationSet.Sort, ''Expression.Sort, ''FModule.Sort, ''FTheory.Sort, ''FindResult.Sort, ''GTermList.Sort, ''GroundTerm.Sort, ''GroundTermList.Sort, ''Header.Sort, ''Hook.Sort, ''HookList.Sort, ''Import.Sort, ''ImportList.Sort, ''Kind.Sort, ''KindSet.Sort, ''MatchOrUnificationPair.Sort, ''MatchPair.Sort, ''MatchPair?.Sort, ''MatchingProblem.Sort, ''MembAx.Sort, ''MembAxSet.Sort, ''Module.Sort, ''ModuleExpression.Sort, ''NarrowingApplyResult.Sort, ''NarrowingApplyResult?.Sort, ''NarrowingSearchPathResult.Sort, ''NarrowingSearchPathResult?.Sort, ''NarrowingSearchResult.Sort, ''NarrowingSearchResult?.Sort, ''NarrowingStep.Sort, ''NarrowingTrace.Sort, ''Nat.Sort, ''NatList.Sort, ''NeCTermList.Sort, ''NeGroundTermList.Sort, ''NeHookList.Sort, ''NeKindSet.Sort, ''NeNatList.Sort, ''NeParameterDeclList.Sort, ''NeParameterList.Sort, ''NeQidList.Sort, ''NeQidSet.Sort, ''NeSortSet.Sort, ''NeTermList.Sort, ''NeTypeList.Sort, ''NeTypeSet.Sort, ''NeVariableSet.Sort, ''NzNat.Sort, ''OpDecl.Sort, ''OpDeclSet.Sort, ''OpMapping.Sort, ''OpMappingSet.Sort, ''ParameterDecl.Sort, ''ParameterDeclList.Sort, ''ParameterList.Sort, ''Parent.Sort, ''PatternSubjectPair.Sort, ''PrintOption.Sort, ''PrintOptionSet.Sort, ''Qid.Sort, ''QidList.Sort, ''QidSet.Sort, ''Renaming.Sort, ''RenamingSet.Sort, ''Result4Tuple.Sort, ''Result4Tuple?.Sort, ''ResultPair.Sort, ''ResultPair?.Sort, ''ResultTriple.Sort, ''ResultTriple?.Sort, ''Rule.Sort, ''RuleApplication.Sort, ''RuleSet.Sort, ''SModule.Sort, ''STheory.Sort, ''SmtResult.Sort, ''SmtResult?.Sort, ''Sort.Sort, ''SortMapping.Sort, ''SortMappingSet.Sort, ''SortSet.Sort, ''SrewriteOption.Sort, ''StratDecl.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort, ''StratDefinition.Sort, ''StratMapping.Sort, ''StratMappingSet.Sort, ''StratModule.Sort, ''StratTheory.Sort, ''Strategy.Sort, ''Strategy?.Sort, ''StrategyList.Sort, ''String.Sort, ''SubsortDecl.Sort, ''SubsortDeclSet.Sort, ''Substitution.Sort, ''Substitution?.Sort, ''Term.Sort, ''TermList.Sort, ''TermQid.Sort, ''Trace.Sort, ''Trace?.Sort, ''TraceStep.Sort, ''Type.Sort, ''Type?.Sort, ''TypeList.Sort, ''TypeListSet.Sort, ''TypeSet.Sort, ''UnificandPair.Sort, ''UnificationPair.Sort, ''UnificationPair?.Sort, ''UnificationProblem.Sort, ''UnificationTriple.Sort, ''UnificationTriple?.Sort, ''UsingPair.Sort, ''UsingPairSet.Sort, ''Variable.Sort, ''VariableSet.Sort, ''Variant.Sort, ''Variant?.Sort, ''VariantOption.Sort, ''VariantOptionSet.Sort, ''View.Sort, ''ViewExpression.Sort, ''Zero.Sort], '__['subsort_<_.[ ''Assignment.Sort, ''Substitution.Sort], 'subsort_<_.[''Attr.Sort, ''AttrSet.Sort], 'subsort_<_.[''CallStrategy.Sort, ''Strategy.Sort], 'subsort_<_.[''Char.Sort, ''String.Sort], 'subsort_<_.[''Constant.Sort, ''GroundTerm.Sort], 'subsort_<_.[''Constant.Sort, ''TermQid.Sort], 'subsort_<_.[''Context.Sort, ''NeCTermList.Sort], 'subsort_<_.[ ''EmptyCommaList.Sort, ''GroundTermList.Sort], 'subsort_<_.[ ''EmptyCommaList.Sort, ''ParameterList.Sort], 'subsort_<_.[ ''EmptyQidSet.Sort, ''KindSet.Sort], 'subsort_<_.[''EmptyQidSet.Sort, ''SortSet.Sort], 'subsort_<_.[''EmptyQidSet.Sort, ''VariableSet.Sort], 'subsort_<_.[''EqCondition.Sort, ''Condition.Sort], 'subsort_<_.[ ''Equation.Sort, ''EquationSet.Sort], 'subsort_<_.[''Expression.Sort, ''ModuleExpression.Sort], 'subsort_<_.[''Expression.Sort, ''ViewExpression.Sort], 'subsort_<_.[''FModule.Sort, ''SModule.Sort], 'subsort_<_.[''FTheory.Sort, ''STheory.Sort], 'subsort_<_.[ ''GroundTerm.Sort, ''NeGroundTermList.Sort], 'subsort_<_.[ ''GroundTerm.Sort, ''Term.Sort], 'subsort_<_.[''GroundTermList.Sort, ''TermList.Sort], 'subsort_<_.[''Hook.Sort, ''NeHookList.Sort], 'subsort_<_.[''Import.Sort, ''ImportList.Sort], 'subsort_<_.[''Kind.Sort, ''NeKindSet.Sort], 'subsort_<_.[''Kind.Sort, ''Type.Sort], 'subsort_<_.[ ''KindSet.Sort, ''TypeSet.Sort], 'subsort_<_.[''MatchPair.Sort, ''MatchOrUnificationPair.Sort], 'subsort_<_.[''MatchPair.Sort, ''MatchPair?.Sort], 'subsort_<_.[''MembAx.Sort, ''MembAxSet.Sort], 'subsort_<_.[''NarrowingApplyResult.Sort, ''NarrowingApplyResult?.Sort], 'subsort_<_.[''NarrowingSearchPathResult.Sort, ''NarrowingSearchPathResult?.Sort], 'subsort_<_.[ ''NarrowingSearchResult.Sort, ''NarrowingSearchResult?.Sort], 'subsort_<_.[ ''NarrowingStep.Sort, ''NarrowingTrace.Sort], 'subsort_<_.[''Nat.Sort, ''Bound.Sort], 'subsort_<_.[''Nat.Sort, ''FindResult.Sort], 'subsort_<_.[ ''Nat.Sort, ''NeNatList.Sort], 'subsort_<_.[''Nat.Sort, ''Parent.Sort], 'subsort_<_.[''NeCTermList.Sort, ''GTermList.Sort], 'subsort_<_.[ ''NeGroundTermList.Sort, ''GroundTermList.Sort], 'subsort_<_.[ ''NeGroundTermList.Sort, ''NeTermList.Sort], 'subsort_<_.[ ''NeHookList.Sort, ''HookList.Sort], 'subsort_<_.[''NeKindSet.Sort, ''KindSet.Sort], 'subsort_<_.[''NeKindSet.Sort, ''NeTypeSet.Sort], 'subsort_<_.[''NeNatList.Sort, ''NatList.Sort], 'subsort_<_.[ ''NeParameterDeclList.Sort, ''ParameterDeclList.Sort], 'subsort_<_.[ ''NeParameterList.Sort, ''ParameterList.Sort], 'subsort_<_.[ ''NeQidList.Sort, ''QidList.Sort], 'subsort_<_.[''NeQidSet.Sort, ''QidSet.Sort], 'subsort_<_.[''NeSortSet.Sort, ''NeTypeSet.Sort], 'subsort_<_.[''NeSortSet.Sort, ''SortSet.Sort], 'subsort_<_.[ ''NeTermList.Sort, ''TermList.Sort], 'subsort_<_.[''NeTypeList.Sort, ''NeQidList.Sort], 'subsort_<_.[''NeTypeList.Sort, ''TypeList.Sort], 'subsort_<_.[''NeTypeSet.Sort, ''NeQidSet.Sort], 'subsort_<_.[ ''NeTypeSet.Sort, ''TypeSet.Sort], 'subsort_<_.[''NeVariableSet.Sort, ''NeQidSet.Sort], 'subsort_<_.[''NeVariableSet.Sort, ''VariableSet.Sort], 'subsort_<_.[''NzNat.Sort, ''Nat.Sort], 'subsort_<_.[''OpDecl.Sort, ''OpDeclSet.Sort], 'subsort_<_.[''OpMapping.Sort, ''OpMappingSet.Sort], 'subsort_<_.[''ParameterDecl.Sort, ''NeParameterDeclList.Sort], 'subsort_<_.[''PatternSubjectPair.Sort, ''MatchingProblem.Sort], 'subsort_<_.[''PrintOption.Sort, ''PrintOptionSet.Sort], 'subsort_<_.[ ''Qid.Sort, ''Header.Sort], 'subsort_<_.[''Qid.Sort, ''NeQidList.Sort], 'subsort_<_.[''Qid.Sort, ''NeQidSet.Sort], 'subsort_<_.[''Renaming.Sort, ''RenamingSet.Sort], 'subsort_<_.[''Result4Tuple.Sort, ''Result4Tuple?.Sort], 'subsort_<_.[''ResultPair.Sort, ''ResultPair?.Sort], 'subsort_<_.[''ResultTriple.Sort, ''ResultTriple?.Sort], 'subsort_<_.[ ''Rule.Sort, ''RuleSet.Sort], 'subsort_<_.[''RuleApplication.Sort, ''Strategy.Sort], 'subsort_<_.[''SModule.Sort, ''Module.Sort], 'subsort_<_.[''SModule.Sort, ''StratModule.Sort], 'subsort_<_.[ ''STheory.Sort, ''Module.Sort], 'subsort_<_.[''STheory.Sort, ''StratTheory.Sort], 'subsort_<_.[''SmtResult.Sort, ''SmtResult?.Sort], 'subsort_<_.[''Sort.Sort, ''Expression.Sort], 'subsort_<_.[''Sort.Sort, ''NeSortSet.Sort], 'subsort_<_.[''Sort.Sort, ''Type.Sort], 'subsort_<_.[ ''SortMapping.Sort, ''SortMappingSet.Sort], 'subsort_<_.[''SortSet.Sort, ''TypeSet.Sort], 'subsort_<_.[''StratDecl.Sort, ''StratDeclSet.Sort], 'subsort_<_.[''StratDefinition.Sort, ''StratDefSet.Sort], 'subsort_<_.[ ''StratMapping.Sort, ''StratMappingSet.Sort], 'subsort_<_.[ ''StratModule.Sort, ''Module.Sort], 'subsort_<_.[''StratTheory.Sort, ''Module.Sort], 'subsort_<_.[''Strategy.Sort, ''Strategy?.Sort], 'subsort_<_.[''Strategy.Sort, ''StrategyList.Sort], 'subsort_<_.[ ''SubsortDecl.Sort, ''SubsortDeclSet.Sort], 'subsort_<_.[ ''Substitution.Sort, ''Substitution?.Sort], 'subsort_<_.[''Term.Sort, ''NeTermList.Sort], 'subsort_<_.[''TermList.Sort, ''GTermList.Sort], 'subsort_<_.[''TermQid.Sort, ''Qid.Sort], 'subsort_<_.[''TermQid.Sort, ''Term.Sort], 'subsort_<_.[''Trace.Sort, ''Trace?.Sort], 'subsort_<_.[ ''TraceStep.Sort, ''Trace.Sort], 'subsort_<_.[''Type.Sort, ''NeTypeList.Sort], 'subsort_<_.[''Type.Sort, ''NeTypeSet.Sort], 'subsort_<_.[''Type.Sort, ''Qid.Sort], 'subsort_<_.[''Type.Sort, ''Type?.Sort], 'subsort_<_.[''TypeList.Sort, ''QidList.Sort], 'subsort_<_.[ ''TypeList.Sort, ''TypeListSet.Sort], 'subsort_<_.[''TypeSet.Sort, ''QidSet.Sort], 'subsort_<_.[''TypeSet.Sort, ''TypeListSet.Sort], 'subsort_<_.[''UnificandPair.Sort, ''UnificationProblem.Sort], 'subsort_<_.[''UnificationPair.Sort, ''MatchOrUnificationPair.Sort], 'subsort_<_.[''UnificationPair.Sort, ''UnificationPair?.Sort], 'subsort_<_.[''UnificationTriple.Sort, ''UnificationTriple?.Sort], 'subsort_<_.[''UsingPair.Sort, ''UsingPairSet.Sort], 'subsort_<_.[ ''Variable.Sort, ''NeVariableSet.Sort], 'subsort_<_.[''Variable.Sort, ''TermQid.Sort], 'subsort_<_.[''VariableSet.Sort, ''QidSet.Sort], 'subsort_<_.[''Variant.Sort, ''Variant?.Sort], 'subsort_<_.[ ''VariantOption.Sort, ''VariantOptionSet.Sort], 'subsort_<_.[ ''ViewExpression.Sort, ''NeParameterList.Sort], 'subsort_<_.[''Zero.Sort, ''Nat.Sort]], '__['op_:_->_`[_`].[''$applySubstitution.Sort, '__[ ''NeTermList.Sort, ''Substitution.Sort], ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$card.Sort, '__[''QidSet.Sort, ''Nat.Sort], ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$diff.Sort, '__[''QidSet.Sort, ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$intersect.Sort, '__[''QidSet.Sort, ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''$reverse.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$reverse.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''$size.Sort, '__[''NatList.Sort, ''Nat.Sort], ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$size.Sort, '__[''QidList.Sort, ''Nat.Sort], ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''0.Sort, 'nil.TypeList, ''Zero.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''.Sort, 'nil.TypeList, ''Constant.Sort, 'special['id-hook[''QuotedIdentifierSymbol.Sort, ''constantQid.Sort]]], 'op_:_->_`[_`].[''.Sort, 'nil.TypeList, ''Kind.Sort, 'special[ 'id-hook[''QuotedIdentifierSymbol.Sort, ''kindQid.Sort]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Qid.Sort, 'special['id-hook[ ''QuotedIdentifierSymbol.Sort, 'nil.TypeList]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Sort.Sort, 'special['id-hook[ ''QuotedIdentifierSymbol.Sort, ''sortQid.Sort]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Variable.Sort, 'special['id-hook[ ''QuotedIdentifierSymbol.Sort, ''variableQid.Sort]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Char.Sort, 'special['id-hook[ ''StringSymbol.Sort, 'nil.TypeList]]], 'op_:_->_`[_`].[''.Sort, 'nil.TypeList, ''String.Sort, 'special['id-hook[''StringSymbol.Sort, 'nil.TypeList]]], 'op_:_->_`[_`].[''_!.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_&_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^53[ '0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''&.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_*.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_*_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'prec['s_^31['0.Zero]], 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''*.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_*_.Sort, '__[ ''NzNat.Sort, ''NzNat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^31['0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''*.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_*`(_`).Sort, '__[ ''ModuleExpression.Sort, ''RenamingSet.Sort], ''ModuleExpression.Sort, '__[ 'ctor.Attr, 'prec['s_^39['0.Zero]], 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''_+.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''_+_.Sort, '__[''ModuleExpression.Sort, ''ModuleExpression.Sort], ''ModuleExpression.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr]], 'op_:_->_`[_`].[''_+_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'prec['s_^33['0.Zero]], 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''+.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_+_.Sort, '__[ ''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^33['0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''+.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_+_.Sort, '__[''String.Sort, ''String.Sort], ''String.Sort, '__['prec['s_^33['0.Zero]], 'gather['__[ ''E.Sort, ''e.Sort]], 'special['__['id-hook[''StringOpSymbol.Sort, ''+.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]]], 'op_:_->_`[_`].[''_/\_.Sort, '__[''Condition.Sort, ''Condition.Sort], ''Condition.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.EqCondition.Constant], 'prec['s_^73['0.Zero]]]], 'op_:_->_`[_`].[ ''_/\_.Sort, '__[''EqCondition.Sort, ''EqCondition.Sort], ''EqCondition.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.EqCondition.Constant], 'prec['s_^73['0.Zero]]]], 'op_:_->_`[_`].[ ''_/\_.Sort, '__[''MatchingProblem.Sort, ''MatchingProblem.Sort], ''MatchingProblem.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec[ 's_^73['0.Zero]]]], 'op_:_->_`[_`].[''_/\_.Sort, '__[ ''UnificationProblem.Sort, ''UnificationProblem.Sort], ''UnificationProblem.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec[ 's_^73['0.Zero]]]], 'op_:_->_`[_`].[''_::_.Variable, '__[''Sort.Sort, ''ModuleExpression.Sort], ''ParameterDecl.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_:=_.Variable, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_:_.Variable, '__[''Term.Sort, ''Sort.Sort], ''EqCondition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''EmptyQidSet.Sort, ''EmptyQidSet.Sort], ''EmptyQidSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''KindSet.Sort, ''KindSet.Sort], ''KindSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeKindSet.Sort, ''KindSet.Sort], ''NeKindSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeQidSet.Sort, ''QidSet.Sort], ''NeQidSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''NeSortSet.Sort, ''SortSet.Sort], ''NeSortSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeTypeSet.Sort, ''TypeSet.Sort], ''NeTypeSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeVariableSet.Sort, ''VariableSet.Sort], ''NeVariableSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''SortSet.Sort, ''SortSet.Sort], ''SortSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''idle.Strategy.Constant], 'prec['s_^39['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''Substitution.Sort, ''Substitution.Sort], ''Substitution.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.Substitution.Constant], 'prec['s_^65['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''TypeListSet.Sort, ''TypeListSet.Sort], ''TypeListSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''TypeSet.Sort, ''TypeSet.Sort], ''TypeSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[ ''VariableSet.Sort, ''VariableSet.Sort], ''VariableSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_<-_.Sort, '__[''Variable.Sort, ''Term.Sort], ''Assignment.Sort, '__['ctor.Attr, 'prec['s_^63['0.Zero]], 'format['__[''n++i.Sort, ''d.Sort, ''d.Sort, ''--.Sort]]]], 'op_:_->_`[_`].[''_<<_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'prec['s_^35['0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''<<.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_<=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''PatternSubjectPair.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_<=_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''<=.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_<=_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''<=.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_<_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''<.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_<_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''<.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_=/=_.Sort, '__[ ''Universal.Sort, ''Universal.Sort], ''Bool.Sort, '__['prec['s_^51[ '0.Zero]], 'poly['__['s_['0.Zero], 's_^2['0.Zero]]], 'special['__['id-hook[ ''EqualitySymbol.Sort, 'nil.TypeList], 'term-hook[''equalTerm.Sort, ''false.Bool.Constant], 'term-hook[''notEqualTerm.Sort, ''true.Bool.Constant]]]]], 'op_:_->_`[_`].[''_==_.Sort, '__[ ''Universal.Sort, ''Universal.Sort], ''Bool.Sort, '__['prec['s_^51[ '0.Zero]], 'poly['__['s_['0.Zero], 's_^2['0.Zero]]], 'special['__['id-hook[ ''EqualitySymbol.Sort, 'nil.TypeList], 'term-hook[''equalTerm.Sort, ''true.Bool.Constant], 'term-hook[''notEqualTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_=>_.Sort, '__[''Term.Sort, ''Term.Sort], ''Condition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''UnificandPair.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_=_.Sort, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_>=_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__[ 'prec['s_^37['0.Zero]], 'special['__['id-hook[''NumberOpSymbol.Sort, ''>=.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[ ''_>=_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec[ 's_^37['0.Zero]], 'special['__['id-hook[''StringOpSymbol.Sort, ''>=.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[ ''_>>_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['prec['s_^35[ '0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__['id-hook[ ''NumberOpSymbol.Sort, ''>>.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_>_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''>.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_>_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''>.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_?_:_.Variable, '__[ ''Strategy.Sort, ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__[ 'ctor.Attr, 'prec['s_^55['0.Zero]]]], 'op_:_->_`[_`].[''_\_.Sort, '__[ ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'gather['__[''E.Sort, ''e.Sort]]], 'op_:_->_`[_`].[''_^_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['prec['s_^29['0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__['id-hook[''NumberOpSymbol.Sort, ''^.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_^_.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['prec['s_^29['0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''^.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''AttrSet.Sort, ''AttrSet.Sort], ''AttrSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.AttrSet.Constant]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''EquationSet.Sort, ''EquationSet.Sort], ''EquationSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EquationSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''HookList.Sort, ''HookList.Sort], ''HookList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.HookList.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''HookList.Sort, ''NeHookList.Sort], ''NeHookList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.HookList.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''ImportList.Sort, ''ImportList.Sort], ''ImportList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.ImportList.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''MembAxSet.Sort, ''MembAxSet.Sort], ''MembAxSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.MembAxSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''NarrowingTrace.Sort, ''NarrowingTrace.Sort], ''NarrowingTrace.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.NarrowingTrace.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.NatList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''NatList.Sort, ''NeNatList.Sort], ''NeNatList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.NatList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''NeHookList.Sort, ''HookList.Sort], ''NeHookList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.HookList.Constant]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''NeNatList.Sort, ''NatList.Sort], ''NeNatList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.NatList.Constant], 'prec['s_^25[ '0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''NeQidList.Sort, ''QidList.Sort], ''NeQidList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''NeTypeList.Sort, ''TypeList.Sort], ''NeTypeList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25[ '0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''OpDeclSet.Sort, ''OpDeclSet.Sort], ''OpDeclSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.OpDeclSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''OpMappingSet.Sort, ''OpMappingSet.Sort], ''OpMappingSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.OpMappingSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''PrintOptionSet.Sort, ''PrintOptionSet.Sort], ''PrintOptionSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.PrintOptionSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''QidList.Sort, ''NeQidList.Sort], ''NeQidList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''RuleSet.Sort, ''RuleSet.Sort], ''RuleSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.RuleSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''SortMappingSet.Sort, ''SortMappingSet.Sort], ''SortMappingSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.SortMappingSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''StratDeclSet.Sort, ''StratDeclSet.Sort], ''StratDeclSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.StratDeclSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''StratDefSet.Sort, ''StratDefSet.Sort], ''StratDefSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.StratDefSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''StratMappingSet.Sort, ''StratMappingSet.Sort], ''StratMappingSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.StratMappingSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''SubsortDeclSet.Sort, ''SubsortDeclSet.Sort], ''SubsortDeclSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.SubsortDeclSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''Trace.Sort, ''Trace.Sort], ''Trace.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.Trace.Constant], 'format['__[''d.Sort, ''n.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''TypeList.Sort, ''NeTypeList.Sort], ''NeTypeList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''TypeList.Sort, ''TypeList.Sort], ''TypeList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25[ '0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''VariantOptionSet.Sort, ''VariantOptionSet.Sort], ''VariantOptionSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.VariantOptionSet.Constant]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''EmptyCommaList.Sort, ''EmptyCommaList.Sort], ''EmptyCommaList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''GTermList.Sort, ''GTermList.Sort], ''GTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''GroundTermList.Sort, ''GroundTermList.Sort], ''GroundTermList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec[ 's_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[ ''_`,_.Qid, '__[''GroundTermList.Sort, ''NeGroundTermList.Sort], ''NeGroundTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''NeCTermList.Sort, ''TermList.Sort], ''NeCTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''NeGroundTermList.Sort, ''GroundTermList.Sort], ''NeGroundTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec[ 's_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[ ''_`,_.Qid, '__[''NeParameterDeclList.Sort, ''ParameterDeclList.Sort], ''NeParameterDeclList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.ParameterDeclList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''NeParameterList.Sort, ''ParameterList.Sort], ''NeParameterList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''NeTermList.Sort, ''TermList.Sort], ''NeTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''ParameterDeclList.Sort, ''NeParameterDeclList.Sort], ''NeParameterDeclList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.ParameterDeclList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''ParameterDeclList.Sort, ''ParameterDeclList.Sort], ''ParameterDeclList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.ParameterDeclList.Constant], 'prec['s_^121[ '0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''ParameterList.Sort, ''NeParameterList.Sort], ''NeParameterList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''ParameterList.Sort, ''ParameterList.Sort], ''ParameterList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec[ 's_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[ ''_`,_.Qid, '__[''RenamingSet.Sort, ''RenamingSet.Sort], ''RenamingSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec['s_^43[ '0.Zero]], 'format['__[''d.Sort, ''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''StrategyList.Sort, ''StrategyList.Sort], ''StrategyList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.StrategyList.Constant]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''TermList.Sort, ''NeCTermList.Sort], ''NeCTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''TermList.Sort, ''NeTermList.Sort], ''NeTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''TermList.Sort, ''TermList.Sort], ''TermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''UsingPairSet.Sort, ''UsingPairSet.Sort], ''UsingPairSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec['s_^61['0.Zero]]]], 'op_:_->_`[_`].[''_`[_`].Qid, '__[''Qid.Sort, ''NeCTermList.Sort], ''Context.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_`[_`].Qid, '__[''Qid.Sort, ''NeGroundTermList.Sort], ''GroundTerm.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''_`[_`].Qid, '__[''Qid.Sort, ''NeTermList.Sort], ''Term.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_`[_`]`{_`}.Qid, '__[''Qid.Sort, ''Substitution.Sort, ''StrategyList.Sort], ''RuleApplication.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''_`[`[_`]`].Qid, '__[''Qid.Sort, ''TermList.Sort], ''CallStrategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''_`{_`}.Sort, '__[''Expression.Sort, ''NeParameterList.Sort], ''Expression.Sort, '__['ctor.Attr, 'prec['s_^37[ '0.Zero]]]], 'op_:_->_`[_`].[''_`{_`}.Sort, '__[''ModuleExpression.Sort, ''NeParameterList.Sort], ''ModuleExpression.Sort, '__['ctor.Attr, 'prec[ 's_^37['0.Zero]]]], 'op_:_->_`[_`].[''_`{_`}.Sort, '__[''Qid.Sort, ''ParameterDeclList.Sort], ''Header.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''_`{_`}.Sort, '__[''ViewExpression.Sort, ''NeParameterList.Sort], ''ViewExpression.Sort, '__['ctor.Attr, 'prec['s_^37['0.Zero]]]], 'op_:_->_`[_`].[''_and-then_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['strat['__['s_['0.Zero], '0.Zero]], 'prec['s_^55[ '0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[ ''_and_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^55['0.Zero]]]], 'op_:_->_`[_`].[''_divides_.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^51['0.Zero]], 'special['__['id-hook[''NumberOpSymbol.Sort, ''divides.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[ ''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_implies_.Sort, '__[ ''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['prec['s_^61['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_in_.Sort, '__[ ''Qid.Sort, ''QidSet.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''_or-else_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['strat[ '__['s_['0.Zero], '0.Zero]], 'prec['s_^59['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_or-else_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__['assoc.Attr, 'ctor.Attr, 'prec[ 's_^43['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[ ''_or_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^59['0.Zero]]]], 'op_:_->_`[_`].[''_psubset_.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_quo_.Sort, '__[''Nat.Sort, ''NzNat.Sort], ''Nat.Sort, '__['prec['s_^31['0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''quo.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_rem_.Sort, '__[''Nat.Sort, ''NzNat.Sort], ''Nat.Sort, '__['prec['s_^31['0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__['id-hook[ ''NumberOpSymbol.Sort, ''rem.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_subset_.Sort, '__[ ''QidSet.Sort, ''QidSet.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_using_.Sort, '__[''Variable.Sort, ''Strategy.Sort], ''UsingPair.Sort, '__['ctor.Attr, 'prec['s_^21['0.Zero]]]], 'op_:_->_`[_`].[''_xor_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^57['0.Zero]]]], 'op_:_->_`[_`].[ ''_xor_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^55['0.Zero]], 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''xor.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_|_.Sort, '__[ ''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec[ 's_^57['0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''|.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_|_.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^57[ '0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''|.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_|_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''fail.Strategy.Constant], 'prec['s_^41['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''`[_`].Kind, ''Qid.Sort, ''Module.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''`[`].Kind, 'nil.TypeList, ''Context.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort, ''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''NarrowingStep.Sort, '__['ctor.Attr, 'format['__[''ni.Sort, ''n++i.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingApplyResult.Sort, '__['ctor.Attr, 'format['__[ ''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''NarrowingTrace.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchPathResult.Sort, '__[ 'ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchResult.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Nat.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Substitution.Sort, ''Qid.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Substitution.Sort, ''Term.Sort, ''Nat.Sort], ''SmtResult.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Context.Sort], ''Result4Tuple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[ ''Substitution.Sort, ''Substitution.Sort, ''Nat.Sort], ''UnificationTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''UnificationTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Rule.Sort], ''TraceStep.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''ResultTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Context.Sort], ''MatchPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Nat.Sort], ''UnificationPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Qid.Sort], ''UnificationPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort], ''ResultPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''all.Sort, 'nil.TypeList, ''RuleApplication.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''amatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''amatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''ambiguity.Sort, '__[''ResultPair.Sort, ''ResultPair.Sort], ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''ambiguity.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''anyType.Sort, 'nil.TypeList, ''Type?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''append.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''append.Sort, '__[''NatList.Sort, ''NeNatList.Sort], ''NeNatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''append.Sort, '__[''NeNatList.Sort, ''NatList.Sort], ''NeNatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''append.Sort, '__[''NeQidList.Sort, ''QidList.Sort], ''NeQidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''append.Sort, '__[''QidList.Sort, ''NeQidList.Sort], ''NeQidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''append.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''applySubstitution.Sort, '__[ ''Module.Sort, ''Term.Sort, ''Substitution.Sort], ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''ascii.Sort, ''Char.Sort, ''Nat.Sort, 'special['__['id-hook[''StringOpSymbol.Sort, ''ascii.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[''assoc.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''breadthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''ceq_=_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''Equation.Sort, '__[ 'ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''char.Sort, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[String`].Kind, 'special['__['id-hook[''StringOpSymbol.Sort, ''char.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[''cmb_:_if_`[_`]..Qid, '__[ ''Term.Sort, ''Sort.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''MembAx.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''comm.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''completeName.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaCompleteName.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''config.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''crl_=>_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''Condition.Sort, ''AttrSet.Sort], ''Rule.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''csd_:=_if_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''StratDefinition.Sort, '__['ctor.Attr, 'format['__[ ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''ctor.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''delay.Sort, 'nil.TypeList, ''VariantOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''delete.Sort, '__[''Qid.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''depthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''downTerm.Sort, '__[ ''Term.Sort, ''Universal.Sort], ''Universal.Sort, '__['poly['__['s_^2[ '0.Zero], '0.Zero]], 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaDownTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]]], 'op_:_->_`[_`].[''empty.Sort, 'nil.TypeList, ''EmptyCommaList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''empty.Sort, 'nil.TypeList, ''GroundTermList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''empty.Sort, 'nil.TypeList, ''StrategyList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''eq_=_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Equation.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''extending_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''fail.Sort, 'nil.TypeList, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''Result4Tuple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failure.Sort, 'nil.TypeList, ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''ResultTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''SmtResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''Trace?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failureIncomplete.Sort, 'nil.TypeList, ''ResultTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''false.Sort, 'nil.TypeList, ''Bool.Sort, '__['ctor.Attr, 'special['id-hook[ ''SystemFalse.Sort, 'nil.TypeList]]]], 'op_:_->_`[_`].[''filter.Sort, 'nil.TypeList, ''VariantOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''find.Sort, '__[''String.Sort, ''String.Sort, ''Nat.Sort], ''FindResult.Sort, 'special['__['id-hook[''StringOpSymbol.Sort, ''find.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''notFoundTerm.Sort, ''notFound.FindResult.Constant]]]], 'op_:_->_`[_`].[''flat.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''fmod_is_sorts_.____endfm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FModule.Sort, '__['ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[ ''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''format.Sort, ''QidList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''format.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''front.Sort, ''NeNatList.Sort, ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''front.Sort, ''NeQidList.Sort, ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''frozen.Sort, ''NeNatList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''fth_is_sorts_.____endfth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FTheory.Sort, '__['ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[ ''d.Sort, ''d.Sort, ''d.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''gather.Sort, ''QidList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''gcd.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''gcd.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''gcd.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__[ 'id-hook[''ACU_NumberOpSymbol.Sort, ''gcd.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''generated-by_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''getAccumulatedSubstitution.Sort, ''NarrowingSearchResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getAccumulatedSubstitution.Sort, ''NarrowingStep.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''MatchPair.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getContext.Sort, ''NarrowingApplyResult.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''NarrowingStep.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''Result4Tuple.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getEqs.Sort, ''Module.Sort, ''EquationSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getFrom.Sort, ''View.Sort, ''ModuleExpression.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getImports.Sort, ''Module.Sort, ''ImportList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getInitialSubstitution.Sort, ''NarrowingSearchPathResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getInitialTerm.Sort, ''NarrowingSearchPathResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getInitialType.Sort, ''NarrowingSearchPathResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getKind.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaGetKind.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''getKinds.Sort, ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaGetKinds.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''getLabel.Sort, ''NarrowingApplyResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getLabel.Sort, ''NarrowingStep.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getLhsSubstitution.Sort, ''UnificationTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getMbs.Sort, ''Module.Sort, ''MembAxSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getMoreVariantsInLayerFlag.Sort, ''Variant.Sort, ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getName.Sort, ''Constant.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getName.Sort, ''Module.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getName.Sort, ''Variable.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getName.Sort, ''View.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getOpMappings.Sort, ''View.Sort, ''OpMappingSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getOps.Sort, ''Module.Sort, ''OpDeclSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getParent.Sort, ''Variant.Sort, ''Parent.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRhsSubstitution.Sort, ''UnificationTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRls.Sort, ''Module.Sort, ''RuleSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getRule.Sort, ''TraceStep.Sort, ''Rule.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRuleSubstitution.Sort, ''NarrowingApplyResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSds.Sort, ''Module.Sort, ''StratDefSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSortMappings.Sort, ''View.Sort, ''SortMappingSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSorts.Sort, ''Module.Sort, ''SortSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getStateVariableFamily.Sort, ''NarrowingSearchResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getStratMappings.Sort, ''View.Sort, ''StratMappingSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getStrats.Sort, ''Module.Sort, ''StratDeclSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubsorts.Sort, ''Module.Sort, ''SubsortDeclSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSubstitution.Sort, ''MatchPair.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''Result4Tuple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSubstitution.Sort, ''ResultTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''UnificationPair.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''Variant.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''NarrowingApplyResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getTerm.Sort, ''NarrowingSearchResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''NarrowingStep.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''Result4Tuple.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''ResultPair.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getTerm.Sort, ''ResultTriple.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''TraceStep.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''Variant.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTermSubstitution.Sort, ''NarrowingApplyResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTo.Sort, ''View.Sort, ''ModuleExpression.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTrace.Sort, ''NarrowingSearchPathResult.Sort, ''NarrowingTrace.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Constant.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''NarrowingApplyResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getType.Sort, ''NarrowingSearchResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''NarrowingStep.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Result4Tuple.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''ResultPair.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getType.Sort, ''ResultTriple.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''TraceStep.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Variable.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingSearchPathResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingSearchResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingStep.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getUnifierVariableFamily.Sort, ''NarrowingSearchPathResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getUnifierVariableFamily.Sort, ''NarrowingSearchResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifierVariableFamily.Sort, ''NarrowingStep.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getVariableFamily.Sort, ''NarrowingApplyResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getVariableFamily.Sort, ''UnificationPair.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getVariableFamily.Sort, ''UnificationTriple.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getVariableFamily.Sort, ''Variant.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''glbSorts.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGlbSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''head.Sort, ''NeNatList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''head.Sort, ''NeQidList.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''id.Sort, ''Term.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''id-hook.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Hook.Sort, '__[ 'ctor.Attr, 'format['__[''nssss.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''idem.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''idle.Sort, 'nil.TypeList, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''if_then_else_fi.Sort, '__[''Bool.Sort, ''Universal.Sort, ''Universal.Sort], ''Universal.Sort, '__['poly['__['s_^2['0.Zero], 's_^3[ '0.Zero], '0.Zero]], 'special['__['id-hook[''BranchSymbol.Sort, 'nil.TypeList], 'term-hook[''1.Sort, ''true.Bool.Constant], 'term-hook[ ''2.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''including_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''insert.Sort, '__[''Qid.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''intersection.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''iter.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''label.Sort, ''Qid.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''label_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''last.Sort, ''NeNatList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''last.Sort, ''NeQidList.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''latex.Sort, ''String.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''lcm.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''lcm.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''lcm.Sort, '__[''NzNat.Sort, ''NzNat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''lcm.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''leastSort.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaLeastSort.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''left-id.Sort, ''Term.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''length.Sort, ''String.Sort, ''Nat.Sort, 'special['__['id-hook[ ''StringOpSymbol.Sort, ''length.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[ ''lesserSorts.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaLesserSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''lowerCase.Sort, ''String.Sort, ''String.Sort, 'special[ '__['id-hook[''StringOpSymbol.Sort, ''lowerCase.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[''match_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''matchrew_s.t._by_.Constant, '__[''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''max.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''max.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''max.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__[ 'id-hook[''ACU_NumberOpSymbol.Sort, ''max.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''maximalAritySet.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMaximalAritySet.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''maximalSorts.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMaximalSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''mb_:_`[_`]..Qid, '__[''Term.Sort, ''Sort.Sort, ''AttrSet.Sort], ''MembAx.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''memo.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''metaApply.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Substitution?`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaApply.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaCheck.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaCheck.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''legacyMetaDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaFrewrite.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaFrewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaGetIrredundantVariant.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaGetIrredundantVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetIrredundantVariant.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetIrredundantVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetVariant.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaGetVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetVariant.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaIrredundantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaIrredundantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaIrredundantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaIrredundantUnify.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaMatch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Substitution?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMatch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrow.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[Bool`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrow2.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrow.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrow.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingApply.Sort, '__[''Module.Sort, ''Term.Sort, ''TermList.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingApplyResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''metaNarrowingApply.Sort, '__[''Module.Sort, ''Term.Sort, ''TermList.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingApplyResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingApply.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingSearch.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingSearchResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaNarrowingSearch.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingSearchResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingSearch.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingSearchPath.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingSearchPathResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaNarrowingSearchPath.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingSearchPathResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingSearchPath.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNormalize.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNormalize.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaParse.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaParse.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaParse.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaParseStrategy.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[StrategyList`,Strategy?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaParseStrategy.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaPrettyPrint.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrettyPrint.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaPrettyPrintStrategy.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[StrategyList`,Strategy?`].Kind, ''`[PrintOptionSet`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrettyPrintStrategy.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaPrintToString.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[String`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrintToString.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaReduce.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaReduce.Sort], 'op-hook[''qidSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''metaTermSymbol.Sort, ''_`[_`].Qid, '__[''Qid.Sort, ''NeGroundTermList.Sort], ''GroundTerm.Sort], 'op-hook[ ''metaArgSymbol.Sort, ''_`,_.Qid, '__[''NeGroundTermList.Sort, ''GroundTermList.Sort], ''NeGroundTermList.Sort], 'op-hook[ ''emptyTermListSymbol.Sort, ''empty.Sort, 'nil.TypeList, ''GroundTermList.Sort], 'op-hook[''assignmentSymbol.Sort, ''_<-_.Sort, '__[ ''Variable.Sort, ''Term.Sort], ''Assignment.Sort], 'op-hook[ ''emptySubstitutionSymbol.Sort, ''none.Sort, 'nil.TypeList, ''Substitution.Sort], 'op-hook[''substitutionSymbol.Sort, ''_;_.Sort, '__[ ''Substitution.Sort, ''Substitution.Sort], ''Substitution.Sort], 'op-hook[ ''holeSymbol.Sort, ''`[`].Kind, 'nil.TypeList, ''Context.Sort], 'op-hook[ ''noConditionSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''EqCondition.Sort], 'op-hook[''equalityConditionSymbol.Sort, ''_=_.Sort, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort], 'op-hook[''sortTestConditionSymbol.Sort, ''_:_.Variable, '__[''Term.Sort, ''Sort.Sort], ''EqCondition.Sort], 'op-hook[''matchConditionSymbol.Sort, ''_:=_.Variable, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort], 'op-hook[''rewriteConditionSymbol.Sort, ''_=>_.Sort, '__[''Term.Sort, ''Term.Sort], ''Condition.Sort], 'op-hook[ ''conjunctionSymbol.Sort, ''_/\_.Sort, '__[''EqCondition.Sort, ''EqCondition.Sort], ''EqCondition.Sort], 'op-hook[''failStratSymbol.Sort, ''fail.Sort, 'nil.TypeList, ''Strategy.Sort], 'op-hook[ ''idleStratSymbol.Sort, ''idle.Sort, 'nil.TypeList, ''Strategy.Sort], 'op-hook[''allStratSymbol.Sort, ''all.Sort, 'nil.TypeList, ''RuleApplication.Sort], 'op-hook[''applicationStratSymbol.Sort, ''_`[_`]`{_`}.Qid, '__[''Qid.Sort, ''Substitution.Sort, ''StrategyList.Sort], ''RuleApplication.Sort], 'op-hook[ ''topStratSymbol.Sort, ''top.Sort, ''RuleApplication.Sort, ''Strategy.Sort], 'op-hook[''matchStratSymbol.Sort, ''match_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[ ''xmatchStratSymbol.Sort, ''xmatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[''amatchStratSymbol.Sort, ''amatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[''unionStratSymbol.Sort, ''_|_.Sort, '__[ ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[ ''concatStratSymbol.Sort, ''_;_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''orelseStratSymbol.Sort, ''_or-else_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''plusStratSymbol.Sort, ''_+.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''conditionalStratSymbol.Sort, ''_?_:_.Variable, '__[''Strategy.Sort, ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''matchrewStratSymbol.Sort, ''matchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''xmatchrewStratSymbol.Sort, ''xmatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''amatchrewStratSymbol.Sort, ''amatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''callStratSymbol.Sort, ''_`[`[_`]`].Qid, '__[''Qid.Sort, ''TermList.Sort], ''CallStrategy.Sort], 'op-hook[''oneStratSymbol.Sort, ''one.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[ ''starStratSymbol.Sort, ''_*.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''normalizationStratSymbol.Sort, ''_!.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''notStratSymbol.Sort, ''not.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''testStratSymbol.Sort, ''test.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[ ''tryStratSymbol.Sort, ''try.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''usingStratSymbol.Sort, ''_using_.Sort, '__[''Variable.Sort, ''Strategy.Sort], ''UsingPair.Sort], 'op-hook[''usingListStratSymbol.Sort, ''_`,_.Qid, '__[''UsingPairSet.Sort, ''UsingPairSet.Sort], ''UsingPairSet.Sort], 'op-hook[''emptyStratListSymbol.Sort, ''empty.Sort, 'nil.TypeList, ''StrategyList.Sort], 'op-hook[''stratListSymbol.Sort, ''_`,_.Qid, '__[''StrategyList.Sort, ''StrategyList.Sort], ''StrategyList.Sort], 'op-hook[''headerSymbol.Sort, ''_`{_`}.Sort, '__[ ''Qid.Sort, ''ParameterDeclList.Sort], ''Header.Sort], 'op-hook[ ''parameterDeclSymbol.Sort, ''_::_.Variable, '__[''Sort.Sort, ''ModuleExpression.Sort], ''ParameterDecl.Sort], 'op-hook[ ''parameterDeclListSymbol.Sort, ''_`,_.Qid, '__[''ParameterDeclList.Sort, ''ParameterDeclList.Sort], ''ParameterDeclList.Sort], 'op-hook[ ''protectingSymbol.Sort, ''protecting_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''extendingSymbol.Sort, ''extending_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''includingSymbol.Sort, ''including_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[ ''generatedBySymbol.Sort, ''generated-by_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''nilImportListSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''ImportList.Sort], 'op-hook[''importListSymbol.Sort, ''__.Sort, '__[''ImportList.Sort, ''ImportList.Sort], ''ImportList.Sort], 'op-hook[''emptySortSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''QidSet.Sort], 'op-hook[''sortSetSymbol.Sort, ''_;_.Sort, '__[ ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort], 'op-hook[ ''subsortSymbol.Sort, ''subsort_<_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SubsortDecl.Sort], 'op-hook[''emptySubsortDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''SubsortDeclSet.Sort], 'op-hook[ ''subsortDeclSetSymbol.Sort, ''__.Sort, '__[''SubsortDeclSet.Sort, ''SubsortDeclSet.Sort], ''SubsortDeclSet.Sort], 'op-hook[ ''nilQidListSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''QidList.Sort], 'op-hook[''qidListSymbol.Sort, ''__.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort], 'op-hook[''emptyQidSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''QidSet.Sort], 'op-hook[''qidSetSymbol.Sort, ''_;_.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'op-hook[ ''natListSymbol.Sort, ''__.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort], 'op-hook[''unboundedSymbol.Sort, ''unbounded.Sort, 'nil.TypeList, ''Bound.Sort], 'op-hook[''noParentSymbol.Sort, ''none.Sort, 'nil.TypeList, ''Parent.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[ ''sortRenamingSymbol.Sort, ''sort_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''opRenamingSymbol.Sort, ''op_to_`[_`].Qid, '__[ ''Qid.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort], 'op-hook[ ''opRenamingSymbol2.Sort, ''op_:_->_to_`[_`].Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort], 'op-hook[''labelRenamingSymbol.Sort, ''label_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[ ''stratRenamingSymbol.Sort, ''strat_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''stratRenamingSymbol2.Sort, ''strat_:_@_to_.Variable, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''renamingSetSymbol.Sort, ''_`,_.Qid, '__[''RenamingSet.Sort, ''RenamingSet.Sort], ''RenamingSet.Sort], 'op-hook[''sumSymbol.Sort, ''_+_.Sort, '__[ ''ModuleExpression.Sort, ''ModuleExpression.Sort], ''ModuleExpression.Sort], 'op-hook[''renamingSymbol.Sort, ''_*`(_`).Sort, '__[''ModuleExpression.Sort, ''RenamingSet.Sort], ''ModuleExpression.Sort], 'op-hook[''instantiationSymbol.Sort, ''_`{_`}.Sort, '__[''Expression.Sort, ''NeParameterList.Sort], ''Expression.Sort], 'op-hook[ ''termHookSymbol.Sort, ''term-hook.Sort, '__[''Qid.Sort, ''Term.Sort], ''Hook.Sort], 'op-hook[''hookListSymbol.Sort, ''__.Sort, '__[ ''HookList.Sort, ''HookList.Sort], ''HookList.Sort], 'op-hook[ ''idHookSymbol.Sort, ''id-hook.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Hook.Sort], 'op-hook[''opHookSymbol.Sort, ''op-hook.Sort, '__[''Qid.Sort, ''Qid.Sort, ''QidList.Sort, ''Qid.Sort], ''Hook.Sort], 'op-hook[ ''assocSymbol.Sort, ''assoc.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''commSymbol.Sort, ''comm.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''idemSymbol.Sort, ''idem.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''iterSymbol.Sort, ''iter.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''idSymbol.Sort, ''id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''leftIdSymbol.Sort, ''left-id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''rightIdSymbol.Sort, ''right-id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''stratSymbol.Sort, ''strat.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[ ''memoSymbol.Sort, ''memo.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''precSymbol.Sort, ''prec.Sort, ''Nat.Sort, ''Attr.Sort], 'op-hook[ ''gatherSymbol.Sort, ''gather.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[ ''formatSymbol.Sort, ''format.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[ ''latexSymbol.Sort, ''latex.Sort, ''String.Sort, ''Attr.Sort], 'op-hook[ ''ctorSymbol.Sort, ''ctor.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''frozenSymbol.Sort, ''frozen.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[''polySymbol.Sort, ''poly.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[''configSymbol.Sort, ''config.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''objectSymbol.Sort, ''object.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''msgSymbol.Sort, ''msg.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''portalSymbol.Sort, ''portal.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''pconstSymbol.Sort, ''pconst.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''specialSymbol.Sort, ''special.Sort, ''NeHookList.Sort, ''Attr.Sort], 'op-hook[''labelSymbol.Sort, ''label.Sort, ''Qid.Sort, ''Attr.Sort], 'op-hook[''metadataSymbol.Sort, ''metadata.Sort, ''String.Sort, ''Attr.Sort], 'op-hook[''owiseSymbol.Sort, ''owise.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''variantAttrSymbol.Sort, ''variant.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''narrowingSymbol.Sort, ''narrowing.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''nonexecSymbol.Sort, ''nonexec.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''printSymbol.Sort, ''print.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[''emptyAttrSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''AttrSet.Sort], 'op-hook[''attrSetSymbol.Sort, ''__.Sort, '__[ ''AttrSet.Sort, ''AttrSet.Sort], ''AttrSet.Sort], 'op-hook[ ''opDeclSymbol.Sort, ''op_:_->_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''OpDecl.Sort], 'op-hook[ ''opDeclSetSymbol.Sort, ''__.Sort, '__[''OpDeclSet.Sort, ''OpDeclSet.Sort], ''OpDeclSet.Sort], 'op-hook[''emptyOpDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''OpDeclSet.Sort], 'op-hook[''mbSymbol.Sort, ''mb_:_`[_`]..Qid, '__[''Term.Sort, ''Sort.Sort, ''AttrSet.Sort], ''MembAx.Sort], 'op-hook[''cmbSymbol.Sort, ''cmb_:_if_`[_`]..Qid, '__[ ''Term.Sort, ''Sort.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''MembAx.Sort], 'op-hook[''emptyMembAxSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''MembAxSet.Sort], 'op-hook[''membAxSetSymbol.Sort, ''__.Sort, '__[''MembAxSet.Sort, ''MembAxSet.Sort], ''MembAxSet.Sort], 'op-hook[''eqSymbol.Sort, ''eq_=_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Equation.Sort], 'op-hook[''ceqSymbol.Sort, ''ceq_=_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''Equation.Sort], 'op-hook[''emptyEquationSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''EquationSet.Sort], 'op-hook[ ''equationSetSymbol.Sort, ''__.Sort, '__[''EquationSet.Sort, ''EquationSet.Sort], ''EquationSet.Sort], 'op-hook[''rlSymbol.Sort, ''rl_=>_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Rule.Sort], 'op-hook[''crlSymbol.Sort, ''crl_=>_if_`[_`]..Qid, '__[ ''Term.Sort, ''Term.Sort, ''Condition.Sort, ''AttrSet.Sort], ''Rule.Sort], 'op-hook[''emptyRuleSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''RuleSet.Sort], 'op-hook[''ruleSetSymbol.Sort, ''__.Sort, '__[ ''RuleSet.Sort, ''RuleSet.Sort], ''RuleSet.Sort], 'op-hook[ ''stratDeclSymbol.Sort, ''strat_:_@_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''StratDecl.Sort], 'op-hook[ ''emptyStratDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratDeclSet.Sort], 'op-hook[''stratDeclSetSymbol.Sort, ''__.Sort, '__[ ''StratDeclSet.Sort, ''StratDeclSet.Sort], ''StratDeclSet.Sort], 'op-hook[ ''sdSymbol.Sort, ''sd_:=_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''AttrSet.Sort], ''StratDefinition.Sort], 'op-hook[ ''csdSymbol.Sort, ''csd_:=_if_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''StratDefinition.Sort], 'op-hook[''emptyStratDefSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratDefSet.Sort], 'op-hook[ ''stratDefSetSymbol.Sort, ''__.Sort, '__[''StratDefSet.Sort, ''StratDefSet.Sort], ''StratDefSet.Sort], 'op-hook[''fmodSymbol.Sort, ''fmod_is_sorts_.____endfm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FModule.Sort], 'op-hook[''fthSymbol.Sort, ''fth_is_sorts_.____endfth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FTheory.Sort], 'op-hook[''modSymbol.Sort, ''mod_is_sorts_._____endm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''SModule.Sort], 'op-hook[ ''thSymbol.Sort, ''th_is_sorts_._____endth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''STheory.Sort], 'op-hook[''smodSymbol.Sort, ''smod_is_sorts_._______endsm.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratModule.Sort], 'op-hook[ ''sthSymbol.Sort, ''sth_is_sorts_._______endsth.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratTheory.Sort], 'op-hook[ ''sortMappingSymbol.Sort, ''sort_to_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SortMapping.Sort], 'op-hook[''emptySortMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''SortMappingSet.Sort], 'op-hook[ ''sortMappingSetSymbol.Sort, ''__.Sort, '__[''SortMappingSet.Sort, ''SortMappingSet.Sort], ''SortMappingSet.Sort], 'op-hook[ ''opMappingSymbol.Sort, ''op_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''OpMapping.Sort], 'op-hook[''opSpecificMappingSymbol.Sort, ''op_:_->_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''OpMapping.Sort], 'op-hook[''opTermMappingSymbol.Sort, ''op_to`term_..Qid, '__[''Term.Sort, ''Term.Sort], ''OpMapping.Sort], 'op-hook[''emptyOpMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''OpMappingSet.Sort], 'op-hook[''opMappingSetSymbol.Sort, ''__.Sort, '__[ ''OpMappingSet.Sort, ''OpMappingSet.Sort], ''OpMappingSet.Sort], 'op-hook[ ''stratMappingSymbol.Sort, ''strat_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''StratMapping.Sort], 'op-hook[''stratSpecificMappingSymbol.Sort, ''strat_:_@_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''StratMapping.Sort], 'op-hook[''stratExprMappingSymbol.Sort, ''strat_to`expr_..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort], ''StratMapping.Sort], 'op-hook[''emptyStratMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratMappingSet.Sort], 'op-hook[ ''stratMappingSetSymbol.Sort, ''__.Sort, '__[''StratMappingSet.Sort, ''StratMappingSet.Sort], ''StratMappingSet.Sort], 'op-hook[ ''viewSymbol.Sort, ''view_from_to_is___endv.Sort, '__[''Header.Sort, ''ModuleExpression.Sort, ''ModuleExpression.Sort, ''SortMappingSet.Sort, ''OpMappingSet.Sort, ''StratMappingSet.Sort], ''View.Sort], 'op-hook[ ''anyTypeSymbol.Sort, ''anyType.Sort, 'nil.TypeList, ''Type?.Sort], 'op-hook[''unificandPairSymbol.Sort, ''_=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''UnificandPair.Sort], 'op-hook[ ''unificationConjunctionSymbol.Sort, ''_/\_.Sort, '__[ ''UnificationProblem.Sort, ''UnificationProblem.Sort], ''UnificationProblem.Sort], 'op-hook[''patternSubjectPairSymbol.Sort, ''_<=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''PatternSubjectPair.Sort], 'op-hook[''matchingConjunctionSymbol.Sort, ''_/\_.Sort, '__[ ''MatchingProblem.Sort, ''MatchingProblem.Sort], ''MatchingProblem.Sort], 'op-hook[''resultPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort], ''ResultPair.Sort], 'op-hook[''resultTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''ResultTriple.Sort], 'op-hook[''result4TupleSymbol.Sort, ''`{_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Context.Sort], ''Result4Tuple.Sort], 'op-hook[''matchPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Context.Sort], ''MatchPair.Sort], 'op-hook[''unificationTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''UnificationTriple.Sort], 'op-hook[''variantSymbol.Sort, ''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Qid.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort], 'op-hook[ ''narrowingApplyResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingApplyResult.Sort], 'op-hook[ ''narrowingSearchResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchResult.Sort], 'op-hook[ ''traceStepSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Rule.Sort], ''TraceStep.Sort], 'op-hook[''nilTraceSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''Trace.Sort], 'op-hook[''traceSymbol.Sort, ''__.Sort, '__[''Trace.Sort, ''Trace.Sort], ''Trace.Sort], 'op-hook[ ''narrowingStepSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort, ''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''NarrowingStep.Sort], 'op-hook[ ''nilNarrowingTraceSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''NarrowingTrace.Sort], 'op-hook[''narrowingTraceSymbol.Sort, ''__.Sort, '__[''NarrowingTrace.Sort, ''NarrowingTrace.Sort], ''NarrowingTrace.Sort], 'op-hook[''narrowingSearchPathResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''NarrowingTrace.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchPathResult.Sort], 'op-hook[ ''smtResultSymbol.Sort, ''`{_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Term.Sort, ''Nat.Sort], ''SmtResult.Sort], 'op-hook[ ''noParseSymbol.Sort, ''noParse.Sort, ''Nat.Sort, ''ResultPair?.Sort], 'op-hook[''ambiguitySymbol.Sort, ''ambiguity.Sort, '__[''ResultPair.Sort, ''ResultPair.Sort], ''ResultPair?.Sort], 'op-hook[''failure2Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''ResultPair?.Sort], 'op-hook[ ''failure3Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''ResultTriple?.Sort], 'op-hook[''failureIncomplete3Symbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''ResultTriple?.Sort], 'op-hook[ ''failure4Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''Result4Tuple?.Sort], 'op-hook[''noUnifierPairSymbol.Sort, ''noUnifier.Sort, 'nil.TypeList, ''UnificationPair?.Sort], 'op-hook[ ''noUnifierTripleSymbol.Sort, ''noUnifier.Sort, 'nil.TypeList, ''UnificationTriple?.Sort], 'op-hook[''noUnifierIncompletePairSymbol.Sort, ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationPair?.Sort], 'op-hook[''noUnifierIncompleteTripleSymbol.Sort, ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationTriple?.Sort], 'op-hook[''noVariantSymbol.Sort, ''noVariant.Sort, 'nil.TypeList, ''Variant?.Sort], 'op-hook[''noVariantIncompleteSymbol.Sort, ''noVariantIncomplete.Sort, 'nil.TypeList, ''Variant?.Sort], 'op-hook[ ''narrowingApplyFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort], 'op-hook[ ''narrowingApplyFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort], 'op-hook[ ''narrowingSearchFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort], 'op-hook[ ''narrowingSearchFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort], 'op-hook[ ''narrowingSearchPathFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort], 'op-hook[ ''narrowingSearchPathFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort], 'op-hook[''noMatchSubstSymbol.Sort, ''noMatch.Sort, 'nil.TypeList, ''Substitution?.Sort], 'op-hook[ ''noMatchIncompleteSubstSymbol.Sort, ''noMatchIncomplete.Sort, 'nil.TypeList, ''Substitution?.Sort], 'op-hook[''noMatchPairSymbol.Sort, ''noMatch.Sort, 'nil.TypeList, ''MatchPair?.Sort], 'op-hook[ ''failureTraceSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''Trace?.Sort], 'op-hook[''smtFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''SmtResult?.Sort], 'op-hook[''noStratParseSymbol.Sort, ''noStratParse.Sort, ''Nat.Sort, ''Strategy?.Sort], 'op-hook[ ''stratAmbiguitySymbol.Sort, ''ambiguity.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy?.Sort], 'op-hook[''mixfixSymbol.Sort, ''mixfix.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''withParensSymbol.Sort, ''with-parens.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''withSortsSymbol.Sort, ''with-sorts.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''flatSymbol.Sort, ''flat.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''formatPrintOptionSymbol.Sort, ''format.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''numberSymbol.Sort, ''number.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''ratSymbol.Sort, ''rat.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''emptyPrintOptionSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''PrintOptionSet.Sort], 'op-hook[''printOptionSetSymbol.Sort, ''__.Sort, '__[''PrintOptionSet.Sort, ''PrintOptionSet.Sort], ''PrintOptionSet.Sort], 'op-hook[''delaySymbol.Sort, ''delay.Sort, 'nil.TypeList, ''VariantOption.Sort], 'op-hook[''filterSymbol.Sort, ''filter.Sort, 'nil.TypeList, ''VariantOption.Sort], 'op-hook[ ''emptyVariantOptionSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''VariantOptionSet.Sort], 'op-hook[''variantOptionSetSymbol.Sort, ''__.Sort, '__[''VariantOptionSet.Sort, ''VariantOptionSet.Sort], ''VariantOptionSet.Sort], 'op-hook[''breadthFirstSymbol.Sort, ''breadthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort], 'op-hook[ ''depthFirstSymbol.Sort, ''depthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort], 'op-hook[''legacyUnificationPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Nat.Sort], ''UnificationPair.Sort], 'op-hook[''legacyUnificationTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Nat.Sort], ''UnificationTriple.Sort], 'op-hook[ ''legacyVariantSymbol.Sort, ''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Nat.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]], 'op_:_->_`[_`].[ ''metaRewrite.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaRewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSearch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSearch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSearchPath.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Trace?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSearchPath.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSmtSearch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[SmtResult?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSmtSearch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSrewrite.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[StrategyList`,Strategy?`].Kind, ''`[SrewriteOption`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSrewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''legacyMetaVariantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaVariantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantMatch.Sort, '__[''`[Module`].Kind, ''`[MatchingProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Substitution?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaVariantMatch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaVariantUnify.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaVariantUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaVariantUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaXapply.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Substitution?`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Result4Tuple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaXapply.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaXmatch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaXmatch.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metadata.Sort, ''String.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''min.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''min.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''min.Sort, '__[''NzNat.Sort, ''NzNat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''min.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[ ''minimalSorts.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMinimalSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''mixfix.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''modExp.Sort, '__[ ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[FindResult`,NatList`,Bound`,Parent`].Kind, 'special['__['id-hook[ ''NumberOpSymbol.Sort, ''modExp.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[ ''mod_is_sorts_._____endm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''SModule.Sort, '__['ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''msg.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''narrowing.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''EqCondition.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''HookList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''ImportList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''NarrowingTrace.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''NatList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''ParameterDeclList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''QidList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''Trace.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''TypeList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noMatch.Sort, 'nil.TypeList, ''MatchPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noMatch.Sort, 'nil.TypeList, ''Substitution?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noMatchIncomplete.Sort, 'nil.TypeList, ''Substitution?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noParse.Sort, ''Nat.Sort, ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noStratParse.Sort, ''Nat.Sort, ''Strategy?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifier.Sort, 'nil.TypeList, ''UnificationPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifier.Sort, 'nil.TypeList, ''UnificationTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noVariant.Sort, 'nil.TypeList, ''Variant?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noVariantIncomplete.Sort, 'nil.TypeList, ''Variant?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''AttrSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''EmptyQidSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''EquationSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''MembAxSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''OpDeclSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''OpMappingSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''none.Sort, 'nil.TypeList, ''Parent.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''none.Sort, 'nil.TypeList, ''PrintOptionSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''QidSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''RuleSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''SortMappingSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''StratDeclSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''StratDefSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''none.Sort, 'nil.TypeList, ''StratMappingSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''SubsortDeclSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''Substitution.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''VariantOptionSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''nonexec.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''not.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''notFound.Sort, 'nil.TypeList, ''FindResult.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''not_.Sort, ''Bool.Sort, ''Bool.Sort, 'prec['s_^53[ '0.Zero]]], 'op_:_->_`[_`].[''number.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''object.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''occurs.Sort, '__[''Nat.Sort, ''NatList.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''occurs.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''one.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''op-hook.Sort, '__[ ''Qid.Sort, ''Qid.Sort, ''QidList.Sort, ''Qid.Sort], ''Hook.Sort, '__[ 'ctor.Attr, 'format['__[''nssss.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''op_:_->_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''OpDecl.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''op_:_->_to_..Qid, '__[ ''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''OpMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''op_:_->_to_`[_`].Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''op_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''OpMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''op_to_`[_`].Qid, '__[ ''Qid.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''op_to`term_..Qid, '__[ ''Term.Sort, ''Term.Sort], ''OpMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''owise.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''pconst.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''poly.Sort, ''NeNatList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''portal.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''prec.Sort, ''Nat.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''print.Sort, ''QidList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''protecting_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''qid.Sort, ''`[String`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''QuotedIdentifierOpSymbol.Sort, ''qid.Sort], 'op-hook[''quotedIdentifierSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[''rat.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''reverse.Sort, ''NatList.Sort, ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''reverse.Sort, ''NeNatList.Sort, ''NeNatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''reverse.Sort, ''NeQidList.Sort, ''NeQidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''reverse.Sort, ''QidList.Sort, ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''rfind.Sort, '__[ ''String.Sort, ''String.Sort, ''Nat.Sort], ''FindResult.Sort, 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''rfind.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''notFoundTerm.Sort, ''notFound.FindResult.Constant]]]], 'op_:_->_`[_`].[''right-id.Sort, ''Term.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''rl_=>_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Rule.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''s_.Sort, ''Nat.Sort, ''NzNat.Sort, '__[ 'iter.Attr, 'ctor.Attr, 'special['__['id-hook[''SuccSymbol.Sort, 'nil.TypeList], 'term-hook[''zeroTerm.Sort, ''0.Zero.Constant]]]]], 'op_:_->_`[_`].[''sameKind.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaSameKind.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''sd.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['comm.Attr, 'special['__['id-hook[ ''CUI_NumberOpSymbol.Sort, ''sd.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[ ''sd_:=_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''AttrSet.Sort], ''StratDefinition.Sort, '__['ctor.Attr, 'format['__[ ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''size.Sort, ''NatList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''size.Sort, ''NeNatList.Sort, ''NzNat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''size.Sort, ''NeQidList.Sort, ''NzNat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''size.Sort, ''QidList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''smod_is_sorts_._______endsm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratModule.Sort, '__['ctor.Attr, 'gather['__[ ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''sortLeq.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaSortLeq.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''sort_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''sort_to_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SortMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''special.Sort, ''NeHookList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''sth_is_sorts_._______endsth.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratTheory.Sort, '__[ 'ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''strat.Sort, ''NeNatList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_:_@_`[_`]..Qid, '__[ ''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''StratDecl.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''strat_:_@_to_.Variable, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_:_@_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''StratMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_to_..Qid, '__[ ''Qid.Sort, ''Qid.Sort], ''StratMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''strat_to`expr_..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort], ''StratMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''string.Sort, ''Qid.Sort, ''String.Sort, 'special['__['id-hook[ ''QuotedIdentifierOpSymbol.Sort, ''string.Sort], 'op-hook[ ''quotedIdentifierSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[''subsort_<_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SubsortDecl.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''substr.Sort, '__[''String.Sort, ''Nat.Sort, ''Nat.Sort], ''String.Sort, 'special['__['id-hook[''StringOpSymbol.Sort, ''substr.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[''tail.Sort, ''NeNatList.Sort, ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''tail.Sort, ''NeQidList.Sort, ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''term-hook.Sort, '__[ ''Qid.Sort, ''Term.Sort], ''Hook.Sort, '__['ctor.Attr, 'format['__[ ''nssss.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''test.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''th_is_sorts_._____endth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''STheory.Sort, '__['ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''top.Sort, ''RuleApplication.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''true.Sort, 'nil.TypeList, ''Bool.Sort, '__[ 'ctor.Attr, 'special['id-hook[''SystemTrue.Sort, 'nil.TypeList]]]], 'op_:_->_`[_`].[''try.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''unbounded.Sort, 'nil.TypeList, ''Bound.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''union.Sort, '__[''NeQidSet.Sort, ''QidSet.Sort], ''NeQidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''union.Sort, '__[ ''QidSet.Sort, ''NeQidSet.Sort], ''NeQidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''union.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''upEqs.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[EquationSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpEqs.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upImports.Sort, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ImportList`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpImports.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upMbs.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[MembAxSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpMbs.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upModule.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[Module`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpModule.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upOpDecls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[OpDeclSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpOpDecls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upRls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[RuleSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpRls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSds.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[StratDefSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpSds.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSorts.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upStratDecls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[StratDeclSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpStratDecls.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''upSubsortDecls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[SubsortDeclSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpSubsortDecls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upTerm.Sort, ''Universal.Sort, ''Term.Sort, '__['poly[ 's_['0.Zero]], 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]]], 'op_:_->_`[_`].[''upView.Sort, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[View`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpView.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''upperCase.Sort, ''String.Sort, ''String.Sort, 'special['__['id-hook[ ''StringOpSymbol.Sort, ''upperCase.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[ ''variant.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''view_from_to_is___endv.Sort, '__[''Header.Sort, ''ModuleExpression.Sort, ''ModuleExpression.Sort, ''SortMappingSet.Sort, ''OpMappingSet.Sort, ''StratMappingSet.Sort], ''View.Sort, '__['ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''n++i.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''wellFormed.Sort, ''Module.Sort, ''Bool.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaWellFormedModule.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''wellFormed.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaWellFormedTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''wellFormed.Sort, '__[''`[Module`].Kind, ''`[Substitution?`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaWellFormedSubstitution.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''with-parens.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''with-sorts.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''xmatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''xmatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''|_|.Sort, ''NeQidSet.Sort, ''NzNat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''|_|.Sort, ''QidSet.Sort, ''Nat.Sort, 'none.AttrSet]], 'none.MembAxSet, '__['eq_=_`[_`].['_`[_`][ ''$applySubstitution.Sort, '_`,_[''Q:Qid.Variable, ''S:Substitution.Variable]], ''Q:Qid.Variable, 'owise.Attr], 'eq_=_`[_`].[ '_`[_`][''$applySubstitution.Sort, '_`,_[''V:Variable.Variable, '_`[_`][ ''_;_.Sort, '_`,_[''S:Substitution.Variable, '_`[_`][''_<-_.Sort, '_`,_[ ''V:Variable.Variable, ''T:Term.Variable]]]]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$applySubstitution.Sort, '_`,_[ '_`[_`][''_`,_.Qid, '_`,_[''T:Term.Variable, ''TL:NeTermList.Variable]], ''S:Substitution.Variable]], '_`[_`][''_`,_.Qid, '_`,_['_`[_`][ ''$applySubstitution.Sort, '_`,_[''T:Term.Variable, ''S:Substitution.Variable]], '_`[_`][''$applySubstitution.Sort, '_`,_[ ''TL:NeTermList.Variable, ''S:Substitution.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$applySubstitution.Sort, '_`,_['_`[_`][''_`[_`].Qid, '_`,_[''Q:Qid.Variable, ''TL:NeTermList.Variable]], ''S:Substitution.Variable]], '_`[_`][''_`[_`].Qid, '_`,_[''Q:Qid.Variable, '_`[_`][''$applySubstitution.Sort, '_`,_[''TL:NeTermList.Variable, ''S:Substitution.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$card.Sort, '_`,_[''none.EmptyQidSet.Constant, ''C:Nat.Variable]], ''C:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$card.Sort, '_`,_[ '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''C:Nat.Variable]], '_`[_`][''$card.Sort, '_`,_[''S:QidSet.Variable, '_`[_`][''_+_.Sort, '_`,_[''C:Nat.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]]]]], 'owise.Attr], 'eq_=_`[_`].['_`[_`][''$card.Sort, '_`,_['_`[_`][''_;_.Sort, '_`,_[''N:NeQidSet.Variable, ''N:NeQidSet.Variable, ''S:QidSet.Variable]], ''C:Nat.Variable]], '_`[_`][ ''$card.Sort, '_`,_['_`[_`][''_;_.Sort, '_`,_[''N:NeQidSet.Variable, ''S:QidSet.Variable]], ''C:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''$diff.Sort, '_`,_[''none.EmptyQidSet.Constant, ''S':QidSet.Variable, ''A:QidSet.Variable]], ''A:QidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$diff.Sort, '_`,_['_`[_`][ ''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''S':QidSet.Variable, ''A:QidSet.Variable]], '_`[_`][''$diff.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable, '_`[_`][''if_then_else_fi.Sort, '_`,_['_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, ''S':QidSet.Variable]], ''A:QidSet.Variable, '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''A:QidSet.Variable]]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$intersect.Sort, '_`,_[''none.EmptyQidSet.Constant, ''S':QidSet.Variable, ''A:QidSet.Variable]], ''A:QidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''$intersect.Sort, '_`,_['_`[_`][''_;_.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]], ''S':QidSet.Variable, ''A:QidSet.Variable]], '_`[_`][''$intersect.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable, '_`[_`][''if_then_else_fi.Sort, '_`,_['_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, ''S':QidSet.Variable]], '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''A:QidSet.Variable]], ''A:QidSet.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$reverse.Sort, '_`,_[''nil.NatList.Constant, ''A:NatList.Variable]], ''A:NatList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$reverse.Sort, '_`,_[''nil.TypeList.Constant, ''A:QidList.Variable]], ''A:QidList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$reverse.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]], ''A:NatList.Variable]], '_`[_`][''$reverse.Sort, '_`,_[ ''L:NatList.Variable, '_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''A:NatList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$reverse.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''L:QidList.Variable]], ''A:QidList.Variable]], '_`[_`][''$reverse.Sort, '_`,_[''L:QidList.Variable, '_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''A:QidList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$size.Sort, '_`,_[''nil.NatList.Constant, ''C:Nat.Variable]], ''C:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$size.Sort, '_`,_[ ''nil.TypeList.Constant, ''C:Nat.Variable]], ''C:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$size.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]], ''C:Nat.Variable]], '_`[_`][''$size.Sort, '_`,_[''L:NatList.Variable, '_`[_`][''_+_.Sort, '_`,_[''C:Nat.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$size.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''L:QidList.Variable]], ''C:Nat.Variable]], '_`[_`][''$size.Sort, '_`,_[''L:QidList.Variable, '_`[_`][''_+_.Sort, '_`,_[''C:Nat.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_;_.Sort, '_`,_[ ''A:Assignment.Variable, ''A:Assignment.Variable]], ''A:Assignment.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_;_.Sort, '_`,_[''N:NeQidSet.Variable, ''N:NeQidSet.Variable]], ''N:NeQidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_;_.Sort, '_`,_[''T:TypeList.Variable, ''T:TypeList.Variable]], ''T:TypeList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_\_.Sort, '_`,_[''S:QidSet.Variable, ''N:NeQidSet.Variable]], '_`[_`][''$diff.Sort, '_`,_[''S:QidSet.Variable, ''N:NeQidSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''_\_.Sort, '_`,_[''S:QidSet.Variable, ''none.EmptyQidSet.Constant]], ''S:QidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''A:Attr.Variable, ''A:Attr.Variable]], ''A:Attr.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''D:StratDefinition.Variable, ''D:StratDefinition.Variable]], ''D:StratDefinition.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''E:Equation.Variable, ''E:Equation.Variable]], ''E:Equation.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''M:MembAx.Variable, ''M:MembAx.Variable]], ''M:MembAx.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''__.Sort, '_`,_[''O:OpDecl.Variable, ''O:OpDecl.Variable]], ''O:OpDecl.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''O:OpMapping.Variable, ''O:OpMapping.Variable]], ''O:OpMapping.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''O:StratDecl.Variable, ''O:StratDecl.Variable]], ''O:StratDecl.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''R:Rule.Variable, ''R:Rule.Variable]], ''R:Rule.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''__.Sort, '_`,_[''S:SortMapping.Variable, ''S:SortMapping.Variable]], ''S:SortMapping.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''S:StratMapping.Variable, ''S:StratMapping.Variable]], ''S:StratMapping.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''S:SubsortDecl.Variable, ''S:SubsortDecl.Variable]], ''S:SubsortDecl.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_`,_.Qid, '_`,_[''U:UsingPair.Variable, ''U:UsingPair.Variable]], ''U:UsingPair.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and-then_.Sort, '_`,_[''false.Bool.Constant, ''B:`[Bool`].Variable]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and-then_.Sort, '_`,_[''true.Bool.Constant, ''B:`[Bool`].Variable]], ''B:`[Bool`].Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''A:Bool.Variable]], ''A:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, '_`[_`][''_xor_.Sort, '_`,_[ ''B:Bool.Variable, ''C:Bool.Variable]]]], '_`[_`][''_xor_.Sort, '_`,_[ '_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''C:Bool.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and_.Sort, '_`,_[ ''false.Bool.Constant, ''A:Bool.Variable]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and_.Sort, '_`,_[ ''true.Bool.Constant, ''A:Bool.Variable]], ''A:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_implies_.Sort, '_`,_[ ''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''not_.Sort, '_`[_`][ ''_xor_.Sort, '_`,_[''A:Bool.Variable, '_`[_`][''_and_.Sort, '_`,_[ ''A:Bool.Variable, ''B:Bool.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''false.Bool.Constant, 'owise.Attr], 'eq_=_`[_`].['_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]]]], ''true.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_or-else_.Sort, '_`,_[''false.Bool.Constant, ''B:`[Bool`].Variable]], ''B:`[Bool`].Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_or-else_.Sort, '_`,_[''true.Bool.Constant, ''B:`[Bool`].Variable]], ''true.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_or_.Sort, '_`,_[''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''_xor_.Sort, '_`,_['_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''_xor_.Sort, '_`,_[ ''A:Bool.Variable, ''B:Bool.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_psubset_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]], '_`[_`][''_and-then_.Sort, '_`,_['_`[_`][ ''_=/=_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]], '_`[_`][ ''_subset_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_subset_.Sort, '_`,_[ ''none.EmptyQidSet.Constant, ''S':QidSet.Variable]], ''true.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_subset_.Sort, '_`,_['_`[_`][ ''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''S':QidSet.Variable]], '_`[_`][''_and-then_.Sort, '_`,_['_`[_`][ ''_in_.Sort, '_`,_[''E:Qid.Variable, ''S':QidSet.Variable]], '_`[_`][ ''_subset_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_xor_.Sort, '_`,_[''A:Bool.Variable, ''A:Bool.Variable]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_xor_.Sort, '_`,_[''false.Bool.Constant, ''A:Bool.Variable]], ''A:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''`[_`].Kind, ''Q:Qid.Variable], '_`[_`][''sth_is_sorts_._______endsth.Constant, '_`,_[ ''Q:Qid.Variable, '_`[_`][''including_..Qid, ''Q:Qid.Variable], ''none.EmptyQidSet.Constant, ''none.SubsortDeclSet.Constant, ''none.OpDeclSet.Constant, ''none.MembAxSet.Constant, ''none.EquationSet.Constant, ''none.RuleSet.Constant, ''none.StratDeclSet.Constant, ''none.StratDefSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''append.Sort, '_`,_[ ''A:NatList.Variable, ''L:NatList.Variable]], '_`[_`][''__.Sort, '_`,_[ ''A:NatList.Variable, ''L:NatList.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''append.Sort, '_`,_[''A:QidList.Variable, ''L:QidList.Variable]], '_`[_`][''__.Sort, '_`,_[''A:QidList.Variable, ''L:QidList.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''applySubstitution.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''S:Substitution.Variable]], '_`[_`][''getTerm.Sort, '_`[_`][''metaNormalize.Sort, '_`,_[ ''M:Module.Variable, '_`[_`][''$applySubstitution.Sort, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''delete.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''S:QidSet.Variable, 'owise.Attr], 'eq_=_`[_`].[ '_`[_`][''delete.Sort, '_`,_[''E:Qid.Variable, '_`[_`][''_;_.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]]]], '_`[_`][''delete.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''front.Sort, '_`[_`][''__.Sort, '_`,_[''L:NatList.Variable, ''E:Nat.Variable]]], ''L:NatList.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''front.Sort, '_`[_`][''__.Sort, '_`,_[''L:QidList.Variable, ''E:Qid.Variable]]], ''L:QidList.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getAccumulatedSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''A:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getAccumulatedSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''A:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getContext.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''S:Substitution.Variable, ''C:Context.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getEqs.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getEqs.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getFrom.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''ME:ModuleExpression.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getImports.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getImports.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getImports.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getImports.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getImports.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getImports.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialTerm.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialType.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getLabel.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''L:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getLabel.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''L:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getLhsSubstitution.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''LS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getMbs.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getMbs.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMoreVariantsInLayerFlag.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''B:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getName.Sort, ''C:Constant.Variable], '_`[_`][''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], ''0.Zero.Constant, '_`[_`][''rfind.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], ''".".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''C:Constant.Variable]]]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, ''V:Variable.Variable], '_`[_`][ ''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''V:Variable.Variable], ''0.Zero.Constant, '_`[_`][''rfind.Sort, '_`,_[ '_`[_`][''string.Sort, ''V:Variable.Variable], ''":".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''V:Variable.Variable]]]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_['_`[_`][''_`{_`}.Sort, '_`,_[ ''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''fth_is_sorts_.____endfth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''mod_is_sorts_._____endm.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getName.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ '_`[_`][''_`{_`}.Sort, '_`,_[''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_['_`[_`][''_`{_`}.Sort, '_`,_[ ''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getName.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[ ''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_['_`[_`][''_`{_`}.Sort, '_`,_[ ''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOpMappings.Sort, '_`[_`][ ''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''OMS:OpMappingSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getOps.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getOps.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getParent.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''P:Parent.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRhsSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''RS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRls.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.RuleSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRls.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.RuleSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRls.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRls.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRls.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRls.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRule.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''R:Rule.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRuleSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''RS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSds.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSds.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDFS:StratDefSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDFS:StratDefSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSortMappings.Sort, '_`[_`][ ''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''SMS:SortMappingSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSorts.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSorts.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStateVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''SV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getStratMappings.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''TMS:StratMappingSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStrats.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStrats.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStrats.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStrats.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDS:StratDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStrats.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDS:StratDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStrats.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubsorts.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubsorts.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[ ''S:Substitution.Variable, ''C:Context.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[ ''S:Substitution.Variable, ''V:Qid.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getTermSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''TS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTo.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''ME':ModuleExpression.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getTrace.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:NarrowingTrace.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, ''C:Constant.Variable], '_`[_`][ ''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], '_`[_`][''_+_.Sort, '_`,_['_`[_`][''s_.Sort, ''0.Zero.Constant], '_`[_`][''rfind.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], ''".".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''C:Constant.Variable]]]]]], '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''C:Constant.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, ''V:Variable.Variable], '_`[_`][ ''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''V:Variable.Variable], '_`[_`][''_+_.Sort, '_`,_['_`[_`][''s_.Sort, ''0.Zero.Constant], '_`[_`][''rfind.Sort, '_`,_['_`[_`][''string.Sort, ''V:Variable.Variable], ''":".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''V:Variable.Variable]]]]]], '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''V:Variable.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getUnifierVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifierVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifierVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getVariableFamily.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''S:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''head.Sort, '_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]]], ''E:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''head.Sort, '_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''L:QidList.Variable]]], ''E:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''insert.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], '_`[_`][''_;_.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''intersection.Sort, '_`,_[''S:QidSet.Variable, ''N:NeQidSet.Variable]], '_`[_`][''$intersect.Sort, '_`,_[ ''S:QidSet.Variable, ''N:NeQidSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''intersection.Sort, '_`,_[ ''S:QidSet.Variable, ''none.EmptyQidSet.Constant]], ''none.EmptyQidSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''last.Sort, '_`[_`][''__.Sort, '_`,_[''L:NatList.Variable, ''E:Nat.Variable]]], ''E:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''last.Sort, '_`[_`][''__.Sort, '_`,_[''L:QidList.Variable, ''E:Qid.Variable]]], ''E:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''metaNarrowingApply.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaNarrowingApply.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaNarrowingSearch.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaNarrowingSearch.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaNarrowingSearchPath.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''N:Nat.Variable]], '_`[_`][ ''metaNarrowingSearchPath.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaParse.Sort, '_`,_[''M:Module.Variable, ''Q:QidList.Variable, ''T:Type?.Variable]], '_`[_`][''metaParse.Sort, '_`,_[''M:Module.Variable, ''none.EmptyQidSet.Constant, ''Q:QidList.Variable, ''T:Type?.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''none.EmptyQidSet.Constant, ''T:Term.Variable, '_`[_`][''__.Sort, '_`,_[''mixfix.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[''flat.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[ ''format.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[ ''number.PrintOption.Constant, ''rat.PrintOption.Constant]]]]]]]], ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''none.EmptyQidSet.Constant, ''T:Term.Variable, ''P:PrintOptionSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''VS:VariableSet.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''VS:VariableSet.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaVariantDisjointUnify.Sort, '_`,_[ ''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][ ''metaVariantDisjointUnify.Sort, '_`,_[''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaVariantUnify.Sort, '_`,_[''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaVariantUnify.Sort, '_`,_[ ''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''not_.Sort, ''A:Bool.Variable], '_`[_`][''_xor_.Sort, '_`,_[''true.Bool.Constant, ''A:Bool.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Nat.Variable, ''nil.NatList.Constant]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Nat.Variable, '_`[_`][''__.Sort, '_`,_[''E':Nat.Variable, ''L:NatList.Variable]]]], '_`[_`][''if_then_else_fi.Sort, '_`,_['_`[_`][''_==_.Sort, '_`,_[ ''E:Nat.Variable, ''E':Nat.Variable]], ''true.Bool.Constant, '_`[_`][ ''occurs.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Qid.Variable, ''nil.TypeList.Constant]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Qid.Variable, '_`[_`][ ''__.Sort, '_`,_[''E':Qid.Variable, ''L:QidList.Variable]]]], '_`[_`][ ''if_then_else_fi.Sort, '_`,_['_`[_`][''_==_.Sort, '_`,_[''E:Qid.Variable, ''E':Qid.Variable]], ''true.Bool.Constant, '_`[_`][''occurs.Sort, '_`,_[ ''E:Qid.Variable, ''L:QidList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''reverse.Sort, ''L:NatList.Variable], '_`[_`][''$reverse.Sort, '_`,_[''L:NatList.Variable, ''nil.NatList.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''reverse.Sort, ''L:QidList.Variable], '_`[_`][ ''$reverse.Sort, '_`,_[''L:QidList.Variable, ''nil.TypeList.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''size.Sort, ''L:NatList.Variable], '_`[_`][''$size.Sort, '_`,_[''L:NatList.Variable, ''0.Zero.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''size.Sort, ''L:QidList.Variable], '_`[_`][''$size.Sort, '_`,_[''L:QidList.Variable, ''0.Zero.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''tail.Sort, '_`[_`][''__.Sort, '_`,_[ ''E:Nat.Variable, ''L:NatList.Variable]]], ''L:NatList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''tail.Sort, '_`[_`][''__.Sort, '_`,_[ ''E:Qid.Variable, ''L:QidList.Variable]]], ''L:QidList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''union.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable]], '_`[_`][''_;_.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''|_|.Sort, ''S:QidSet.Variable], '_`[_`][''$card.Sort, '_`,_[ ''S:QidSet.Variable, ''0.Zero.Constant]], 'none.AttrSet]]] ========================================== reduce in META-LEVEL : {upTerm(upModule('META-LEVEL, true)), 'FModule} . rewrites: 3 result ResultPair: {'fmod_is_sorts_.____endfm[''META-LEVEL.Sort, 'nil.ImportList, '_;_[''Assignment.Sort, ''Attr.Sort, ''AttrSet.Sort, ''Bool.Sort, ''Bound.Sort, ''CallStrategy.Sort, ''Char.Sort, ''Condition.Sort, ''Constant.Sort, ''Context.Sort, ''EmptyCommaList.Sort, ''EmptyQidSet.Sort, ''EqCondition.Sort, ''Equation.Sort, ''EquationSet.Sort, ''Expression.Sort, ''FModule.Sort, ''FTheory.Sort, ''FindResult.Sort, ''GTermList.Sort, ''GroundTerm.Sort, ''GroundTermList.Sort, ''Header.Sort, ''Hook.Sort, ''HookList.Sort, ''Import.Sort, ''ImportList.Sort, ''Kind.Sort, ''KindSet.Sort, ''MatchOrUnificationPair.Sort, ''MatchPair.Sort, ''MatchPair?.Sort, ''MatchingProblem.Sort, ''MembAx.Sort, ''MembAxSet.Sort, ''Module.Sort, ''ModuleExpression.Sort, ''NarrowingApplyResult.Sort, ''NarrowingApplyResult?.Sort, ''NarrowingSearchPathResult.Sort, ''NarrowingSearchPathResult?.Sort, ''NarrowingSearchResult.Sort, ''NarrowingSearchResult?.Sort, ''NarrowingStep.Sort, ''NarrowingTrace.Sort, ''Nat.Sort, ''NatList.Sort, ''NeCTermList.Sort, ''NeGroundTermList.Sort, ''NeHookList.Sort, ''NeKindSet.Sort, ''NeNatList.Sort, ''NeParameterDeclList.Sort, ''NeParameterList.Sort, ''NeQidList.Sort, ''NeQidSet.Sort, ''NeSortSet.Sort, ''NeTermList.Sort, ''NeTypeList.Sort, ''NeTypeSet.Sort, ''NeVariableSet.Sort, ''NzNat.Sort, ''OpDecl.Sort, ''OpDeclSet.Sort, ''OpMapping.Sort, ''OpMappingSet.Sort, ''ParameterDecl.Sort, ''ParameterDeclList.Sort, ''ParameterList.Sort, ''Parent.Sort, ''PatternSubjectPair.Sort, ''PrintOption.Sort, ''PrintOptionSet.Sort, ''Qid.Sort, ''QidList.Sort, ''QidSet.Sort, ''Renaming.Sort, ''RenamingSet.Sort, ''Result4Tuple.Sort, ''Result4Tuple?.Sort, ''ResultPair.Sort, ''ResultPair?.Sort, ''ResultTriple.Sort, ''ResultTriple?.Sort, ''Rule.Sort, ''RuleApplication.Sort, ''RuleSet.Sort, ''SModule.Sort, ''STheory.Sort, ''SmtResult.Sort, ''SmtResult?.Sort, ''Sort.Sort, ''SortMapping.Sort, ''SortMappingSet.Sort, ''SortSet.Sort, ''SrewriteOption.Sort, ''StratDecl.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort, ''StratDefinition.Sort, ''StratMapping.Sort, ''StratMappingSet.Sort, ''StratModule.Sort, ''StratTheory.Sort, ''Strategy.Sort, ''Strategy?.Sort, ''StrategyList.Sort, ''String.Sort, ''SubsortDecl.Sort, ''SubsortDeclSet.Sort, ''Substitution.Sort, ''Substitution?.Sort, ''Term.Sort, ''TermList.Sort, ''TermQid.Sort, ''Trace.Sort, ''Trace?.Sort, ''TraceStep.Sort, ''Type.Sort, ''Type?.Sort, ''TypeList.Sort, ''TypeListSet.Sort, ''TypeSet.Sort, ''UnificandPair.Sort, ''UnificationPair.Sort, ''UnificationPair?.Sort, ''UnificationProblem.Sort, ''UnificationTriple.Sort, ''UnificationTriple?.Sort, ''UsingPair.Sort, ''UsingPairSet.Sort, ''Variable.Sort, ''VariableSet.Sort, ''Variant.Sort, ''Variant?.Sort, ''VariantOption.Sort, ''VariantOptionSet.Sort, ''View.Sort, ''ViewExpression.Sort, ''Zero.Sort], '__['subsort_<_.[ ''Assignment.Sort, ''Substitution.Sort], 'subsort_<_.[''Attr.Sort, ''AttrSet.Sort], 'subsort_<_.[''CallStrategy.Sort, ''Strategy.Sort], 'subsort_<_.[''Char.Sort, ''String.Sort], 'subsort_<_.[''Constant.Sort, ''GroundTerm.Sort], 'subsort_<_.[''Constant.Sort, ''TermQid.Sort], 'subsort_<_.[''Context.Sort, ''NeCTermList.Sort], 'subsort_<_.[ ''EmptyCommaList.Sort, ''GroundTermList.Sort], 'subsort_<_.[ ''EmptyCommaList.Sort, ''ParameterList.Sort], 'subsort_<_.[ ''EmptyQidSet.Sort, ''KindSet.Sort], 'subsort_<_.[''EmptyQidSet.Sort, ''SortSet.Sort], 'subsort_<_.[''EmptyQidSet.Sort, ''VariableSet.Sort], 'subsort_<_.[''EqCondition.Sort, ''Condition.Sort], 'subsort_<_.[ ''Equation.Sort, ''EquationSet.Sort], 'subsort_<_.[''Expression.Sort, ''ModuleExpression.Sort], 'subsort_<_.[''Expression.Sort, ''ViewExpression.Sort], 'subsort_<_.[''FModule.Sort, ''SModule.Sort], 'subsort_<_.[''FTheory.Sort, ''STheory.Sort], 'subsort_<_.[ ''GroundTerm.Sort, ''NeGroundTermList.Sort], 'subsort_<_.[ ''GroundTerm.Sort, ''Term.Sort], 'subsort_<_.[''GroundTermList.Sort, ''TermList.Sort], 'subsort_<_.[''Hook.Sort, ''NeHookList.Sort], 'subsort_<_.[''Import.Sort, ''ImportList.Sort], 'subsort_<_.[''Kind.Sort, ''NeKindSet.Sort], 'subsort_<_.[''Kind.Sort, ''Type.Sort], 'subsort_<_.[ ''KindSet.Sort, ''TypeSet.Sort], 'subsort_<_.[''MatchPair.Sort, ''MatchOrUnificationPair.Sort], 'subsort_<_.[''MatchPair.Sort, ''MatchPair?.Sort], 'subsort_<_.[''MembAx.Sort, ''MembAxSet.Sort], 'subsort_<_.[''NarrowingApplyResult.Sort, ''NarrowingApplyResult?.Sort], 'subsort_<_.[''NarrowingSearchPathResult.Sort, ''NarrowingSearchPathResult?.Sort], 'subsort_<_.[ ''NarrowingSearchResult.Sort, ''NarrowingSearchResult?.Sort], 'subsort_<_.[ ''NarrowingStep.Sort, ''NarrowingTrace.Sort], 'subsort_<_.[''Nat.Sort, ''Bound.Sort], 'subsort_<_.[''Nat.Sort, ''FindResult.Sort], 'subsort_<_.[ ''Nat.Sort, ''NeNatList.Sort], 'subsort_<_.[''Nat.Sort, ''Parent.Sort], 'subsort_<_.[''NeCTermList.Sort, ''GTermList.Sort], 'subsort_<_.[ ''NeGroundTermList.Sort, ''GroundTermList.Sort], 'subsort_<_.[ ''NeGroundTermList.Sort, ''NeTermList.Sort], 'subsort_<_.[ ''NeHookList.Sort, ''HookList.Sort], 'subsort_<_.[''NeKindSet.Sort, ''KindSet.Sort], 'subsort_<_.[''NeKindSet.Sort, ''NeTypeSet.Sort], 'subsort_<_.[''NeNatList.Sort, ''NatList.Sort], 'subsort_<_.[ ''NeParameterDeclList.Sort, ''ParameterDeclList.Sort], 'subsort_<_.[ ''NeParameterList.Sort, ''ParameterList.Sort], 'subsort_<_.[ ''NeQidList.Sort, ''QidList.Sort], 'subsort_<_.[''NeQidSet.Sort, ''QidSet.Sort], 'subsort_<_.[''NeSortSet.Sort, ''NeTypeSet.Sort], 'subsort_<_.[''NeSortSet.Sort, ''SortSet.Sort], 'subsort_<_.[ ''NeTermList.Sort, ''TermList.Sort], 'subsort_<_.[''NeTypeList.Sort, ''NeQidList.Sort], 'subsort_<_.[''NeTypeList.Sort, ''TypeList.Sort], 'subsort_<_.[''NeTypeSet.Sort, ''NeQidSet.Sort], 'subsort_<_.[ ''NeTypeSet.Sort, ''TypeSet.Sort], 'subsort_<_.[''NeVariableSet.Sort, ''NeQidSet.Sort], 'subsort_<_.[''NeVariableSet.Sort, ''VariableSet.Sort], 'subsort_<_.[''NzNat.Sort, ''Nat.Sort], 'subsort_<_.[''OpDecl.Sort, ''OpDeclSet.Sort], 'subsort_<_.[''OpMapping.Sort, ''OpMappingSet.Sort], 'subsort_<_.[''ParameterDecl.Sort, ''NeParameterDeclList.Sort], 'subsort_<_.[''PatternSubjectPair.Sort, ''MatchingProblem.Sort], 'subsort_<_.[''PrintOption.Sort, ''PrintOptionSet.Sort], 'subsort_<_.[ ''Qid.Sort, ''Header.Sort], 'subsort_<_.[''Qid.Sort, ''NeQidList.Sort], 'subsort_<_.[''Qid.Sort, ''NeQidSet.Sort], 'subsort_<_.[''Renaming.Sort, ''RenamingSet.Sort], 'subsort_<_.[''Result4Tuple.Sort, ''Result4Tuple?.Sort], 'subsort_<_.[''ResultPair.Sort, ''ResultPair?.Sort], 'subsort_<_.[''ResultTriple.Sort, ''ResultTriple?.Sort], 'subsort_<_.[ ''Rule.Sort, ''RuleSet.Sort], 'subsort_<_.[''RuleApplication.Sort, ''Strategy.Sort], 'subsort_<_.[''SModule.Sort, ''Module.Sort], 'subsort_<_.[''SModule.Sort, ''StratModule.Sort], 'subsort_<_.[ ''STheory.Sort, ''Module.Sort], 'subsort_<_.[''STheory.Sort, ''StratTheory.Sort], 'subsort_<_.[''SmtResult.Sort, ''SmtResult?.Sort], 'subsort_<_.[''Sort.Sort, ''Expression.Sort], 'subsort_<_.[''Sort.Sort, ''NeSortSet.Sort], 'subsort_<_.[''Sort.Sort, ''Type.Sort], 'subsort_<_.[ ''SortMapping.Sort, ''SortMappingSet.Sort], 'subsort_<_.[''SortSet.Sort, ''TypeSet.Sort], 'subsort_<_.[''StratDecl.Sort, ''StratDeclSet.Sort], 'subsort_<_.[''StratDefinition.Sort, ''StratDefSet.Sort], 'subsort_<_.[ ''StratMapping.Sort, ''StratMappingSet.Sort], 'subsort_<_.[ ''StratModule.Sort, ''Module.Sort], 'subsort_<_.[''StratTheory.Sort, ''Module.Sort], 'subsort_<_.[''Strategy.Sort, ''Strategy?.Sort], 'subsort_<_.[''Strategy.Sort, ''StrategyList.Sort], 'subsort_<_.[ ''SubsortDecl.Sort, ''SubsortDeclSet.Sort], 'subsort_<_.[ ''Substitution.Sort, ''Substitution?.Sort], 'subsort_<_.[''Term.Sort, ''NeTermList.Sort], 'subsort_<_.[''TermList.Sort, ''GTermList.Sort], 'subsort_<_.[''TermQid.Sort, ''Qid.Sort], 'subsort_<_.[''TermQid.Sort, ''Term.Sort], 'subsort_<_.[''Trace.Sort, ''Trace?.Sort], 'subsort_<_.[ ''TraceStep.Sort, ''Trace.Sort], 'subsort_<_.[''Type.Sort, ''NeTypeList.Sort], 'subsort_<_.[''Type.Sort, ''NeTypeSet.Sort], 'subsort_<_.[''Type.Sort, ''Qid.Sort], 'subsort_<_.[''Type.Sort, ''Type?.Sort], 'subsort_<_.[''TypeList.Sort, ''QidList.Sort], 'subsort_<_.[ ''TypeList.Sort, ''TypeListSet.Sort], 'subsort_<_.[''TypeSet.Sort, ''QidSet.Sort], 'subsort_<_.[''TypeSet.Sort, ''TypeListSet.Sort], 'subsort_<_.[''UnificandPair.Sort, ''UnificationProblem.Sort], 'subsort_<_.[''UnificationPair.Sort, ''MatchOrUnificationPair.Sort], 'subsort_<_.[''UnificationPair.Sort, ''UnificationPair?.Sort], 'subsort_<_.[''UnificationTriple.Sort, ''UnificationTriple?.Sort], 'subsort_<_.[''UsingPair.Sort, ''UsingPairSet.Sort], 'subsort_<_.[ ''Variable.Sort, ''NeVariableSet.Sort], 'subsort_<_.[''Variable.Sort, ''TermQid.Sort], 'subsort_<_.[''VariableSet.Sort, ''QidSet.Sort], 'subsort_<_.[''Variant.Sort, ''Variant?.Sort], 'subsort_<_.[ ''VariantOption.Sort, ''VariantOptionSet.Sort], 'subsort_<_.[ ''ViewExpression.Sort, ''NeParameterList.Sort], 'subsort_<_.[''Zero.Sort, ''Nat.Sort]], '__['op_:_->_`[_`].[''$applySubstitution.Sort, '__[ ''NeTermList.Sort, ''Substitution.Sort], ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$card.Sort, '__[''QidSet.Sort, ''Nat.Sort], ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$diff.Sort, '__[''QidSet.Sort, ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$intersect.Sort, '__[''QidSet.Sort, ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''$reverse.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$reverse.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''$size.Sort, '__[''NatList.Sort, ''Nat.Sort], ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''$size.Sort, '__[''QidList.Sort, ''Nat.Sort], ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''0.Sort, 'nil.TypeList, ''Zero.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''.Sort, 'nil.TypeList, ''Constant.Sort, 'special['id-hook[''QuotedIdentifierSymbol.Sort, ''constantQid.Sort]]], 'op_:_->_`[_`].[''.Sort, 'nil.TypeList, ''Kind.Sort, 'special[ 'id-hook[''QuotedIdentifierSymbol.Sort, ''kindQid.Sort]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Qid.Sort, 'special['id-hook[ ''QuotedIdentifierSymbol.Sort, 'nil.TypeList]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Sort.Sort, 'special['id-hook[ ''QuotedIdentifierSymbol.Sort, ''sortQid.Sort]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Variable.Sort, 'special['id-hook[ ''QuotedIdentifierSymbol.Sort, ''variableQid.Sort]]], 'op_:_->_`[_`].[ ''.Sort, 'nil.TypeList, ''Char.Sort, 'special['id-hook[ ''StringSymbol.Sort, 'nil.TypeList]]], 'op_:_->_`[_`].[''.Sort, 'nil.TypeList, ''String.Sort, 'special['id-hook[''StringSymbol.Sort, 'nil.TypeList]]], 'op_:_->_`[_`].[''_!.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_&_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^53[ '0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''&.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_*.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_*_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'prec['s_^31['0.Zero]], 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''*.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_*_.Sort, '__[ ''NzNat.Sort, ''NzNat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^31['0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''*.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_*`(_`).Sort, '__[ ''ModuleExpression.Sort, ''RenamingSet.Sort], ''ModuleExpression.Sort, '__[ 'ctor.Attr, 'prec['s_^39['0.Zero]], 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''_+.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''_+_.Sort, '__[''ModuleExpression.Sort, ''ModuleExpression.Sort], ''ModuleExpression.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr]], 'op_:_->_`[_`].[''_+_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'prec['s_^33['0.Zero]], 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''+.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_+_.Sort, '__[ ''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^33['0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''+.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_+_.Sort, '__[''String.Sort, ''String.Sort], ''String.Sort, '__['prec['s_^33['0.Zero]], 'gather['__[ ''E.Sort, ''e.Sort]], 'special['__['id-hook[''StringOpSymbol.Sort, ''+.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]]], 'op_:_->_`[_`].[''_/\_.Sort, '__[''Condition.Sort, ''Condition.Sort], ''Condition.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.EqCondition.Constant], 'prec['s_^73['0.Zero]]]], 'op_:_->_`[_`].[ ''_/\_.Sort, '__[''EqCondition.Sort, ''EqCondition.Sort], ''EqCondition.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.EqCondition.Constant], 'prec['s_^73['0.Zero]]]], 'op_:_->_`[_`].[ ''_/\_.Sort, '__[''MatchingProblem.Sort, ''MatchingProblem.Sort], ''MatchingProblem.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec[ 's_^73['0.Zero]]]], 'op_:_->_`[_`].[''_/\_.Sort, '__[ ''UnificationProblem.Sort, ''UnificationProblem.Sort], ''UnificationProblem.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec[ 's_^73['0.Zero]]]], 'op_:_->_`[_`].[''_::_.Variable, '__[''Sort.Sort, ''ModuleExpression.Sort], ''ParameterDecl.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_:=_.Variable, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_:_.Variable, '__[''Term.Sort, ''Sort.Sort], ''EqCondition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''EmptyQidSet.Sort, ''EmptyQidSet.Sort], ''EmptyQidSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''KindSet.Sort, ''KindSet.Sort], ''KindSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeKindSet.Sort, ''KindSet.Sort], ''NeKindSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeQidSet.Sort, ''QidSet.Sort], ''NeQidSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''NeSortSet.Sort, ''SortSet.Sort], ''NeSortSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeTypeSet.Sort, ''TypeSet.Sort], ''NeTypeSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''NeVariableSet.Sort, ''VariableSet.Sort], ''NeVariableSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''SortSet.Sort, ''SortSet.Sort], ''SortSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''idle.Strategy.Constant], 'prec['s_^39['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''Substitution.Sort, ''Substitution.Sort], ''Substitution.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.Substitution.Constant], 'prec['s_^65['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[''TypeListSet.Sort, ''TypeListSet.Sort], ''TypeListSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''TypeSet.Sort, ''TypeSet.Sort], ''TypeSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_;_.Sort, '__[ ''VariableSet.Sort, ''VariableSet.Sort], ''VariableSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[''_<-_.Sort, '__[''Variable.Sort, ''Term.Sort], ''Assignment.Sort, '__['ctor.Attr, 'prec['s_^63['0.Zero]], 'format['__[''n++i.Sort, ''d.Sort, ''d.Sort, ''--.Sort]]]], 'op_:_->_`[_`].[''_<<_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'prec['s_^35['0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''<<.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_<=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''PatternSubjectPair.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_<=_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''<=.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_<=_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''<=.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_<_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''<.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_<_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''<.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_=/=_.Sort, '__[ ''Universal.Sort, ''Universal.Sort], ''Bool.Sort, '__['prec['s_^51[ '0.Zero]], 'poly['__['s_['0.Zero], 's_^2['0.Zero]]], 'special['__['id-hook[ ''EqualitySymbol.Sort, 'nil.TypeList], 'term-hook[''equalTerm.Sort, ''false.Bool.Constant], 'term-hook[''notEqualTerm.Sort, ''true.Bool.Constant]]]]], 'op_:_->_`[_`].[''_==_.Sort, '__[ ''Universal.Sort, ''Universal.Sort], ''Bool.Sort, '__['prec['s_^51[ '0.Zero]], 'poly['__['s_['0.Zero], 's_^2['0.Zero]]], 'special['__['id-hook[ ''EqualitySymbol.Sort, 'nil.TypeList], 'term-hook[''equalTerm.Sort, ''true.Bool.Constant], 'term-hook[''notEqualTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_=>_.Sort, '__[''Term.Sort, ''Term.Sort], ''Condition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''UnificandPair.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_=_.Sort, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_>=_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__[ 'prec['s_^37['0.Zero]], 'special['__['id-hook[''NumberOpSymbol.Sort, ''>=.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[ ''_>=_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec[ 's_^37['0.Zero]], 'special['__['id-hook[''StringOpSymbol.Sort, ''>=.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[ ''_>>_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['prec['s_^35[ '0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__['id-hook[ ''NumberOpSymbol.Sort, ''>>.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_>_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''>.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_>_.Sort, '__[''String.Sort, ''String.Sort], ''Bool.Sort, '__['prec['s_^37['0.Zero]], 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''>.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_?_:_.Variable, '__[ ''Strategy.Sort, ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__[ 'ctor.Attr, 'prec['s_^55['0.Zero]]]], 'op_:_->_`[_`].[''_\_.Sort, '__[ ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'gather['__[''E.Sort, ''e.Sort]]], 'op_:_->_`[_`].[''_^_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['prec['s_^29['0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__['id-hook[''NumberOpSymbol.Sort, ''^.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_^_.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['prec['s_^29['0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''^.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''AttrSet.Sort, ''AttrSet.Sort], ''AttrSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.AttrSet.Constant]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''EquationSet.Sort, ''EquationSet.Sort], ''EquationSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.EquationSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''HookList.Sort, ''HookList.Sort], ''HookList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.HookList.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''HookList.Sort, ''NeHookList.Sort], ''NeHookList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.HookList.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''ImportList.Sort, ''ImportList.Sort], ''ImportList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.ImportList.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''MembAxSet.Sort, ''MembAxSet.Sort], ''MembAxSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.MembAxSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''NarrowingTrace.Sort, ''NarrowingTrace.Sort], ''NarrowingTrace.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.NarrowingTrace.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.NatList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''NatList.Sort, ''NeNatList.Sort], ''NeNatList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.NatList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''NeHookList.Sort, ''HookList.Sort], ''NeHookList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.HookList.Constant]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''NeNatList.Sort, ''NatList.Sort], ''NeNatList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.NatList.Constant], 'prec['s_^25[ '0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''NeQidList.Sort, ''QidList.Sort], ''NeQidList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''NeTypeList.Sort, ''TypeList.Sort], ''NeTypeList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25[ '0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''OpDeclSet.Sort, ''OpDeclSet.Sort], ''OpDeclSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.OpDeclSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''OpMappingSet.Sort, ''OpMappingSet.Sort], ''OpMappingSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.OpMappingSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''PrintOptionSet.Sort, ''PrintOptionSet.Sort], ''PrintOptionSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.PrintOptionSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''QidList.Sort, ''NeQidList.Sort], ''NeQidList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''RuleSet.Sort, ''RuleSet.Sort], ''RuleSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.RuleSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''SortMappingSet.Sort, ''SortMappingSet.Sort], ''SortMappingSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.SortMappingSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''StratDeclSet.Sort, ''StratDeclSet.Sort], ''StratDeclSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.StratDeclSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''StratDefSet.Sort, ''StratDefSet.Sort], ''StratDefSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.StratDefSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''StratMappingSet.Sort, ''StratMappingSet.Sort], ''StratMappingSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.StratMappingSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''SubsortDeclSet.Sort, ''SubsortDeclSet.Sort], ''SubsortDeclSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.SubsortDeclSet.Constant], 'format['__[''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''Trace.Sort, ''Trace.Sort], ''Trace.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.Trace.Constant], 'format['__[''d.Sort, ''n.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''__.Sort, '__[''TypeList.Sort, ''NeTypeList.Sort], ''NeTypeList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.TypeList.Constant], 'prec['s_^25['0.Zero]]]], 'op_:_->_`[_`].[ ''__.Sort, '__[''TypeList.Sort, ''TypeList.Sort], ''TypeList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''nil.TypeList.Constant], 'prec['s_^25[ '0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''VariantOptionSet.Sort, ''VariantOptionSet.Sort], ''VariantOptionSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.VariantOptionSet.Constant]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''EmptyCommaList.Sort, ''EmptyCommaList.Sort], ''EmptyCommaList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''GTermList.Sort, ''GTermList.Sort], ''GTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''GroundTermList.Sort, ''GroundTermList.Sort], ''GroundTermList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec[ 's_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[ ''_`,_.Qid, '__[''GroundTermList.Sort, ''NeGroundTermList.Sort], ''NeGroundTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''NeCTermList.Sort, ''TermList.Sort], ''NeCTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''NeGroundTermList.Sort, ''GroundTermList.Sort], ''NeGroundTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec[ 's_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[ ''_`,_.Qid, '__[''NeParameterDeclList.Sort, ''ParameterDeclList.Sort], ''NeParameterDeclList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.ParameterDeclList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''NeParameterList.Sort, ''ParameterList.Sort], ''NeParameterList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''NeTermList.Sort, ''TermList.Sort], ''NeTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[ ''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''ParameterDeclList.Sort, ''NeParameterDeclList.Sort], ''NeParameterDeclList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''nil.ParameterDeclList.Constant], 'prec['s_^121['0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''ParameterDeclList.Sort, ''ParameterDeclList.Sort], ''ParameterDeclList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.ParameterDeclList.Constant], 'prec['s_^121[ '0.Zero]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''ParameterList.Sort, ''NeParameterList.Sort], ''NeParameterList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''ParameterList.Sort, ''ParameterList.Sort], ''ParameterList.Sort, '__[ 'assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec[ 's_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[ ''_`,_.Qid, '__[''RenamingSet.Sort, ''RenamingSet.Sort], ''RenamingSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec['s_^43[ '0.Zero]], 'format['__[''d.Sort, ''d.Sort, ''ni.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[''StrategyList.Sort, ''StrategyList.Sort], ''StrategyList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[ ''empty.StrategyList.Constant]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''TermList.Sort, ''NeCTermList.Sort], ''NeCTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''TermList.Sort, ''NeTermList.Sort], ''NeTermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''TermList.Sort, ''TermList.Sort], ''TermList.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''empty.EmptyCommaList.Constant], 'prec['s_^121['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_`,_.Qid, '__[ ''UsingPairSet.Sort, ''UsingPairSet.Sort], ''UsingPairSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec['s_^61['0.Zero]]]], 'op_:_->_`[_`].[''_`[_`].Qid, '__[''Qid.Sort, ''NeCTermList.Sort], ''Context.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_`[_`].Qid, '__[''Qid.Sort, ''NeGroundTermList.Sort], ''GroundTerm.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''_`[_`].Qid, '__[''Qid.Sort, ''NeTermList.Sort], ''Term.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''_`[_`]`{_`}.Qid, '__[''Qid.Sort, ''Substitution.Sort, ''StrategyList.Sort], ''RuleApplication.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''_`[`[_`]`].Qid, '__[''Qid.Sort, ''TermList.Sort], ''CallStrategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''_`{_`}.Sort, '__[''Expression.Sort, ''NeParameterList.Sort], ''Expression.Sort, '__['ctor.Attr, 'prec['s_^37[ '0.Zero]]]], 'op_:_->_`[_`].[''_`{_`}.Sort, '__[''ModuleExpression.Sort, ''NeParameterList.Sort], ''ModuleExpression.Sort, '__['ctor.Attr, 'prec[ 's_^37['0.Zero]]]], 'op_:_->_`[_`].[''_`{_`}.Sort, '__[''Qid.Sort, ''ParameterDeclList.Sort], ''Header.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''_`{_`}.Sort, '__[''ViewExpression.Sort, ''NeParameterList.Sort], ''ViewExpression.Sort, '__['ctor.Attr, 'prec['s_^37['0.Zero]]]], 'op_:_->_`[_`].[''_and-then_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['strat['__['s_['0.Zero], '0.Zero]], 'prec['s_^55[ '0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[ ''_and_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^55['0.Zero]]]], 'op_:_->_`[_`].[''_divides_.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''Bool.Sort, '__['prec['s_^51['0.Zero]], 'special['__['id-hook[''NumberOpSymbol.Sort, ''divides.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[ ''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''_implies_.Sort, '__[ ''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['prec['s_^61['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_in_.Sort, '__[ ''Qid.Sort, ''QidSet.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''_or-else_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['strat[ '__['s_['0.Zero], '0.Zero]], 'prec['s_^59['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''_or-else_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__['assoc.Attr, 'ctor.Attr, 'prec[ 's_^43['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[ ''_or_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^59['0.Zero]]]], 'op_:_->_`[_`].[''_psubset_.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_quo_.Sort, '__[''Nat.Sort, ''NzNat.Sort], ''Nat.Sort, '__['prec['s_^31['0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__[ 'id-hook[''NumberOpSymbol.Sort, ''quo.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_rem_.Sort, '__[''Nat.Sort, ''NzNat.Sort], ''Nat.Sort, '__['prec['s_^31['0.Zero]], 'gather['__[''E.Sort, ''e.Sort]], 'special['__['id-hook[ ''NumberOpSymbol.Sort, ''rem.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_subset_.Sort, '__[ ''QidSet.Sort, ''QidSet.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_using_.Sort, '__[''Variable.Sort, ''Strategy.Sort], ''UsingPair.Sort, '__['ctor.Attr, 'prec['s_^21['0.Zero]]]], 'op_:_->_`[_`].[''_xor_.Sort, '__[''Bool.Sort, ''Bool.Sort], ''Bool.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^57['0.Zero]]]], 'op_:_->_`[_`].[ ''_xor_.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^55['0.Zero]], 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''xor.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_|_.Sort, '__[ ''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec[ 's_^57['0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''|.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_|_.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'prec['s_^57[ '0.Zero]], 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''|.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''_|_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''fail.Strategy.Constant], 'prec['s_^41['0.Zero]], 'gather['__[''e.Sort, ''E.Sort]]]], 'op_:_->_`[_`].[''`[_`].Kind, ''Qid.Sort, ''Module.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''`[`].Kind, 'nil.TypeList, ''Context.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort, ''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''NarrowingStep.Sort, '__['ctor.Attr, 'format['__[''ni.Sort, ''n++i.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingApplyResult.Sort, '__['ctor.Attr, 'format['__[ ''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''NarrowingTrace.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchPathResult.Sort, '__[ 'ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchResult.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Nat.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Substitution.Sort, ''Qid.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Substitution.Sort, ''Term.Sort, ''Nat.Sort], ''SmtResult.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Context.Sort], ''Result4Tuple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[ ''Substitution.Sort, ''Substitution.Sort, ''Nat.Sort], ''UnificationTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''UnificationTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Rule.Sort], ''TraceStep.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''ResultTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Context.Sort], ''MatchPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Nat.Sort], ''UnificationPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Qid.Sort], ''UnificationPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort], ''ResultPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''all.Sort, 'nil.TypeList, ''RuleApplication.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''amatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''amatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''ambiguity.Sort, '__[''ResultPair.Sort, ''ResultPair.Sort], ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''ambiguity.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''anyType.Sort, 'nil.TypeList, ''Type?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''append.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''append.Sort, '__[''NatList.Sort, ''NeNatList.Sort], ''NeNatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''append.Sort, '__[''NeNatList.Sort, ''NatList.Sort], ''NeNatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''append.Sort, '__[''NeQidList.Sort, ''QidList.Sort], ''NeQidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''append.Sort, '__[''QidList.Sort, ''NeQidList.Sort], ''NeQidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''append.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''applySubstitution.Sort, '__[ ''Module.Sort, ''Term.Sort, ''Substitution.Sort], ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''ascii.Sort, ''Char.Sort, ''Nat.Sort, 'special['__['id-hook[''StringOpSymbol.Sort, ''ascii.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[''assoc.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''breadthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''ceq_=_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''Equation.Sort, '__[ 'ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''char.Sort, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[String`].Kind, 'special['__['id-hook[''StringOpSymbol.Sort, ''char.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[''cmb_:_if_`[_`]..Qid, '__[ ''Term.Sort, ''Sort.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''MembAx.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''comm.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''completeName.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaCompleteName.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''config.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''crl_=>_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''Condition.Sort, ''AttrSet.Sort], ''Rule.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''csd_:=_if_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''StratDefinition.Sort, '__['ctor.Attr, 'format['__[ ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''ctor.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''delay.Sort, 'nil.TypeList, ''VariantOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''delete.Sort, '__[''Qid.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''depthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''downTerm.Sort, '__[ ''Term.Sort, ''Universal.Sort], ''Universal.Sort, '__['poly['__['s_^2[ '0.Zero], '0.Zero]], 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaDownTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]]], 'op_:_->_`[_`].[''empty.Sort, 'nil.TypeList, ''EmptyCommaList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''empty.Sort, 'nil.TypeList, ''GroundTermList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''empty.Sort, 'nil.TypeList, ''StrategyList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''eq_=_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Equation.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''extending_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''fail.Sort, 'nil.TypeList, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''Result4Tuple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failure.Sort, 'nil.TypeList, ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''ResultTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''SmtResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''Trace?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failureIncomplete.Sort, 'nil.TypeList, ''ResultTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''false.Sort, 'nil.TypeList, ''Bool.Sort, '__['ctor.Attr, 'special['id-hook[ ''SystemFalse.Sort, 'nil.TypeList]]]], 'op_:_->_`[_`].[''filter.Sort, 'nil.TypeList, ''VariantOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''find.Sort, '__[''String.Sort, ''String.Sort, ''Nat.Sort], ''FindResult.Sort, 'special['__['id-hook[''StringOpSymbol.Sort, ''find.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''notFoundTerm.Sort, ''notFound.FindResult.Constant]]]], 'op_:_->_`[_`].[''flat.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''fmod_is_sorts_.____endfm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FModule.Sort, '__['ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[ ''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''format.Sort, ''QidList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''format.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''front.Sort, ''NeNatList.Sort, ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''front.Sort, ''NeQidList.Sort, ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''frozen.Sort, ''NeNatList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''fth_is_sorts_.____endfth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FTheory.Sort, '__['ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[ ''d.Sort, ''d.Sort, ''d.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''gather.Sort, ''QidList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''gcd.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''gcd.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''gcd.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__[ 'id-hook[''ACU_NumberOpSymbol.Sort, ''gcd.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''generated-by_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''getAccumulatedSubstitution.Sort, ''NarrowingSearchResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getAccumulatedSubstitution.Sort, ''NarrowingStep.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''MatchPair.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getContext.Sort, ''NarrowingApplyResult.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''NarrowingStep.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''Result4Tuple.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getEqs.Sort, ''Module.Sort, ''EquationSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getFrom.Sort, ''View.Sort, ''ModuleExpression.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getImports.Sort, ''Module.Sort, ''ImportList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getInitialSubstitution.Sort, ''NarrowingSearchPathResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getInitialTerm.Sort, ''NarrowingSearchPathResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getInitialType.Sort, ''NarrowingSearchPathResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getKind.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaGetKind.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''getKinds.Sort, ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaGetKinds.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''getLabel.Sort, ''NarrowingApplyResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getLabel.Sort, ''NarrowingStep.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getLhsSubstitution.Sort, ''UnificationTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getMbs.Sort, ''Module.Sort, ''MembAxSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getMoreVariantsInLayerFlag.Sort, ''Variant.Sort, ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getName.Sort, ''Constant.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getName.Sort, ''Module.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getName.Sort, ''Variable.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getName.Sort, ''View.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getOpMappings.Sort, ''View.Sort, ''OpMappingSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getOps.Sort, ''Module.Sort, ''OpDeclSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getParent.Sort, ''Variant.Sort, ''Parent.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRhsSubstitution.Sort, ''UnificationTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRls.Sort, ''Module.Sort, ''RuleSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getRule.Sort, ''TraceStep.Sort, ''Rule.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRuleSubstitution.Sort, ''NarrowingApplyResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSds.Sort, ''Module.Sort, ''StratDefSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSortMappings.Sort, ''View.Sort, ''SortMappingSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSorts.Sort, ''Module.Sort, ''SortSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getStateVariableFamily.Sort, ''NarrowingSearchResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getStratMappings.Sort, ''View.Sort, ''StratMappingSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getStrats.Sort, ''Module.Sort, ''StratDeclSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubsorts.Sort, ''Module.Sort, ''SubsortDeclSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSubstitution.Sort, ''MatchPair.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''Result4Tuple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSubstitution.Sort, ''ResultTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''UnificationPair.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''Variant.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''NarrowingApplyResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getTerm.Sort, ''NarrowingSearchResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''NarrowingStep.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''Result4Tuple.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''ResultPair.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getTerm.Sort, ''ResultTriple.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''TraceStep.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''Variant.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTermSubstitution.Sort, ''NarrowingApplyResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTo.Sort, ''View.Sort, ''ModuleExpression.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTrace.Sort, ''NarrowingSearchPathResult.Sort, ''NarrowingTrace.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Constant.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''NarrowingApplyResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getType.Sort, ''NarrowingSearchResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''NarrowingStep.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Result4Tuple.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''ResultPair.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getType.Sort, ''ResultTriple.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''TraceStep.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Variable.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingSearchPathResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingSearchResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingStep.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getUnifierVariableFamily.Sort, ''NarrowingSearchPathResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getUnifierVariableFamily.Sort, ''NarrowingSearchResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifierVariableFamily.Sort, ''NarrowingStep.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getVariableFamily.Sort, ''NarrowingApplyResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getVariableFamily.Sort, ''UnificationPair.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getVariableFamily.Sort, ''UnificationTriple.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getVariableFamily.Sort, ''Variant.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''glbSorts.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGlbSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''head.Sort, ''NeNatList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''head.Sort, ''NeQidList.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''id.Sort, ''Term.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''id-hook.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Hook.Sort, '__[ 'ctor.Attr, 'format['__[''nssss.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''idem.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''idle.Sort, 'nil.TypeList, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''if_then_else_fi.Sort, '__[''Bool.Sort, ''Universal.Sort, ''Universal.Sort], ''Universal.Sort, '__['poly['__['s_^2['0.Zero], 's_^3[ '0.Zero], '0.Zero]], 'special['__['id-hook[''BranchSymbol.Sort, 'nil.TypeList], 'term-hook[''1.Sort, ''true.Bool.Constant], 'term-hook[ ''2.Sort, ''false.Bool.Constant]]]]], 'op_:_->_`[_`].[''including_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''insert.Sort, '__[''Qid.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''intersection.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''iter.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''label.Sort, ''Qid.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''label_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''last.Sort, ''NeNatList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''last.Sort, ''NeQidList.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''latex.Sort, ''String.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''lcm.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''lcm.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''lcm.Sort, '__[''NzNat.Sort, ''NzNat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''lcm.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''leastSort.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaLeastSort.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''left-id.Sort, ''Term.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''length.Sort, ''String.Sort, ''Nat.Sort, 'special['__['id-hook[ ''StringOpSymbol.Sort, ''length.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[ ''lesserSorts.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaLesserSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''lowerCase.Sort, ''String.Sort, ''String.Sort, 'special[ '__['id-hook[''StringOpSymbol.Sort, ''lowerCase.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[''match_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''matchrew_s.t._by_.Constant, '__[''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''max.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''max.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''max.Sort, '__[''NzNat.Sort, ''Nat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__[ 'id-hook[''ACU_NumberOpSymbol.Sort, ''max.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''maximalAritySet.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMaximalAritySet.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''maximalSorts.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMaximalSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''mb_:_`[_`]..Qid, '__[''Term.Sort, ''Sort.Sort, ''AttrSet.Sort], ''MembAx.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''memo.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''metaApply.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Substitution?`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaApply.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaCheck.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaCheck.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''legacyMetaDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaFrewrite.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaFrewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaGetIrredundantVariant.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaGetIrredundantVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetIrredundantVariant.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetIrredundantVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetVariant.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaGetVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetVariant.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaIrredundantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaIrredundantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaIrredundantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaIrredundantUnify.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaMatch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Substitution?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMatch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrow.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[Bool`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrow2.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrow.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrow.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingApply.Sort, '__[''Module.Sort, ''Term.Sort, ''TermList.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingApplyResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''metaNarrowingApply.Sort, '__[''Module.Sort, ''Term.Sort, ''TermList.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingApplyResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingApply.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingSearch.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingSearchResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaNarrowingSearch.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingSearchResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingSearch.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingSearchPath.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingSearchPathResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaNarrowingSearchPath.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingSearchPathResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingSearchPath.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNormalize.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNormalize.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaParse.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaParse.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaParse.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaParseStrategy.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[StrategyList`,Strategy?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaParseStrategy.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaPrettyPrint.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrettyPrint.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaPrettyPrintStrategy.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[StrategyList`,Strategy?`].Kind, ''`[PrintOptionSet`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrettyPrintStrategy.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaPrintToString.Sort, '__[ ''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[PrintOptionSet`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[String`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrintToString.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaReduce.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaReduce.Sort], 'op-hook[''qidSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''metaTermSymbol.Sort, ''_`[_`].Qid, '__[''Qid.Sort, ''NeGroundTermList.Sort], ''GroundTerm.Sort], 'op-hook[ ''metaArgSymbol.Sort, ''_`,_.Qid, '__[''NeGroundTermList.Sort, ''GroundTermList.Sort], ''NeGroundTermList.Sort], 'op-hook[ ''emptyTermListSymbol.Sort, ''empty.Sort, 'nil.TypeList, ''GroundTermList.Sort], 'op-hook[''assignmentSymbol.Sort, ''_<-_.Sort, '__[ ''Variable.Sort, ''Term.Sort], ''Assignment.Sort], 'op-hook[ ''emptySubstitutionSymbol.Sort, ''none.Sort, 'nil.TypeList, ''Substitution.Sort], 'op-hook[''substitutionSymbol.Sort, ''_;_.Sort, '__[ ''Substitution.Sort, ''Substitution.Sort], ''Substitution.Sort], 'op-hook[ ''holeSymbol.Sort, ''`[`].Kind, 'nil.TypeList, ''Context.Sort], 'op-hook[ ''noConditionSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''EqCondition.Sort], 'op-hook[''equalityConditionSymbol.Sort, ''_=_.Sort, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort], 'op-hook[''sortTestConditionSymbol.Sort, ''_:_.Variable, '__[''Term.Sort, ''Sort.Sort], ''EqCondition.Sort], 'op-hook[''matchConditionSymbol.Sort, ''_:=_.Variable, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort], 'op-hook[''rewriteConditionSymbol.Sort, ''_=>_.Sort, '__[''Term.Sort, ''Term.Sort], ''Condition.Sort], 'op-hook[ ''conjunctionSymbol.Sort, ''_/\_.Sort, '__[''EqCondition.Sort, ''EqCondition.Sort], ''EqCondition.Sort], 'op-hook[''failStratSymbol.Sort, ''fail.Sort, 'nil.TypeList, ''Strategy.Sort], 'op-hook[ ''idleStratSymbol.Sort, ''idle.Sort, 'nil.TypeList, ''Strategy.Sort], 'op-hook[''allStratSymbol.Sort, ''all.Sort, 'nil.TypeList, ''RuleApplication.Sort], 'op-hook[''applicationStratSymbol.Sort, ''_`[_`]`{_`}.Qid, '__[''Qid.Sort, ''Substitution.Sort, ''StrategyList.Sort], ''RuleApplication.Sort], 'op-hook[ ''topStratSymbol.Sort, ''top.Sort, ''RuleApplication.Sort, ''Strategy.Sort], 'op-hook[''matchStratSymbol.Sort, ''match_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[ ''xmatchStratSymbol.Sort, ''xmatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[''amatchStratSymbol.Sort, ''amatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[''unionStratSymbol.Sort, ''_|_.Sort, '__[ ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[ ''concatStratSymbol.Sort, ''_;_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''orelseStratSymbol.Sort, ''_or-else_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''plusStratSymbol.Sort, ''_+.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''conditionalStratSymbol.Sort, ''_?_:_.Variable, '__[''Strategy.Sort, ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''matchrewStratSymbol.Sort, ''matchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''xmatchrewStratSymbol.Sort, ''xmatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''amatchrewStratSymbol.Sort, ''amatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''callStratSymbol.Sort, ''_`[`[_`]`].Qid, '__[''Qid.Sort, ''TermList.Sort], ''CallStrategy.Sort], 'op-hook[''oneStratSymbol.Sort, ''one.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[ ''starStratSymbol.Sort, ''_*.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''normalizationStratSymbol.Sort, ''_!.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''notStratSymbol.Sort, ''not.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''testStratSymbol.Sort, ''test.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[ ''tryStratSymbol.Sort, ''try.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''usingStratSymbol.Sort, ''_using_.Sort, '__[''Variable.Sort, ''Strategy.Sort], ''UsingPair.Sort], 'op-hook[''usingListStratSymbol.Sort, ''_`,_.Qid, '__[''UsingPairSet.Sort, ''UsingPairSet.Sort], ''UsingPairSet.Sort], 'op-hook[''emptyStratListSymbol.Sort, ''empty.Sort, 'nil.TypeList, ''StrategyList.Sort], 'op-hook[''stratListSymbol.Sort, ''_`,_.Qid, '__[''StrategyList.Sort, ''StrategyList.Sort], ''StrategyList.Sort], 'op-hook[''headerSymbol.Sort, ''_`{_`}.Sort, '__[ ''Qid.Sort, ''ParameterDeclList.Sort], ''Header.Sort], 'op-hook[ ''parameterDeclSymbol.Sort, ''_::_.Variable, '__[''Sort.Sort, ''ModuleExpression.Sort], ''ParameterDecl.Sort], 'op-hook[ ''parameterDeclListSymbol.Sort, ''_`,_.Qid, '__[''ParameterDeclList.Sort, ''ParameterDeclList.Sort], ''ParameterDeclList.Sort], 'op-hook[ ''protectingSymbol.Sort, ''protecting_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''extendingSymbol.Sort, ''extending_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''includingSymbol.Sort, ''including_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[ ''generatedBySymbol.Sort, ''generated-by_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''nilImportListSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''ImportList.Sort], 'op-hook[''importListSymbol.Sort, ''__.Sort, '__[''ImportList.Sort, ''ImportList.Sort], ''ImportList.Sort], 'op-hook[''emptySortSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''QidSet.Sort], 'op-hook[''sortSetSymbol.Sort, ''_;_.Sort, '__[ ''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort], 'op-hook[ ''subsortSymbol.Sort, ''subsort_<_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SubsortDecl.Sort], 'op-hook[''emptySubsortDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''SubsortDeclSet.Sort], 'op-hook[ ''subsortDeclSetSymbol.Sort, ''__.Sort, '__[''SubsortDeclSet.Sort, ''SubsortDeclSet.Sort], ''SubsortDeclSet.Sort], 'op-hook[ ''nilQidListSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''QidList.Sort], 'op-hook[''qidListSymbol.Sort, ''__.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort], 'op-hook[''emptyQidSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''QidSet.Sort], 'op-hook[''qidSetSymbol.Sort, ''_;_.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort], 'op-hook[ ''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'op-hook[ ''natListSymbol.Sort, ''__.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort], 'op-hook[''unboundedSymbol.Sort, ''unbounded.Sort, 'nil.TypeList, ''Bound.Sort], 'op-hook[''noParentSymbol.Sort, ''none.Sort, 'nil.TypeList, ''Parent.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[ ''sortRenamingSymbol.Sort, ''sort_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''opRenamingSymbol.Sort, ''op_to_`[_`].Qid, '__[ ''Qid.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort], 'op-hook[ ''opRenamingSymbol2.Sort, ''op_:_->_to_`[_`].Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort], 'op-hook[''labelRenamingSymbol.Sort, ''label_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[ ''stratRenamingSymbol.Sort, ''strat_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''stratRenamingSymbol2.Sort, ''strat_:_@_to_.Variable, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''renamingSetSymbol.Sort, ''_`,_.Qid, '__[''RenamingSet.Sort, ''RenamingSet.Sort], ''RenamingSet.Sort], 'op-hook[''sumSymbol.Sort, ''_+_.Sort, '__[ ''ModuleExpression.Sort, ''ModuleExpression.Sort], ''ModuleExpression.Sort], 'op-hook[''renamingSymbol.Sort, ''_*`(_`).Sort, '__[''ModuleExpression.Sort, ''RenamingSet.Sort], ''ModuleExpression.Sort], 'op-hook[''instantiationSymbol.Sort, ''_`{_`}.Sort, '__[''Expression.Sort, ''NeParameterList.Sort], ''Expression.Sort], 'op-hook[ ''termHookSymbol.Sort, ''term-hook.Sort, '__[''Qid.Sort, ''Term.Sort], ''Hook.Sort], 'op-hook[''hookListSymbol.Sort, ''__.Sort, '__[ ''HookList.Sort, ''HookList.Sort], ''HookList.Sort], 'op-hook[ ''idHookSymbol.Sort, ''id-hook.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Hook.Sort], 'op-hook[''opHookSymbol.Sort, ''op-hook.Sort, '__[''Qid.Sort, ''Qid.Sort, ''QidList.Sort, ''Qid.Sort], ''Hook.Sort], 'op-hook[ ''assocSymbol.Sort, ''assoc.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''commSymbol.Sort, ''comm.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''idemSymbol.Sort, ''idem.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''iterSymbol.Sort, ''iter.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''idSymbol.Sort, ''id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''leftIdSymbol.Sort, ''left-id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''rightIdSymbol.Sort, ''right-id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''stratSymbol.Sort, ''strat.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[ ''memoSymbol.Sort, ''memo.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''precSymbol.Sort, ''prec.Sort, ''Nat.Sort, ''Attr.Sort], 'op-hook[ ''gatherSymbol.Sort, ''gather.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[ ''formatSymbol.Sort, ''format.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[ ''latexSymbol.Sort, ''latex.Sort, ''String.Sort, ''Attr.Sort], 'op-hook[ ''ctorSymbol.Sort, ''ctor.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''frozenSymbol.Sort, ''frozen.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[''polySymbol.Sort, ''poly.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[''configSymbol.Sort, ''config.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''objectSymbol.Sort, ''object.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''msgSymbol.Sort, ''msg.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''portalSymbol.Sort, ''portal.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''pconstSymbol.Sort, ''pconst.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''specialSymbol.Sort, ''special.Sort, ''NeHookList.Sort, ''Attr.Sort], 'op-hook[''labelSymbol.Sort, ''label.Sort, ''Qid.Sort, ''Attr.Sort], 'op-hook[''metadataSymbol.Sort, ''metadata.Sort, ''String.Sort, ''Attr.Sort], 'op-hook[''owiseSymbol.Sort, ''owise.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''variantAttrSymbol.Sort, ''variant.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''narrowingSymbol.Sort, ''narrowing.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''nonexecSymbol.Sort, ''nonexec.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''printSymbol.Sort, ''print.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[''emptyAttrSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''AttrSet.Sort], 'op-hook[''attrSetSymbol.Sort, ''__.Sort, '__[ ''AttrSet.Sort, ''AttrSet.Sort], ''AttrSet.Sort], 'op-hook[ ''opDeclSymbol.Sort, ''op_:_->_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''OpDecl.Sort], 'op-hook[ ''opDeclSetSymbol.Sort, ''__.Sort, '__[''OpDeclSet.Sort, ''OpDeclSet.Sort], ''OpDeclSet.Sort], 'op-hook[''emptyOpDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''OpDeclSet.Sort], 'op-hook[''mbSymbol.Sort, ''mb_:_`[_`]..Qid, '__[''Term.Sort, ''Sort.Sort, ''AttrSet.Sort], ''MembAx.Sort], 'op-hook[''cmbSymbol.Sort, ''cmb_:_if_`[_`]..Qid, '__[ ''Term.Sort, ''Sort.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''MembAx.Sort], 'op-hook[''emptyMembAxSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''MembAxSet.Sort], 'op-hook[''membAxSetSymbol.Sort, ''__.Sort, '__[''MembAxSet.Sort, ''MembAxSet.Sort], ''MembAxSet.Sort], 'op-hook[''eqSymbol.Sort, ''eq_=_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Equation.Sort], 'op-hook[''ceqSymbol.Sort, ''ceq_=_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''Equation.Sort], 'op-hook[''emptyEquationSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''EquationSet.Sort], 'op-hook[ ''equationSetSymbol.Sort, ''__.Sort, '__[''EquationSet.Sort, ''EquationSet.Sort], ''EquationSet.Sort], 'op-hook[''rlSymbol.Sort, ''rl_=>_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Rule.Sort], 'op-hook[''crlSymbol.Sort, ''crl_=>_if_`[_`]..Qid, '__[ ''Term.Sort, ''Term.Sort, ''Condition.Sort, ''AttrSet.Sort], ''Rule.Sort], 'op-hook[''emptyRuleSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''RuleSet.Sort], 'op-hook[''ruleSetSymbol.Sort, ''__.Sort, '__[ ''RuleSet.Sort, ''RuleSet.Sort], ''RuleSet.Sort], 'op-hook[ ''stratDeclSymbol.Sort, ''strat_:_@_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''StratDecl.Sort], 'op-hook[ ''emptyStratDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratDeclSet.Sort], 'op-hook[''stratDeclSetSymbol.Sort, ''__.Sort, '__[ ''StratDeclSet.Sort, ''StratDeclSet.Sort], ''StratDeclSet.Sort], 'op-hook[ ''sdSymbol.Sort, ''sd_:=_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''AttrSet.Sort], ''StratDefinition.Sort], 'op-hook[ ''csdSymbol.Sort, ''csd_:=_if_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''StratDefinition.Sort], 'op-hook[''emptyStratDefSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratDefSet.Sort], 'op-hook[ ''stratDefSetSymbol.Sort, ''__.Sort, '__[''StratDefSet.Sort, ''StratDefSet.Sort], ''StratDefSet.Sort], 'op-hook[''fmodSymbol.Sort, ''fmod_is_sorts_.____endfm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FModule.Sort], 'op-hook[''fthSymbol.Sort, ''fth_is_sorts_.____endfth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FTheory.Sort], 'op-hook[''modSymbol.Sort, ''mod_is_sorts_._____endm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''SModule.Sort], 'op-hook[ ''thSymbol.Sort, ''th_is_sorts_._____endth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''STheory.Sort], 'op-hook[''smodSymbol.Sort, ''smod_is_sorts_._______endsm.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratModule.Sort], 'op-hook[ ''sthSymbol.Sort, ''sth_is_sorts_._______endsth.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratTheory.Sort], 'op-hook[ ''sortMappingSymbol.Sort, ''sort_to_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SortMapping.Sort], 'op-hook[''emptySortMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''SortMappingSet.Sort], 'op-hook[ ''sortMappingSetSymbol.Sort, ''__.Sort, '__[''SortMappingSet.Sort, ''SortMappingSet.Sort], ''SortMappingSet.Sort], 'op-hook[ ''opMappingSymbol.Sort, ''op_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''OpMapping.Sort], 'op-hook[''opSpecificMappingSymbol.Sort, ''op_:_->_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''OpMapping.Sort], 'op-hook[''opTermMappingSymbol.Sort, ''op_to`term_..Qid, '__[''Term.Sort, ''Term.Sort], ''OpMapping.Sort], 'op-hook[''emptyOpMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''OpMappingSet.Sort], 'op-hook[''opMappingSetSymbol.Sort, ''__.Sort, '__[ ''OpMappingSet.Sort, ''OpMappingSet.Sort], ''OpMappingSet.Sort], 'op-hook[ ''stratMappingSymbol.Sort, ''strat_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''StratMapping.Sort], 'op-hook[''stratSpecificMappingSymbol.Sort, ''strat_:_@_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''StratMapping.Sort], 'op-hook[''stratExprMappingSymbol.Sort, ''strat_to`expr_..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort], ''StratMapping.Sort], 'op-hook[''emptyStratMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratMappingSet.Sort], 'op-hook[ ''stratMappingSetSymbol.Sort, ''__.Sort, '__[''StratMappingSet.Sort, ''StratMappingSet.Sort], ''StratMappingSet.Sort], 'op-hook[ ''viewSymbol.Sort, ''view_from_to_is___endv.Sort, '__[''Header.Sort, ''ModuleExpression.Sort, ''ModuleExpression.Sort, ''SortMappingSet.Sort, ''OpMappingSet.Sort, ''StratMappingSet.Sort], ''View.Sort], 'op-hook[ ''anyTypeSymbol.Sort, ''anyType.Sort, 'nil.TypeList, ''Type?.Sort], 'op-hook[''unificandPairSymbol.Sort, ''_=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''UnificandPair.Sort], 'op-hook[ ''unificationConjunctionSymbol.Sort, ''_/\_.Sort, '__[ ''UnificationProblem.Sort, ''UnificationProblem.Sort], ''UnificationProblem.Sort], 'op-hook[''patternSubjectPairSymbol.Sort, ''_<=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''PatternSubjectPair.Sort], 'op-hook[''matchingConjunctionSymbol.Sort, ''_/\_.Sort, '__[ ''MatchingProblem.Sort, ''MatchingProblem.Sort], ''MatchingProblem.Sort], 'op-hook[''resultPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort], ''ResultPair.Sort], 'op-hook[''resultTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''ResultTriple.Sort], 'op-hook[''result4TupleSymbol.Sort, ''`{_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Context.Sort], ''Result4Tuple.Sort], 'op-hook[''matchPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Context.Sort], ''MatchPair.Sort], 'op-hook[''unificationTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''UnificationTriple.Sort], 'op-hook[''variantSymbol.Sort, ''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Qid.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort], 'op-hook[ ''narrowingApplyResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingApplyResult.Sort], 'op-hook[ ''narrowingSearchResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchResult.Sort], 'op-hook[ ''traceStepSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Rule.Sort], ''TraceStep.Sort], 'op-hook[''nilTraceSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''Trace.Sort], 'op-hook[''traceSymbol.Sort, ''__.Sort, '__[''Trace.Sort, ''Trace.Sort], ''Trace.Sort], 'op-hook[ ''narrowingStepSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort, ''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''NarrowingStep.Sort], 'op-hook[ ''nilNarrowingTraceSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''NarrowingTrace.Sort], 'op-hook[''narrowingTraceSymbol.Sort, ''__.Sort, '__[''NarrowingTrace.Sort, ''NarrowingTrace.Sort], ''NarrowingTrace.Sort], 'op-hook[''narrowingSearchPathResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''NarrowingTrace.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchPathResult.Sort], 'op-hook[ ''smtResultSymbol.Sort, ''`{_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Term.Sort, ''Nat.Sort], ''SmtResult.Sort], 'op-hook[ ''noParseSymbol.Sort, ''noParse.Sort, ''Nat.Sort, ''ResultPair?.Sort], 'op-hook[''ambiguitySymbol.Sort, ''ambiguity.Sort, '__[''ResultPair.Sort, ''ResultPair.Sort], ''ResultPair?.Sort], 'op-hook[''failure2Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''ResultPair?.Sort], 'op-hook[ ''failure3Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''ResultTriple?.Sort], 'op-hook[''failureIncomplete3Symbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''ResultTriple?.Sort], 'op-hook[ ''failure4Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''Result4Tuple?.Sort], 'op-hook[''noUnifierPairSymbol.Sort, ''noUnifier.Sort, 'nil.TypeList, ''UnificationPair?.Sort], 'op-hook[ ''noUnifierTripleSymbol.Sort, ''noUnifier.Sort, 'nil.TypeList, ''UnificationTriple?.Sort], 'op-hook[''noUnifierIncompletePairSymbol.Sort, ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationPair?.Sort], 'op-hook[''noUnifierIncompleteTripleSymbol.Sort, ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationTriple?.Sort], 'op-hook[''noVariantSymbol.Sort, ''noVariant.Sort, 'nil.TypeList, ''Variant?.Sort], 'op-hook[''noVariantIncompleteSymbol.Sort, ''noVariantIncomplete.Sort, 'nil.TypeList, ''Variant?.Sort], 'op-hook[ ''narrowingApplyFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort], 'op-hook[ ''narrowingApplyFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort], 'op-hook[ ''narrowingSearchFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort], 'op-hook[ ''narrowingSearchFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort], 'op-hook[ ''narrowingSearchPathFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort], 'op-hook[ ''narrowingSearchPathFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort], 'op-hook[''noMatchSubstSymbol.Sort, ''noMatch.Sort, 'nil.TypeList, ''Substitution?.Sort], 'op-hook[ ''noMatchIncompleteSubstSymbol.Sort, ''noMatchIncomplete.Sort, 'nil.TypeList, ''Substitution?.Sort], 'op-hook[''noMatchPairSymbol.Sort, ''noMatch.Sort, 'nil.TypeList, ''MatchPair?.Sort], 'op-hook[ ''failureTraceSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''Trace?.Sort], 'op-hook[''smtFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''SmtResult?.Sort], 'op-hook[''noStratParseSymbol.Sort, ''noStratParse.Sort, ''Nat.Sort, ''Strategy?.Sort], 'op-hook[ ''stratAmbiguitySymbol.Sort, ''ambiguity.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy?.Sort], 'op-hook[''mixfixSymbol.Sort, ''mixfix.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''withParensSymbol.Sort, ''with-parens.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''withSortsSymbol.Sort, ''with-sorts.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''flatSymbol.Sort, ''flat.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''formatPrintOptionSymbol.Sort, ''format.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''numberSymbol.Sort, ''number.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''ratSymbol.Sort, ''rat.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''emptyPrintOptionSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''PrintOptionSet.Sort], 'op-hook[''printOptionSetSymbol.Sort, ''__.Sort, '__[''PrintOptionSet.Sort, ''PrintOptionSet.Sort], ''PrintOptionSet.Sort], 'op-hook[''delaySymbol.Sort, ''delay.Sort, 'nil.TypeList, ''VariantOption.Sort], 'op-hook[''filterSymbol.Sort, ''filter.Sort, 'nil.TypeList, ''VariantOption.Sort], 'op-hook[ ''emptyVariantOptionSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''VariantOptionSet.Sort], 'op-hook[''variantOptionSetSymbol.Sort, ''__.Sort, '__[''VariantOptionSet.Sort, ''VariantOptionSet.Sort], ''VariantOptionSet.Sort], 'op-hook[''breadthFirstSymbol.Sort, ''breadthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort], 'op-hook[ ''depthFirstSymbol.Sort, ''depthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort], 'op-hook[''legacyUnificationPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Nat.Sort], ''UnificationPair.Sort], 'op-hook[''legacyUnificationTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Nat.Sort], ''UnificationTriple.Sort], 'op-hook[ ''legacyVariantSymbol.Sort, ''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Nat.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]], 'op_:_->_`[_`].[ ''metaRewrite.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaRewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSearch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSearch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSearchPath.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Trace?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSearchPath.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSmtSearch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[SmtResult?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSmtSearch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSrewrite.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[StrategyList`,Strategy?`].Kind, ''`[SrewriteOption`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSrewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''legacyMetaVariantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaVariantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantMatch.Sort, '__[''`[Module`].Kind, ''`[MatchingProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Substitution?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaVariantMatch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaVariantUnify.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaVariantUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaVariantUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaXapply.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Substitution?`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Result4Tuple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaXapply.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaXmatch.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Condition`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaXmatch.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metadata.Sort, ''String.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''min.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[''ACU_NumberOpSymbol.Sort, ''min.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[''min.Sort, '__[''NzNat.Sort, ''NzNat.Sort], ''NzNat.Sort, '__['assoc.Attr, 'comm.Attr, 'special['__['id-hook[ ''ACU_NumberOpSymbol.Sort, ''min.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[ ''minimalSorts.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMinimalSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''mixfix.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''modExp.Sort, '__[ ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[FindResult`,NatList`,Bound`,Parent`].Kind, 'special['__['id-hook[ ''NumberOpSymbol.Sort, ''modExp.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[ ''mod_is_sorts_._____endm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''SModule.Sort, '__['ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''msg.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''narrowing.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''EqCondition.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''HookList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''ImportList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''NarrowingTrace.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''NatList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''ParameterDeclList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''QidList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''Trace.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''TypeList.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noMatch.Sort, 'nil.TypeList, ''MatchPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noMatch.Sort, 'nil.TypeList, ''Substitution?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noMatchIncomplete.Sort, 'nil.TypeList, ''Substitution?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noParse.Sort, ''Nat.Sort, ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noStratParse.Sort, ''Nat.Sort, ''Strategy?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifier.Sort, 'nil.TypeList, ''UnificationPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifier.Sort, 'nil.TypeList, ''UnificationTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noVariant.Sort, 'nil.TypeList, ''Variant?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noVariantIncomplete.Sort, 'nil.TypeList, ''Variant?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''AttrSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''EmptyQidSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''EquationSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''MembAxSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''OpDeclSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''OpMappingSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''none.Sort, 'nil.TypeList, ''Parent.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''none.Sort, 'nil.TypeList, ''PrintOptionSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''QidSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''RuleSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''SortMappingSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''StratDeclSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''StratDefSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''none.Sort, 'nil.TypeList, ''StratMappingSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''SubsortDeclSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''Substitution.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''VariantOptionSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''nonexec.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''not.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''notFound.Sort, 'nil.TypeList, ''FindResult.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''not_.Sort, ''Bool.Sort, ''Bool.Sort, 'prec['s_^53[ '0.Zero]]], 'op_:_->_`[_`].[''number.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''object.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''occurs.Sort, '__[''Nat.Sort, ''NatList.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''occurs.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''one.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''op-hook.Sort, '__[ ''Qid.Sort, ''Qid.Sort, ''QidList.Sort, ''Qid.Sort], ''Hook.Sort, '__[ 'ctor.Attr, 'format['__[''nssss.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''op_:_->_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''OpDecl.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''op_:_->_to_..Qid, '__[ ''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''OpMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''op_:_->_to_`[_`].Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''op_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''OpMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''op_to_`[_`].Qid, '__[ ''Qid.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''op_to`term_..Qid, '__[ ''Term.Sort, ''Term.Sort], ''OpMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''owise.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''pconst.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''poly.Sort, ''NeNatList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''portal.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''prec.Sort, ''Nat.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''print.Sort, ''QidList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''protecting_..Qid, ''ModuleExpression.Sort, ''Import.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''qid.Sort, ''`[String`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''QuotedIdentifierOpSymbol.Sort, ''qid.Sort], 'op-hook[''quotedIdentifierSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[''rat.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''reverse.Sort, ''NatList.Sort, ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''reverse.Sort, ''NeNatList.Sort, ''NeNatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''reverse.Sort, ''NeQidList.Sort, ''NeQidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''reverse.Sort, ''QidList.Sort, ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''rfind.Sort, '__[ ''String.Sort, ''String.Sort, ''Nat.Sort], ''FindResult.Sort, 'special['__[ 'id-hook[''StringOpSymbol.Sort, ''rfind.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'term-hook[''notFoundTerm.Sort, ''notFound.FindResult.Constant]]]], 'op_:_->_`[_`].[''right-id.Sort, ''Term.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''rl_=>_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Rule.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''s_.Sort, ''Nat.Sort, ''NzNat.Sort, '__[ 'iter.Attr, 'ctor.Attr, 'special['__['id-hook[''SuccSymbol.Sort, 'nil.TypeList], 'term-hook[''zeroTerm.Sort, ''0.Zero.Constant]]]]], 'op_:_->_`[_`].[''sameKind.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaSameKind.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''sd.Sort, '__[''Nat.Sort, ''Nat.Sort], ''Nat.Sort, '__['comm.Attr, 'special['__['id-hook[ ''CUI_NumberOpSymbol.Sort, ''sd.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]]], 'op_:_->_`[_`].[ ''sd_:=_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''AttrSet.Sort], ''StratDefinition.Sort, '__['ctor.Attr, 'format['__[ ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''size.Sort, ''NatList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''size.Sort, ''NeNatList.Sort, ''NzNat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''size.Sort, ''NeQidList.Sort, ''NzNat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''size.Sort, ''QidList.Sort, ''Nat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''smod_is_sorts_._______endsm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratModule.Sort, '__['ctor.Attr, 'gather['__[ ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''sortLeq.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaSortLeq.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''sort_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''sort_to_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SortMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''special.Sort, ''NeHookList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''sth_is_sorts_._______endsth.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratTheory.Sort, '__[ 'ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[''d.Sort, ''d.Sort, ''s.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''strat.Sort, ''NeNatList.Sort, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_:_@_`[_`]..Qid, '__[ ''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''StratDecl.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''d.Sort, ''s.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''strat_:_@_to_.Variable, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_:_@_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''StratMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''strat_to_..Qid, '__[ ''Qid.Sort, ''Qid.Sort], ''StratMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''strat_to`expr_..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort], ''StratMapping.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''string.Sort, ''Qid.Sort, ''String.Sort, 'special['__['id-hook[ ''QuotedIdentifierOpSymbol.Sort, ''string.Sort], 'op-hook[ ''quotedIdentifierSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[''subsort_<_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SubsortDecl.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''substr.Sort, '__[''String.Sort, ''Nat.Sort, ''Nat.Sort], ''String.Sort, 'special['__['id-hook[''StringOpSymbol.Sort, ''substr.Sort], 'op-hook[ ''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort]]]], 'op_:_->_`[_`].[''tail.Sort, ''NeNatList.Sort, ''NatList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''tail.Sort, ''NeQidList.Sort, ''QidList.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''term-hook.Sort, '__[ ''Qid.Sort, ''Term.Sort], ''Hook.Sort, '__['ctor.Attr, 'format['__[ ''nssss.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''test.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''th_is_sorts_._____endth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''STheory.Sort, '__['ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''n++i.Sort, ''ni.Sort, ''d.Sort, ''d.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''top.Sort, ''RuleApplication.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''true.Sort, 'nil.TypeList, ''Bool.Sort, '__[ 'ctor.Attr, 'special['id-hook[''SystemTrue.Sort, 'nil.TypeList]]]], 'op_:_->_`[_`].[''try.Sort, ''Strategy.Sort, ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''unbounded.Sort, 'nil.TypeList, ''Bound.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''union.Sort, '__[''NeQidSet.Sort, ''QidSet.Sort], ''NeQidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''union.Sort, '__[ ''QidSet.Sort, ''NeQidSet.Sort], ''NeQidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''union.Sort, '__[''QidSet.Sort, ''QidSet.Sort], ''QidSet.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''upEqs.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[EquationSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpEqs.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upImports.Sort, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[ImportList`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpImports.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upMbs.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[MembAxSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpMbs.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upModule.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[Module`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpModule.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upOpDecls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[OpDeclSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpOpDecls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upRls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[RuleSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpRls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSds.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[StratDefSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpSds.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSorts.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upStratDecls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[StratDeclSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpStratDecls.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''upSubsortDecls.Sort, '__[''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[Bool`].Kind], ''`[SubsortDeclSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpSubsortDecls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upTerm.Sort, ''Universal.Sort, ''Term.Sort, '__['poly[ 's_['0.Zero]], 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]]], 'op_:_->_`[_`].[''upView.Sort, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind, ''`[View`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpView.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''upperCase.Sort, ''String.Sort, ''String.Sort, 'special['__['id-hook[ ''StringOpSymbol.Sort, ''upperCase.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort]]]], 'op_:_->_`[_`].[ ''variant.Sort, 'nil.TypeList, ''Attr.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''view_from_to_is___endv.Sort, '__[''Header.Sort, ''ModuleExpression.Sort, ''ModuleExpression.Sort, ''SortMappingSet.Sort, ''OpMappingSet.Sort, ''StratMappingSet.Sort], ''View.Sort, '__['ctor.Attr, 'gather['__[''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort, ''&.Sort]], 'format['__[''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''d.Sort, ''n++i.Sort, ''ni.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''wellFormed.Sort, ''Module.Sort, ''Bool.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaWellFormedModule.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''wellFormed.Sort, '__[''`[Module`].Kind, ''`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaWellFormedTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''wellFormed.Sort, '__[''`[Module`].Kind, ''`[Substitution?`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaWellFormedSubstitution.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''ModuleExpression.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''with-parens.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''with-sorts.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''xmatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort, '__['ctor.Attr, 'prec['s_^21[ '0.Zero]]]], 'op_:_->_`[_`].[''xmatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''|_|.Sort, ''NeQidSet.Sort, ''NzNat.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''|_|.Sort, ''QidSet.Sort, ''Nat.Sort, 'none.AttrSet]], 'none.MembAxSet, '__['eq_=_`[_`].['_`[_`][ ''$applySubstitution.Sort, '_`,_[''Q:Qid.Variable, ''S:Substitution.Variable]], ''Q:Qid.Variable, 'owise.Attr], 'eq_=_`[_`].[ '_`[_`][''$applySubstitution.Sort, '_`,_[''V:Variable.Variable, '_`[_`][ ''_;_.Sort, '_`,_[''S:Substitution.Variable, '_`[_`][''_<-_.Sort, '_`,_[ ''V:Variable.Variable, ''T:Term.Variable]]]]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$applySubstitution.Sort, '_`,_[ '_`[_`][''_`,_.Qid, '_`,_[''T:Term.Variable, ''TL:NeTermList.Variable]], ''S:Substitution.Variable]], '_`[_`][''_`,_.Qid, '_`,_['_`[_`][ ''$applySubstitution.Sort, '_`,_[''T:Term.Variable, ''S:Substitution.Variable]], '_`[_`][''$applySubstitution.Sort, '_`,_[ ''TL:NeTermList.Variable, ''S:Substitution.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$applySubstitution.Sort, '_`,_['_`[_`][''_`[_`].Qid, '_`,_[''Q:Qid.Variable, ''TL:NeTermList.Variable]], ''S:Substitution.Variable]], '_`[_`][''_`[_`].Qid, '_`,_[''Q:Qid.Variable, '_`[_`][''$applySubstitution.Sort, '_`,_[''TL:NeTermList.Variable, ''S:Substitution.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$card.Sort, '_`,_[''none.EmptyQidSet.Constant, ''C:Nat.Variable]], ''C:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$card.Sort, '_`,_[ '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''C:Nat.Variable]], '_`[_`][''$card.Sort, '_`,_[''S:QidSet.Variable, '_`[_`][''_+_.Sort, '_`,_[''C:Nat.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]]]]], 'owise.Attr], 'eq_=_`[_`].['_`[_`][''$card.Sort, '_`,_['_`[_`][''_;_.Sort, '_`,_[''N:NeQidSet.Variable, ''N:NeQidSet.Variable, ''S:QidSet.Variable]], ''C:Nat.Variable]], '_`[_`][ ''$card.Sort, '_`,_['_`[_`][''_;_.Sort, '_`,_[''N:NeQidSet.Variable, ''S:QidSet.Variable]], ''C:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''$diff.Sort, '_`,_[''none.EmptyQidSet.Constant, ''S':QidSet.Variable, ''A:QidSet.Variable]], ''A:QidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$diff.Sort, '_`,_['_`[_`][ ''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''S':QidSet.Variable, ''A:QidSet.Variable]], '_`[_`][''$diff.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable, '_`[_`][''if_then_else_fi.Sort, '_`,_['_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, ''S':QidSet.Variable]], ''A:QidSet.Variable, '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''A:QidSet.Variable]]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$intersect.Sort, '_`,_[''none.EmptyQidSet.Constant, ''S':QidSet.Variable, ''A:QidSet.Variable]], ''A:QidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''$intersect.Sort, '_`,_['_`[_`][''_;_.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]], ''S':QidSet.Variable, ''A:QidSet.Variable]], '_`[_`][''$intersect.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable, '_`[_`][''if_then_else_fi.Sort, '_`,_['_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, ''S':QidSet.Variable]], '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''A:QidSet.Variable]], ''A:QidSet.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$reverse.Sort, '_`,_[''nil.NatList.Constant, ''A:NatList.Variable]], ''A:NatList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$reverse.Sort, '_`,_[''nil.TypeList.Constant, ''A:QidList.Variable]], ''A:QidList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$reverse.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]], ''A:NatList.Variable]], '_`[_`][''$reverse.Sort, '_`,_[ ''L:NatList.Variable, '_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''A:NatList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$reverse.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''L:QidList.Variable]], ''A:QidList.Variable]], '_`[_`][''$reverse.Sort, '_`,_[''L:QidList.Variable, '_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''A:QidList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''$size.Sort, '_`,_[''nil.NatList.Constant, ''C:Nat.Variable]], ''C:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$size.Sort, '_`,_[ ''nil.TypeList.Constant, ''C:Nat.Variable]], ''C:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$size.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]], ''C:Nat.Variable]], '_`[_`][''$size.Sort, '_`,_[''L:NatList.Variable, '_`[_`][''_+_.Sort, '_`,_[''C:Nat.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$size.Sort, '_`,_['_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''L:QidList.Variable]], ''C:Nat.Variable]], '_`[_`][''$size.Sort, '_`,_[''L:QidList.Variable, '_`[_`][''_+_.Sort, '_`,_[''C:Nat.Variable, '_`[_`][''s_.Sort, ''0.Zero.Constant]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_;_.Sort, '_`,_[ ''A:Assignment.Variable, ''A:Assignment.Variable]], ''A:Assignment.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_;_.Sort, '_`,_[''N:NeQidSet.Variable, ''N:NeQidSet.Variable]], ''N:NeQidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_;_.Sort, '_`,_[''T:TypeList.Variable, ''T:TypeList.Variable]], ''T:TypeList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_\_.Sort, '_`,_[''S:QidSet.Variable, ''N:NeQidSet.Variable]], '_`[_`][''$diff.Sort, '_`,_[''S:QidSet.Variable, ''N:NeQidSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''_\_.Sort, '_`,_[''S:QidSet.Variable, ''none.EmptyQidSet.Constant]], ''S:QidSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''A:Attr.Variable, ''A:Attr.Variable]], ''A:Attr.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''D:StratDefinition.Variable, ''D:StratDefinition.Variable]], ''D:StratDefinition.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''E:Equation.Variable, ''E:Equation.Variable]], ''E:Equation.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''M:MembAx.Variable, ''M:MembAx.Variable]], ''M:MembAx.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''__.Sort, '_`,_[''O:OpDecl.Variable, ''O:OpDecl.Variable]], ''O:OpDecl.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''O:OpMapping.Variable, ''O:OpMapping.Variable]], ''O:OpMapping.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[ ''O:StratDecl.Variable, ''O:StratDecl.Variable]], ''O:StratDecl.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''R:Rule.Variable, ''R:Rule.Variable]], ''R:Rule.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''__.Sort, '_`,_[''S:SortMapping.Variable, ''S:SortMapping.Variable]], ''S:SortMapping.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''S:StratMapping.Variable, ''S:StratMapping.Variable]], ''S:StratMapping.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''__.Sort, '_`,_[''S:SubsortDecl.Variable, ''S:SubsortDecl.Variable]], ''S:SubsortDecl.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_`,_.Qid, '_`,_[''U:UsingPair.Variable, ''U:UsingPair.Variable]], ''U:UsingPair.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and-then_.Sort, '_`,_[''false.Bool.Constant, ''B:`[Bool`].Variable]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and-then_.Sort, '_`,_[''true.Bool.Constant, ''B:`[Bool`].Variable]], ''B:`[Bool`].Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''A:Bool.Variable]], ''A:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, '_`[_`][''_xor_.Sort, '_`,_[ ''B:Bool.Variable, ''C:Bool.Variable]]]], '_`[_`][''_xor_.Sort, '_`,_[ '_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''C:Bool.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and_.Sort, '_`,_[ ''false.Bool.Constant, ''A:Bool.Variable]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_and_.Sort, '_`,_[ ''true.Bool.Constant, ''A:Bool.Variable]], ''A:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_implies_.Sort, '_`,_[ ''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''not_.Sort, '_`[_`][ ''_xor_.Sort, '_`,_[''A:Bool.Variable, '_`[_`][''_and_.Sort, '_`,_[ ''A:Bool.Variable, ''B:Bool.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''false.Bool.Constant, 'owise.Attr], 'eq_=_`[_`].['_`[_`][''_in_.Sort, '_`,_[''E:Qid.Variable, '_`[_`][''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]]]], ''true.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_or-else_.Sort, '_`,_[''false.Bool.Constant, ''B:`[Bool`].Variable]], ''B:`[Bool`].Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_or-else_.Sort, '_`,_[''true.Bool.Constant, ''B:`[Bool`].Variable]], ''true.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_or_.Sort, '_`,_[''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''_xor_.Sort, '_`,_['_`[_`][''_and_.Sort, '_`,_[''A:Bool.Variable, ''B:Bool.Variable]], '_`[_`][''_xor_.Sort, '_`,_[ ''A:Bool.Variable, ''B:Bool.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_psubset_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]], '_`[_`][''_and-then_.Sort, '_`,_['_`[_`][ ''_=/=_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]], '_`[_`][ ''_subset_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_subset_.Sort, '_`,_[ ''none.EmptyQidSet.Constant, ''S':QidSet.Variable]], ''true.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_subset_.Sort, '_`,_['_`[_`][ ''_;_.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''S':QidSet.Variable]], '_`[_`][''_and-then_.Sort, '_`,_['_`[_`][ ''_in_.Sort, '_`,_[''E:Qid.Variable, ''S':QidSet.Variable]], '_`[_`][ ''_subset_.Sort, '_`,_[''S:QidSet.Variable, ''S':QidSet.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''_xor_.Sort, '_`,_[''A:Bool.Variable, ''A:Bool.Variable]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''_xor_.Sort, '_`,_[''false.Bool.Constant, ''A:Bool.Variable]], ''A:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''`[_`].Kind, ''Q:Qid.Variable], '_`[_`][''sth_is_sorts_._______endsth.Constant, '_`,_[ ''Q:Qid.Variable, '_`[_`][''including_..Qid, ''Q:Qid.Variable], ''none.EmptyQidSet.Constant, ''none.SubsortDeclSet.Constant, ''none.OpDeclSet.Constant, ''none.MembAxSet.Constant, ''none.EquationSet.Constant, ''none.RuleSet.Constant, ''none.StratDeclSet.Constant, ''none.StratDefSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''append.Sort, '_`,_[ ''A:NatList.Variable, ''L:NatList.Variable]], '_`[_`][''__.Sort, '_`,_[ ''A:NatList.Variable, ''L:NatList.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''append.Sort, '_`,_[''A:QidList.Variable, ''L:QidList.Variable]], '_`[_`][''__.Sort, '_`,_[''A:QidList.Variable, ''L:QidList.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''applySubstitution.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''S:Substitution.Variable]], '_`[_`][''getTerm.Sort, '_`[_`][''metaNormalize.Sort, '_`,_[ ''M:Module.Variable, '_`[_`][''$applySubstitution.Sort, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''delete.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], ''S:QidSet.Variable, 'owise.Attr], 'eq_=_`[_`].[ '_`[_`][''delete.Sort, '_`,_[''E:Qid.Variable, '_`[_`][''_;_.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]]]], '_`[_`][''delete.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''front.Sort, '_`[_`][''__.Sort, '_`,_[''L:NatList.Variable, ''E:Nat.Variable]]], ''L:NatList.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''front.Sort, '_`[_`][''__.Sort, '_`,_[''L:QidList.Variable, ''E:Qid.Variable]]], ''L:QidList.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getAccumulatedSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''A:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getAccumulatedSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''A:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getContext.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''S:Substitution.Variable, ''C:Context.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getEqs.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getEqs.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getEqs.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''EQS:EquationSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getFrom.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''ME:ModuleExpression.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getImports.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getImports.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getImports.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getImports.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getImports.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getImports.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''IL:ImportList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialTerm.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialType.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getLabel.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''L:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getLabel.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''L:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getLhsSubstitution.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''LS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getMbs.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getMbs.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMbs.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''MAS:MembAxSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMoreVariantsInLayerFlag.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''B:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getName.Sort, ''C:Constant.Variable], '_`[_`][''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], ''0.Zero.Constant, '_`[_`][''rfind.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], ''".".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''C:Constant.Variable]]]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, ''V:Variable.Variable], '_`[_`][ ''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''V:Variable.Variable], ''0.Zero.Constant, '_`[_`][''rfind.Sort, '_`,_[ '_`[_`][''string.Sort, ''V:Variable.Variable], ''":".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''V:Variable.Variable]]]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_['_`[_`][''_`{_`}.Sort, '_`,_[ ''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''fth_is_sorts_.____endfth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''mod_is_sorts_._____endm.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getName.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ '_`[_`][''_`{_`}.Sort, '_`,_[''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_['_`[_`][''_`{_`}.Sort, '_`,_[ ''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getName.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[ ''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getName.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_['_`[_`][''_`{_`}.Sort, '_`,_[ ''Q:Qid.Variable, ''PDL:ParameterDeclList.Variable]], ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOpMappings.Sort, '_`[_`][ ''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''OMS:OpMappingSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getOps.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getOps.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getOps.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''OPDS:OpDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getParent.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''P:Parent.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRhsSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''RS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRls.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.RuleSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRls.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.RuleSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRls.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRls.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRls.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRls.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''RLS:RuleSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRule.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''R:Rule.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRuleSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''RS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSds.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSds.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDFS:StratDefSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDFS:StratDefSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSds.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDefSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSortMappings.Sort, '_`[_`][ ''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''SMS:SortMappingSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSorts.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSorts.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSorts.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SS:SortSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStateVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''SV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getStratMappings.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''TMS:StratMappingSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStrats.Sort, '_`[_`][''fmod_is_sorts_.____endfm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStrats.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStrats.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStrats.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDS:StratDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStrats.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''STDS:StratDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getStrats.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''none.StratDeclSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''fmod_is_sorts_.____endfm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubsorts.Sort, '_`[_`][''fth_is_sorts_.____endfth.Constant, '_`,_[ ''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubsorts.Sort, '_`[_`][''mod_is_sorts_._____endm.Constant, '_`,_[ ''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''smod_is_sorts_._______endsm.Constant, '_`,_[''H:Header.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''sth_is_sorts_._______endsth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable, ''STDS:StratDeclSet.Variable, ''STDFS:StratDefSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubsorts.Sort, '_`[_`][ ''th_is_sorts_._____endth.Constant, '_`,_[''Q:Qid.Variable, ''IL:ImportList.Variable, ''SS:SortSet.Variable, ''SSDS:SubsortDeclSet.Variable, ''OPDS:OpDeclSet.Variable, ''MAS:MembAxSet.Variable, ''EQS:EquationSet.Variable, ''RLS:RuleSet.Variable]]], ''SSDS:SubsortDeclSet.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[ ''S:Substitution.Variable, ''C:Context.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[ ''S:Substitution.Variable, ''V:Qid.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getTermSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''TS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTo.Sort, '_`[_`][''view_from_to_is___endv.Sort, '_`,_[''Q:Qid.Variable, ''ME:ModuleExpression.Variable, ''ME':ModuleExpression.Variable, ''SMS:SortMappingSet.Variable, ''OMS:OpMappingSet.Variable, ''TMS:StratMappingSet.Variable]]], ''ME':ModuleExpression.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getTrace.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:NarrowingTrace.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, ''C:Constant.Variable], '_`[_`][ ''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], '_`[_`][''_+_.Sort, '_`,_['_`[_`][''s_.Sort, ''0.Zero.Constant], '_`[_`][''rfind.Sort, '_`,_['_`[_`][''string.Sort, ''C:Constant.Variable], ''".".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''C:Constant.Variable]]]]]], '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''C:Constant.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, ''V:Variable.Variable], '_`[_`][ ''qid.Sort, '_`[_`][''substr.Sort, '_`,_['_`[_`][''string.Sort, ''V:Variable.Variable], '_`[_`][''_+_.Sort, '_`,_['_`[_`][''s_.Sort, ''0.Zero.Constant], '_`[_`][''rfind.Sort, '_`,_['_`[_`][''string.Sort, ''V:Variable.Variable], ''":".Char.Constant, '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''V:Variable.Variable]]]]]], '_`[_`][''length.Sort, '_`[_`][''string.Sort, ''V:Variable.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getUnifierVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifierVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifierVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getVariableFamily.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''S:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''head.Sort, '_`[_`][''__.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]]], ''E:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''head.Sort, '_`[_`][''__.Sort, '_`,_[''E:Qid.Variable, ''L:QidList.Variable]]], ''E:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''insert.Sort, '_`,_[''E:Qid.Variable, ''S:QidSet.Variable]], '_`[_`][''_;_.Sort, '_`,_[ ''E:Qid.Variable, ''S:QidSet.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''intersection.Sort, '_`,_[''S:QidSet.Variable, ''N:NeQidSet.Variable]], '_`[_`][''$intersect.Sort, '_`,_[ ''S:QidSet.Variable, ''N:NeQidSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''intersection.Sort, '_`,_[ ''S:QidSet.Variable, ''none.EmptyQidSet.Constant]], ''none.EmptyQidSet.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''last.Sort, '_`[_`][''__.Sort, '_`,_[''L:NatList.Variable, ''E:Nat.Variable]]], ''E:Nat.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''last.Sort, '_`[_`][''__.Sort, '_`,_[''L:QidList.Variable, ''E:Qid.Variable]]], ''E:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''metaNarrowingApply.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaNarrowingApply.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaNarrowingSearch.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaNarrowingSearch.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaNarrowingSearchPath.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''N:Nat.Variable]], '_`[_`][ ''metaNarrowingSearchPath.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaParse.Sort, '_`,_[''M:Module.Variable, ''Q:QidList.Variable, ''T:Type?.Variable]], '_`[_`][''metaParse.Sort, '_`,_[''M:Module.Variable, ''none.EmptyQidSet.Constant, ''Q:QidList.Variable, ''T:Type?.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''none.EmptyQidSet.Constant, ''T:Term.Variable, '_`[_`][''__.Sort, '_`,_[''mixfix.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[''flat.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[ ''format.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[ ''number.PrintOption.Constant, ''rat.PrintOption.Constant]]]]]]]], ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''none.EmptyQidSet.Constant, ''T:Term.Variable, ''P:PrintOptionSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''VS:VariableSet.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''VS:VariableSet.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaVariantDisjointUnify.Sort, '_`,_[ ''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][ ''metaVariantDisjointUnify.Sort, '_`,_[''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaVariantUnify.Sort, '_`,_[''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaVariantUnify.Sort, '_`,_[ ''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''not_.Sort, ''A:Bool.Variable], '_`[_`][''_xor_.Sort, '_`,_[''true.Bool.Constant, ''A:Bool.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Nat.Variable, ''nil.NatList.Constant]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Nat.Variable, '_`[_`][''__.Sort, '_`,_[''E':Nat.Variable, ''L:NatList.Variable]]]], '_`[_`][''if_then_else_fi.Sort, '_`,_['_`[_`][''_==_.Sort, '_`,_[ ''E:Nat.Variable, ''E':Nat.Variable]], ''true.Bool.Constant, '_`[_`][ ''occurs.Sort, '_`,_[''E:Nat.Variable, ''L:NatList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Qid.Variable, ''nil.TypeList.Constant]], ''false.Bool.Constant, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''occurs.Sort, '_`,_[''E:Qid.Variable, '_`[_`][ ''__.Sort, '_`,_[''E':Qid.Variable, ''L:QidList.Variable]]]], '_`[_`][ ''if_then_else_fi.Sort, '_`,_['_`[_`][''_==_.Sort, '_`,_[''E:Qid.Variable, ''E':Qid.Variable]], ''true.Bool.Constant, '_`[_`][''occurs.Sort, '_`,_[ ''E:Qid.Variable, ''L:QidList.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''reverse.Sort, ''L:NatList.Variable], '_`[_`][''$reverse.Sort, '_`,_[''L:NatList.Variable, ''nil.NatList.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''reverse.Sort, ''L:QidList.Variable], '_`[_`][ ''$reverse.Sort, '_`,_[''L:QidList.Variable, ''nil.TypeList.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''size.Sort, ''L:NatList.Variable], '_`[_`][''$size.Sort, '_`,_[''L:NatList.Variable, ''0.Zero.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''size.Sort, ''L:QidList.Variable], '_`[_`][''$size.Sort, '_`,_[''L:QidList.Variable, ''0.Zero.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''tail.Sort, '_`[_`][''__.Sort, '_`,_[ ''E:Nat.Variable, ''L:NatList.Variable]]], ''L:NatList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''tail.Sort, '_`[_`][''__.Sort, '_`,_[ ''E:Qid.Variable, ''L:QidList.Variable]]], ''L:QidList.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''union.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable]], '_`[_`][''_;_.Sort, '_`,_[ ''S:QidSet.Variable, ''S':QidSet.Variable]], 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''|_|.Sort, ''S:QidSet.Variable], '_`[_`][''$card.Sort, '_`,_[ ''S:QidSet.Variable, ''0.Zero.Constant]], 'none.AttrSet]]], 'FModule} ========================================== reduce in META-LEVEL : metaReduce(upModule('META-LEVEL, true), 'upModule[ upTerm('META-LEVEL), upTerm(true)]) == {upTerm(upModule('META-LEVEL, true)), 'FModule} . rewrites: 9 result Bool: false Bye. Maude-Maude3.5.1/tests/Meta/metaUp20000775000175000017510000000033015036121435016347 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaUp2.maude -no-banner -no-advise \ > metaUp2.out 2>&1 diff $srcdir/metaUp2.expected metaUp2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaUp.maude0000664000175000017510000000411015036121435017354 0ustar nileshnileshset show timing off . set show advisories off . mod ATTR-TEST is sort Foo . ops a b c d e : -> Foo . op f : Foo Foo -> Foo . var Y : Foo . eq [first]: f(X:Foo, a) = X:Foo [metadata "this is the first equation"]. eq f(b, Y) = b [metadata "this is the second equation"]. mb [baz]: a : Foo [metadata "this is an mb"]. rl a => b [label r1] . endm red in META-LEVEL : upEqs('ATTR-TEST, true) . red in META-LEVEL : upRls('ATTR-TEST, true) . red in META-LEVEL : upMbs('ATTR-TEST, true) . red in META-LEVEL : upEqs('ATTR-TEST, false) . red in META-LEVEL : upRls('ATTR-TEST, false) . red in META-LEVEL : upMbs('ATTR-TEST, false) . select META-LEVEL . red upRls('BOOL, true) . mod KNIGHT is pr INT . sorts Pair List . subsort Pair < List . op nil : -> List . op __ : List List -> List [assoc id: nil] . op [_,_] : Int Int -> Pair . op move_ : Pair -> [Pair] . op legal : Pair -> Bool . op contains : List Pair -> Bool . op knight : Int -> [List] . vars N X Y : Int . var P Q : Pair . var L : List . eq legal([X, Y]) = X >= 1 and Y >= 1 and X <= 3 and Y <= 4 . eq contains(nil, P) = false . eq contains(Q L, P) = if P == Q then true else contains(L, P) fi . rl knight(0) => [1, 1] . crl knight(N) => L P Q if N > 0 /\ knight(N - 1) => L P /\ move P => Q /\ legal(Q) /\ not(contains(L P, Q)) . rl move [X, Y] => [X + 2, Y + 1] . rl move [X, Y] => [X + 2, Y - 1] . rl move [X, Y] => [X - 2, Y + 1] . rl move [X, Y] => [X - 2, Y - 1] . rl move [X, Y] => [X + 1, Y + 2] . rl move [X, Y] => [X + 1, Y - 2] . rl move [X, Y] => [X - 1, Y + 2] . rl move [X, Y] => [X - 1, Y - 2] . endm select META-LEVEL . red upRls('KNIGHT, true) . mod INTROSPECTION is inc META-LEVEL . op rules : -> RuleSet . rl rules => upRls('INTROSPECTION, false) . endm rew rules . mod SELF-REFLECTION is inc INTROSPECTION . op allRules : -> RuleSet . rl allRules => upRls('SELF-REFLECTION, true) . op myRules : -> RuleSet . rl myRules => upRls('SELF-REFLECTION, false) . endm rew myRules . rew allRules . red in META-LEVEL : upEqs('META-LEVEL, true) . Maude-Maude3.5.1/tests/Meta/metaUp.expected0000664000175000017510000010277415036121435020101 0ustar nileshnilesh========================================== reduce in META-LEVEL : upEqs('ATTR-TEST, true) . rewrites: 1 result EquationSet: eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq 'f['X:Foo, 'a.Foo] = 'X:Foo [label('first) metadata( "this is the first equation")] . eq 'f['b.Foo, 'Y:Foo] = 'b.Foo [metadata("this is the second equation")] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . ========================================== reduce in META-LEVEL : upRls('ATTR-TEST, true) . rewrites: 1 result Rule: rl 'a.Foo => 'b.Foo [label('r1)] . ========================================== reduce in META-LEVEL : upMbs('ATTR-TEST, true) . rewrites: 1 result MembAx: mb 'a.Foo : 'Foo [label('baz) metadata("this is an mb")] . ========================================== reduce in META-LEVEL : upEqs('ATTR-TEST, false) . rewrites: 1 result EquationSet: eq 'f['X:Foo, 'a.Foo] = 'X:Foo [label('first) metadata( "this is the first equation")] . eq 'f['b.Foo, 'Y:Foo] = 'b.Foo [metadata("this is the second equation")] . ========================================== reduce in META-LEVEL : upRls('ATTR-TEST, false) . rewrites: 1 result Rule: rl 'a.Foo => 'b.Foo [label('r1)] . ========================================== reduce in META-LEVEL : upMbs('ATTR-TEST, false) . rewrites: 1 result MembAx: mb 'a.Foo : 'Foo [label('baz) metadata("this is an mb")] . ========================================== reduce in META-LEVEL : upRls('BOOL, true) . rewrites: 1 result RuleSet: (none).RuleSet ========================================== reduce in META-LEVEL : upRls('KNIGHT, true) . rewrites: 1 result RuleSet: rl 'knight['0.Zero] => '`[_`,_`]['s_['0.Zero], 's_['0.Zero]] [ none] . rl 'move_['`[_`,_`]['X:Int, 'Y:Int]] => '`[_`,_`]['_+_['X:Int, 's_['0.Zero]], '_+_['Y:Int, 's_^2['0.Zero]]] [none] . rl 'move_['`[_`,_`]['X:Int, 'Y:Int]] => '`[_`,_`]['_+_['X:Int, 's_['0.Zero]], '_-_['Y:Int, 's_^2['0.Zero]]] [none] . rl 'move_['`[_`,_`]['X:Int, 'Y:Int]] => '`[_`,_`]['_+_['X:Int, 's_^2['0.Zero]], '_+_['Y:Int, 's_['0.Zero]]] [none] . rl 'move_['`[_`,_`]['X:Int, 'Y:Int]] => '`[_`,_`]['_+_['X:Int, 's_^2['0.Zero]], '_-_['Y:Int, 's_['0.Zero]]] [none] . rl 'move_['`[_`,_`]['X:Int, 'Y:Int]] => '`[_`,_`]['_-_['X:Int, 's_['0.Zero]], '_+_['Y:Int, 's_^2['0.Zero]]] [none] . rl 'move_['`[_`,_`]['X:Int, 'Y:Int]] => '`[_`,_`]['_-_['X:Int, 's_['0.Zero]], '_-_['Y:Int, 's_^2['0.Zero]]] [none] . rl 'move_['`[_`,_`]['X:Int, 'Y:Int]] => '`[_`,_`]['_-_['X:Int, 's_^2['0.Zero]], '_+_['Y:Int, 's_['0.Zero]]] [none] . rl 'move_['`[_`,_`]['X:Int, 'Y:Int]] => '`[_`,_`]['_-_['X:Int, 's_^2['0.Zero]], '_-_['Y:Int, 's_['0.Zero]]] [none] . crl 'knight['N:Int] => '__['L:List, '__['P:Pair, 'Q:Pair]] if '_>_['N:Int, '0.Zero] = 'true.Bool /\ 'knight['_-_['N:Int, 's_['0.Zero]]] => '__[ 'L:List, 'P:Pair] /\ 'move_['P:Pair] => 'Q:Pair /\ 'legal['Q:Pair] = 'true.Bool /\ 'not_['contains['__['L:List, 'P:Pair], 'Q:Pair]] = 'true.Bool [none] . ========================================== rewrite in INTROSPECTION : rules . rewrites: 2 result Rule: rl 'rules.RuleSet => 'upRls[''INTROSPECTION.Sort, 'false.Bool] [ none] . ========================================== rewrite in SELF-REFLECTION : myRules . rewrites: 2 result RuleSet: rl 'allRules.RuleSet => 'upRls[''SELF-REFLECTION.Sort, 'true.Bool] [none] . rl 'myRules.RuleSet => 'upRls[''SELF-REFLECTION.Sort, 'false.Bool] [none] . ========================================== rewrite in SELF-REFLECTION : allRules . rewrites: 2 result RuleSet: rl 'allRules.RuleSet => 'upRls[''SELF-REFLECTION.Sort, 'true.Bool] [none] . rl 'myRules.RuleSet => 'upRls[''SELF-REFLECTION.Sort, 'false.Bool] [none] . rl 'rules.RuleSet => 'upRls[''INTROSPECTION.Sort, 'false.Bool] [none] . ========================================== reduce in META-LEVEL : upEqs('META-LEVEL, true) . rewrites: 1 result EquationSet: eq '$applySubstitution['Q:Qid, 'S:Substitution] = 'Q:Qid [ owise] . eq '$applySubstitution['V:Variable, '_;_['S:Substitution, '_<-_['V:Variable, 'T:Term]]] = 'T:Term [none] . eq '$applySubstitution['_`,_['T:Term, 'TL:NeTermList], 'S:Substitution] = '_`,_['$applySubstitution['T:Term, 'S:Substitution], '$applySubstitution[ 'TL:NeTermList, 'S:Substitution]] [none] . eq '$applySubstitution['_`[_`]['Q:Qid, 'TL:NeTermList], 'S:Substitution] = '_`[_`]['Q:Qid, '$applySubstitution['TL:NeTermList, 'S:Substitution]] [ none] . eq '$card['none.EmptyQidSet, 'C:Nat] = 'C:Nat [none] . eq '$card['_;_['E:Qid, 'S:QidSet], 'C:Nat] = '$card['S:QidSet, '_+_['C:Nat, 's_['0.Zero]]] [owise] . eq '$card['_;_['N:NeQidSet, 'N:NeQidSet, 'S:QidSet], 'C:Nat] = '$card['_;_[ 'N:NeQidSet, 'S:QidSet], 'C:Nat] [none] . eq '$diff['none.EmptyQidSet, 'S':QidSet, 'A:QidSet] = 'A:QidSet [none] . eq '$diff['_;_['E:Qid, 'S:QidSet], 'S':QidSet, 'A:QidSet] = '$diff['S:QidSet, 'S':QidSet, 'if_then_else_fi['_in_['E:Qid, 'S':QidSet], 'A:QidSet, '_;_[ 'E:Qid, 'A:QidSet]]] [none] . eq '$intersect['none.EmptyQidSet, 'S':QidSet, 'A:QidSet] = 'A:QidSet [none] . eq '$intersect['_;_['E:Qid, 'S:QidSet], 'S':QidSet, 'A:QidSet] = '$intersect[ 'S:QidSet, 'S':QidSet, 'if_then_else_fi['_in_['E:Qid, 'S':QidSet], '_;_[ 'E:Qid, 'A:QidSet], 'A:QidSet]] [none] . eq '$reverse['nil.NatList, 'A:NatList] = 'A:NatList [none] . eq '$reverse['nil.TypeList, 'A:QidList] = 'A:QidList [none] . eq '$reverse['__['E:Nat, 'L:NatList], 'A:NatList] = '$reverse['L:NatList, '__[ 'E:Nat, 'A:NatList]] [none] . eq '$reverse['__['E:Qid, 'L:QidList], 'A:QidList] = '$reverse['L:QidList, '__[ 'E:Qid, 'A:QidList]] [none] . eq '$size['nil.NatList, 'C:Nat] = 'C:Nat [none] . eq '$size['nil.TypeList, 'C:Nat] = 'C:Nat [none] . eq '$size['__['E:Nat, 'L:NatList], 'C:Nat] = '$size['L:NatList, '_+_['C:Nat, 's_['0.Zero]]] [none] . eq '$size['__['E:Qid, 'L:QidList], 'C:Nat] = '$size['L:QidList, '_+_['C:Nat, 's_['0.Zero]]] [none] . eq '_;_['A:Assignment, 'A:Assignment] = 'A:Assignment [none] . eq '_;_['N:NeQidSet, 'N:NeQidSet] = 'N:NeQidSet [none] . eq '_;_['T:TypeList, 'T:TypeList] = 'T:TypeList [none] . eq '_\_['S:QidSet, 'N:NeQidSet] = '$diff['S:QidSet, 'N:NeQidSet, 'none.EmptyQidSet] [none] . eq '_\_['S:QidSet, 'none.EmptyQidSet] = 'S:QidSet [none] . eq '__['A:Attr, 'A:Attr] = 'A:Attr [none] . eq '__['D:StratDefinition, 'D:StratDefinition] = 'D:StratDefinition [none] . eq '__['E:Equation, 'E:Equation] = 'E:Equation [none] . eq '__['M:MembAx, 'M:MembAx] = 'M:MembAx [none] . eq '__['O:OpDecl, 'O:OpDecl] = 'O:OpDecl [none] . eq '__['O:OpMapping, 'O:OpMapping] = 'O:OpMapping [none] . eq '__['O:StratDecl, 'O:StratDecl] = 'O:StratDecl [none] . eq '__['R:Rule, 'R:Rule] = 'R:Rule [none] . eq '__['S:SortMapping, 'S:SortMapping] = 'S:SortMapping [none] . eq '__['S:StratMapping, 'S:StratMapping] = 'S:StratMapping [none] . eq '__['S:SubsortDecl, 'S:SubsortDecl] = 'S:SubsortDecl [none] . eq '_`,_['U:UsingPair, 'U:UsingPair] = 'U:UsingPair [none] . eq '_and-then_['false.Bool, 'B:`[Bool`]] = 'false.Bool [none] . eq '_and-then_['true.Bool, 'B:`[Bool`]] = 'B:`[Bool`] [none] . eq '_and_['A:Bool, 'A:Bool] = 'A:Bool [none] . eq '_and_['A:Bool, '_xor_['B:Bool, 'C:Bool]] = '_xor_['_and_['A:Bool, 'B:Bool], '_and_['A:Bool, 'C:Bool]] [none] . eq '_and_['false.Bool, 'A:Bool] = 'false.Bool [none] . eq '_and_['true.Bool, 'A:Bool] = 'A:Bool [none] . eq '_implies_['A:Bool, 'B:Bool] = 'not_['_xor_['A:Bool, '_and_['A:Bool, 'B:Bool]]] [none] . eq '_in_['E:Qid, 'S:QidSet] = 'false.Bool [owise] . eq '_in_['E:Qid, '_;_['E:Qid, 'S:QidSet]] = 'true.Bool [none] . eq '_or-else_['false.Bool, 'B:`[Bool`]] = 'B:`[Bool`] [none] . eq '_or-else_['true.Bool, 'B:`[Bool`]] = 'true.Bool [none] . eq '_or_['A:Bool, 'B:Bool] = '_xor_['_and_['A:Bool, 'B:Bool], '_xor_['A:Bool, 'B:Bool]] [none] . eq '_psubset_['S:QidSet, 'S':QidSet] = '_and-then_['_=/=_['S:QidSet, 'S':QidSet], '_subset_['S:QidSet, 'S':QidSet]] [none] . eq '_subset_['none.EmptyQidSet, 'S':QidSet] = 'true.Bool [none] . eq '_subset_['_;_['E:Qid, 'S:QidSet], 'S':QidSet] = '_and-then_['_in_['E:Qid, 'S':QidSet], '_subset_['S:QidSet, 'S':QidSet]] [none] . eq '_xor_['A:Bool, 'A:Bool] = 'false.Bool [none] . eq '_xor_['false.Bool, 'A:Bool] = 'A:Bool [none] . eq '`[_`]['Q:Qid] = 'sth_is_sorts_._______endsth['Q:Qid, 'including_.['Q:Qid], 'none.EmptyQidSet, 'none.SubsortDeclSet, 'none.OpDeclSet, 'none.MembAxSet, 'none.EquationSet, 'none.RuleSet, 'none.StratDeclSet, 'none.StratDefSet] [ none] . eq 'append['A:NatList, 'L:NatList] = '__['A:NatList, 'L:NatList] [none] . eq 'append['A:QidList, 'L:QidList] = '__['A:QidList, 'L:QidList] [none] . eq 'applySubstitution['M:Module, 'T:Term, 'S:Substitution] = 'getTerm[ 'metaNormalize['M:Module, '$applySubstitution['T:Term, 'S:Substitution]]] [ none] . eq 'delete['E:Qid, 'S:QidSet] = 'S:QidSet [owise] . eq 'delete['E:Qid, '_;_['E:Qid, 'S:QidSet]] = 'delete['E:Qid, 'S:QidSet] [none] . eq 'front['__['L:NatList, 'E:Nat]] = 'L:NatList [none] . eq 'front['__['L:QidList, 'E:Qid]] = 'L:QidList [none] . eq 'getAccumulatedSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'A:Substitution [none] . eq 'getAccumulatedSubstitution['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'A:Substitution [ none] . eq 'getContext['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'C:Context [none] . eq 'getContext['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'C:Context [none] . eq 'getContext['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'C:Context [none] . eq 'getContext['`{_`,_`}['S:Substitution, 'C:Context]] = 'C:Context [none] . eq 'getEqs['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'EQS:EquationSet [none] . eq 'getEqs['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'EQS:EquationSet [none] . eq 'getEqs['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'EQS:EquationSet [none] . eq 'getEqs['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'EQS:EquationSet [ none] . eq 'getEqs['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'EQS:EquationSet [ none] . eq 'getEqs['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'EQS:EquationSet [none] . eq 'getFrom['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'ME:ModuleExpression [none] . eq 'getImports['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'IL:ImportList [none] . eq 'getImports['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'IL:ImportList [none] . eq 'getImports['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'IL:ImportList [none] . eq 'getImports['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'IL:ImportList [none] . eq 'getImports['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'IL:ImportList [none] . eq 'getImports['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'IL:ImportList [none] . eq 'getInitialSubstitution['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'S:Substitution [none] . eq 'getInitialTerm['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:Term [none] . eq 'getInitialType['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:Type [none] . eq 'getLabel['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'L:Qid [none] . eq 'getLabel['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'L:Qid [none] . eq 'getLhsSubstitution['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'LS:Substitution [none] . eq 'getMbs['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'MAS:MembAxSet [none] . eq 'getMbs['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'MAS:MembAxSet [ none] . eq 'getMbs['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'MAS:MembAxSet [ none] . eq 'getMbs['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'MAS:MembAxSet [none] . eq 'getMoreVariantsInLayerFlag['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'B:Bool [none] . eq 'getName['C:Constant] = 'qid['substr['string['C:Constant], '0.Zero, 'rfind[ 'string['C:Constant], '".".Char, 'length['string['C:Constant]]]]] [none] . eq 'getName['V:Variable] = 'qid['substr['string['V:Variable], '0.Zero, 'rfind[ 'string['V:Variable], '":".Char, 'length['string['V:Variable]]]]] [none] . eq 'getName['fmod_is_sorts_.____endfm['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'Q:Qid [none] . eq 'getName['fmod_is_sorts_.____endfm['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'Q:Qid [none] . eq 'getName['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'Q:Qid [none] . eq 'getName['mod_is_sorts_._____endm['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'Q:Qid [none] . eq 'getName['mod_is_sorts_._____endm['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'Q:Qid [none] . eq 'getName['smod_is_sorts_._______endsm['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'Q:Qid [none] . eq 'getName['smod_is_sorts_._______endsm['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'Q:Qid [none] . eq 'getName['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'Q:Qid [none] . eq 'getName['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'Q:Qid [none] . eq 'getName['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'Q:Qid [none] . eq 'getName['view_from_to_is___endv['_`{_`}['Q:Qid, 'PDL:ParameterDeclList], 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'Q:Qid [none] . eq 'getOpMappings['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'OMS:OpMappingSet [none] . eq 'getOps['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'OPDS:OpDeclSet [none] . eq 'getOps['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'OPDS:OpDeclSet [ none] . eq 'getOps['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'OPDS:OpDeclSet [ none] . eq 'getOps['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'OPDS:OpDeclSet [none] . eq 'getParent['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'P:Parent [none] . eq 'getRhsSubstitution['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'RS:Substitution [none] . eq 'getRls['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.RuleSet [none] . eq 'getRls['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.RuleSet [none] . eq 'getRls['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'RLS:RuleSet [none] . eq 'getRls['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'RLS:RuleSet [ none] . eq 'getRls['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'RLS:RuleSet [ none] . eq 'getRls['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'RLS:RuleSet [none] . eq 'getRule['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'R:Rule [none] . eq 'getRuleSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'RS:Substitution [ none] . eq 'getSds['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDefSet [none] . eq 'getSds['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDefSet [none] . eq 'getSds['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDefSet [none] . eq 'getSds['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDFS:StratDefSet [none] . eq 'getSds['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDFS:StratDefSet [none] . eq 'getSds['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDefSet [none] . eq 'getSortMappings['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'SMS:SortMappingSet [none] . eq 'getSorts['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SS:SortSet [none] . eq 'getSorts['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SS:SortSet [none] . eq 'getSorts['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SS:SortSet [none] . eq 'getSorts['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SS:SortSet [none] . eq 'getSorts['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SS:SortSet [none] . eq 'getSorts['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SS:SortSet [none] . eq 'getStateVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'SV:Qid [none] . eq 'getStratMappings['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'TMS:StratMappingSet [none] . eq 'getStrats['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDeclSet [none] . eq 'getStrats['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'none.StratDeclSet [none] . eq 'getStrats['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDeclSet [none] . eq 'getStrats['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDS:StratDeclSet [none] . eq 'getStrats['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'STDS:StratDeclSet [none] . eq 'getStrats['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'none.StratDeclSet [none] . eq 'getSubsorts['fmod_is_sorts_.____endfm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['fth_is_sorts_.____endfth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['mod_is_sorts_._____endm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['smod_is_sorts_._______endsm['H:Header, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['sth_is_sorts_._______endsth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet, 'STDS:StratDeclSet, 'STDFS:StratDefSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubsorts['th_is_sorts_._____endth['Q:Qid, 'IL:ImportList, 'SS:SortSet, 'SSDS:SubsortDeclSet, 'OPDS:OpDeclSet, 'MAS:MembAxSet, 'EQS:EquationSet, 'RLS:RuleSet]] = 'SSDS:SubsortDeclSet [none] . eq 'getSubstitution['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'S:Substitution [none] . eq 'getSubstitution['`{_`,_`}['S:Substitution, 'C:Context]] = 'S:Substitution [ none] . eq 'getSubstitution['`{_`,_`}['S:Substitution, 'V:Qid]] = 'S:Substitution [ none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'T:Term [none] . eq 'getTerm['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'T:Term [none] . eq 'getTerm['`{_`,_`}['T:Term, 'T:Type]] = 'T:Term [none] . eq 'getTermSubstitution['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'TS:Substitution [ none] . eq 'getTo['view_from_to_is___endv['Q:Qid, 'ME:ModuleExpression, 'ME':ModuleExpression, 'SMS:SortMappingSet, 'OMS:OpMappingSet, 'TMS:StratMappingSet]] = 'ME':ModuleExpression [none] . eq 'getTrace['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'T:NarrowingTrace [none] . eq 'getType['C:Constant] = 'qid['substr['string['C:Constant], '_+_['s_[ '0.Zero], 'rfind['string['C:Constant], '".".Char, 'length['string[ 'C:Constant]]]], 'length['string['C:Constant]]]] [none] . eq 'getType['V:Variable] = 'qid['substr['string['V:Variable], '_+_['s_[ '0.Zero], 'rfind['string['V:Variable], '":".Char, 'length['string[ 'V:Variable]]]], 'length['string['V:Variable]]]] [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'C:Context]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`}['T:Term, 'T:Type, 'R:Rule]] = 'T:Type [none] . eq 'getType['`{_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution]] = 'T:Type [none] . eq 'getType['`{_`,_`}['T:Term, 'T:Type]] = 'T:Type [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'U:Substitution [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'U:Substitution [none] . eq 'getUnifier['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'U:Substitution [none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`,_`}['C:Context, 'L:Qid, 'U:Substitution, 'UV:Qid, 'T:Term, 'T:Type, 'A:Substitution]] = 'UV:Qid [ none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'A:Substitution, 'SV:Qid, 'U:Substitution, 'UV:Qid]] = 'UV:Qid [none] . eq 'getUnifierVariableFamily['`{_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'S:Substitution, 'T:NarrowingTrace, 'U:Substitution, 'UV:Qid]] = 'UV:Qid [ none] . eq 'getVariableFamily['`{_`,_`,_`,_`,_`,_`,_`}['T:Term, 'T:Type, 'C:Context, 'L:Qid, 'TS:Substitution, 'RS:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'getVariableFamily['`{_`,_`,_`,_`,_`}['T:Term, 'S:Substitution, 'Q:Qid, 'P:Parent, 'B:Bool]] = 'Q:Qid [none] . eq 'getVariableFamily['`{_`,_`,_`}['LS:Substitution, 'RS:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'getVariableFamily['`{_`,_`}['S:Substitution, 'V:Qid]] = 'V:Qid [none] . eq 'head['__['E:Nat, 'L:NatList]] = 'E:Nat [none] . eq 'head['__['E:Qid, 'L:QidList]] = 'E:Qid [none] . eq 'insert['E:Qid, 'S:QidSet] = '_;_['E:Qid, 'S:QidSet] [none] . eq 'intersection['S:QidSet, 'N:NeQidSet] = '$intersect['S:QidSet, 'N:NeQidSet, 'none.EmptyQidSet] [none] . eq 'intersection['S:QidSet, 'none.EmptyQidSet] = 'none.EmptyQidSet [none] . eq 'last['__['L:NatList, 'E:Nat]] = 'E:Nat [none] . eq 'last['__['L:QidList, 'E:Qid]] = 'E:Qid [none] . eq 'metaNarrowingApply['M:Module, 'T:Term, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaNarrowingApply['M:Module, 'T:Term, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaNarrowingSearch['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'N:Nat] = 'metaNarrowingSearch['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaNarrowingSearchPath['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'N:Nat] = 'metaNarrowingSearchPath['M:Module, 'T:Term, 'T2:Term, 'S:Qid, 'B:Bound, 'F:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaParse['M:Module, 'Q:QidList, 'T:Type?] = 'metaParse['M:Module, 'none.EmptyQidSet, 'Q:QidList, 'T:Type?] [none] . eq 'metaPrettyPrint['M:Module, 'T:Term] = 'metaPrettyPrint['M:Module, 'none.EmptyQidSet, 'T:Term, '__['mixfix.PrintOption, '__['flat.PrintOption, '__['format.PrintOption, '__['number.PrintOption, 'rat.PrintOption]]]], 'none.EmptyQidSet] [none] . eq 'metaPrettyPrint['M:Module, 'T:Term, 'P:PrintOptionSet] = 'metaPrettyPrint[ 'M:Module, 'none.EmptyQidSet, 'T:Term, 'P:PrintOptionSet, 'none.EmptyQidSet] [none] . eq 'metaPrettyPrint['M:Module, 'VS:VariableSet, 'T:Term, 'P:PrintOptionSet] = 'metaPrettyPrint['M:Module, 'VS:VariableSet, 'T:Term, 'P:PrintOptionSet, 'none.EmptyQidSet] [none] . eq 'metaVariantDisjointUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaVariantDisjointUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'metaVariantUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'N:Nat] = 'metaVariantUnify['M:Module, 'U:UnificationProblem, 'TL:TermList, 'Q:Qid, 'none.VariantOptionSet, 'N:Nat] [none] . eq 'not_['A:Bool] = '_xor_['true.Bool, 'A:Bool] [none] . eq 'occurs['E:Nat, 'nil.NatList] = 'false.Bool [none] . eq 'occurs['E:Nat, '__['E':Nat, 'L:NatList]] = 'if_then_else_fi['_==_['E:Nat, 'E':Nat], 'true.Bool, 'occurs['E:Nat, 'L:NatList]] [none] . eq 'occurs['E:Qid, 'nil.TypeList] = 'false.Bool [none] . eq 'occurs['E:Qid, '__['E':Qid, 'L:QidList]] = 'if_then_else_fi['_==_['E:Qid, 'E':Qid], 'true.Bool, 'occurs['E:Qid, 'L:QidList]] [none] . eq 'reverse['L:NatList] = '$reverse['L:NatList, 'nil.NatList] [none] . eq 'reverse['L:QidList] = '$reverse['L:QidList, 'nil.TypeList] [none] . eq 'size['L:NatList] = '$size['L:NatList, '0.Zero] [none] . eq 'size['L:QidList] = '$size['L:QidList, '0.Zero] [none] . eq 'tail['__['E:Nat, 'L:NatList]] = 'L:NatList [none] . eq 'tail['__['E:Qid, 'L:QidList]] = 'L:QidList [none] . eq 'union['S:QidSet, 'S':QidSet] = '_;_['S:QidSet, 'S':QidSet] [none] . eq '|_|['S:QidSet] = '$card['S:QidSet, '0.Zero] [none] . Bye. Maude-Maude3.5.1/tests/Meta/metaUp0000775000175000017510000000032415036121435016270 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaUp.maude -no-banner -no-advise \ > metaUp.out 2>&1 diff $srcdir/metaUp.expected metaUp.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaUnify.maude0000664000175000017510000000561015036121435020070 0ustar nileshnileshset show timing off . set show advisories off . *** 7 unifiers for most trivial elementary AC problem reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], '#, 0) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], '#, 1) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], '#, 2) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], '#, 3) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], '#, 4) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], '#, 5) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], '#, 6) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], '#, 7) . *** variable families '% and '@ are also supported reduce in META-LEVEL : metaUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['A:Nat, 'B:Nat], '%, 0) . reduce in META-LEVEL : metaUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['A:Nat, 'B:Nat], '@, 0) . *** using variable families other than the one *** declared by the the 3rd argument generates a warning and no *** reduction. reduce in META-LEVEL : metaUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['#1:Nat, 'Y:Nat], '%, 0) . *** simultaneous unification fmod BAZ is sort Foo . ops a b : -> Foo . op f : Foo -> Foo . endfm red in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['Y:Foo] /\ 'f['X:Foo] =? 'f['Z:Foo], '#, 0) . red in META-LEVEL : metaDisjointUnify(['BAZ], 'f['Y:Foo] =? 'f['X:Foo] /\ 'f['Z:Foo] =? 'f['X:Foo], '#, 0) . red in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['Y:Foo] /\ 'f['Y:Foo] =? 'f['X:Foo], '#, 0) . red in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['a.Foo] /\ 'f['X:Foo] =? 'f['b.Foo], '#, 0) . red in META-LEVEL : metaDisjointUnify(['BAZ], 'f['a.Foo] =? 'f['X:Foo] /\ 'f['b.Foo] =? 'f['X:Foo], '#, 0) . *** irredundant unification fmod BAG is sorts Elt Bag . subsort Elt < Bag . op empty : -> Bag . op __ : Bag Bag -> Bag [assoc comm id: empty] . endfm reduce in META-LEVEL : metaIrredundantUnify(['BAG], '__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag], '#, 0) . reduce in META-LEVEL : metaIrredundantUnify(['BAG], '__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag], '#, 1) . reduce in META-LEVEL : metaIrredundantDisjointUnify(['BAG], '__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag], '#, 0) . reduce in META-LEVEL : metaIrredundantDisjointUnify(['BAG], '__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag], '#, 1) . Maude-Maude3.5.1/tests/Meta/metaUnify.expected0000664000175000017510000001347415036121435020605 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], '#, 0) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '_+_['%1:Nat, '%3:Nat] ; 'Y:Nat <- '_+_['%2:Nat, '%4:Nat], 'X:Nat <- '_+_['%1:Nat, '%2:Nat] ; 'Y:Nat <- '_+_['%3:Nat, '%4:Nat], '%} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], '#, 1) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '_+_['%2:Nat, '%3:Nat] ; 'Y:Nat <- '%1:Nat, 'X:Nat <- '_+_['%1:Nat, '%3:Nat] ; 'Y:Nat <- '%2:Nat, '%} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], '#, 2) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '%1:Nat ; 'Y:Nat <- '_+_['%2:Nat, '%3:Nat], 'X:Nat <- '_+_['%1:Nat, '%3:Nat] ; 'Y:Nat <- '%2:Nat, '%} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], '#, 3) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '_+_['%2:Nat, '%3:Nat] ; 'Y:Nat <- '%1:Nat, 'X:Nat <- '%2:Nat ; 'Y:Nat <- '_+_['%1:Nat, '%3:Nat], '%} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], '#, 4) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '%1:Nat ; 'Y:Nat <- '%2:Nat, 'X:Nat <- '%1:Nat ; 'Y:Nat <- '%2:Nat, '%} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], '#, 5) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '%1:Nat ; 'Y:Nat <- '_+_['%2:Nat, '%3:Nat], 'X:Nat <- '%2:Nat ; 'Y:Nat <- '_+_['%1:Nat, '%3:Nat], '%} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], '#, 6) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '%2:Nat ; 'Y:Nat <- '%1:Nat, 'X:Nat <- '%1:Nat ; 'Y:Nat <- '%2:Nat, '%} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], '#, 7) . rewrites: 2 result UnificationTriple?: (noUnifier).UnificationTriple? ========================================== reduce in META-LEVEL : metaUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['A:Nat, 'B:Nat], '%, 0) . rewrites: 2 result UnificationPair: { 'A:Nat <- '_+_['#1:Nat, '#2:Nat] ; 'B:Nat <- '_+_['#3:Nat, '#4:Nat] ; 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '_+_['#2:Nat, '#4:Nat], '#} ========================================== reduce in META-LEVEL : metaUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['A:Nat, 'B:Nat], '@, 0) . rewrites: 2 result UnificationPair: { 'A:Nat <- '_+_['#1:Nat, '#2:Nat] ; 'B:Nat <- '_+_['#3:Nat, '#4:Nat] ; 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '_+_['#2:Nat, '#4:Nat], '#} ========================================== reduce in META-LEVEL : metaUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['#1:Nat, 'Y:Nat], '%, 0) . Warning: unsafe variable name #1:Nat in unification problem. rewrites: 1 result [UnificationPair?,MatchOrUnificationPair,MatchPair?]: metaUnify(sth 'NAT is including 'NAT . sorts none . none none none none none none none endsth, '_+_['X:Nat, 'Y:Nat] =? '_+_['#1:Nat, 'Y:Nat], '%, 0) ========================================== reduce in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['Y:Foo] /\ 'f['X:Foo] =? 'f['Z:Foo], '#, 0) . rewrites: 2 result UnificationTriple: { 'X:Foo <- '%1:Foo, 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%1:Foo, '%} ========================================== reduce in META-LEVEL : metaDisjointUnify(['BAZ], 'f['Y:Foo] =? 'f['X:Foo] /\ 'f['Z:Foo] =? 'f['X:Foo], '#, 0) . rewrites: 2 result UnificationTriple: { 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%1:Foo, 'X:Foo <- '%1:Foo, '%} ========================================== reduce in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['Y:Foo] /\ 'f['Y:Foo] =? 'f['X:Foo], '#, 0) . rewrites: 2 result UnificationTriple: { 'X:Foo <- '%1:Foo ; 'Y:Foo <- '%2:Foo, 'X:Foo <- '%2:Foo ; 'Y:Foo <- '%1:Foo, '%} ========================================== reduce in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['a.Foo] /\ 'f['X:Foo] =? 'f['b.Foo], '#, 0) . rewrites: 2 result UnificationTriple?: (noUnifier).UnificationTriple? ========================================== reduce in META-LEVEL : metaDisjointUnify(['BAZ], 'f['a.Foo] =? 'f['X:Foo] /\ 'f['b.Foo] =? 'f['X:Foo], '#, 0) . rewrites: 2 result UnificationTriple?: (noUnifier).UnificationTriple? ========================================== reduce in META-LEVEL : metaIrredundantUnify(['BAG], '__['L:Bag, 'M:Bag] =? '__[ 'P:Bag, 'Q:Bag], '#, 0) . rewrites: 2 result UnificationPair: { 'L:Bag <- '__['%2:Bag, '%4:Bag] ; 'M:Bag <- '__['%1:Bag, '%3:Bag] ; 'P:Bag <- '__['%3:Bag, '%4:Bag] ; 'Q:Bag <- '__['%1:Bag, '%2:Bag], '%} ========================================== reduce in META-LEVEL : metaIrredundantUnify(['BAG], '__['L:Bag, 'M:Bag] =? '__[ 'P:Bag, 'Q:Bag], '#, 1) . rewrites: 2 result UnificationPair?: (noUnifier).UnificationPair? ========================================== reduce in META-LEVEL : metaIrredundantDisjointUnify(['BAG], '__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag], '#, 0) . rewrites: 2 result UnificationTriple: { 'L:Bag <- '__['%2:Bag, '%4:Bag] ; 'M:Bag <- '__['%1:Bag, '%3:Bag], 'P:Bag <- '__['%3:Bag, '%4:Bag] ; 'Q:Bag <- '__['%1:Bag, '%2:Bag], '%} ========================================== reduce in META-LEVEL : metaIrredundantDisjointUnify(['BAG], '__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag], '#, 1) . rewrites: 2 result UnificationTriple?: (noUnifier).UnificationTriple? Bye. Maude-Maude3.5.1/tests/Meta/metaUnify0000775000175000017510000000034015036121435016774 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaUnify.maude -no-banner -no-advise \ > metaUnify.out 2>&1 diff $srcdir/metaUnify.expected metaUnify.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaTerm.maude0000664000175000017510000000052315036121435017703 0ustar nileshnileshset show timing off . set show advisories off . select QID . red 'a:s . select META-TERM . red 'a:s . red ''a:b . red getName('a.s) . red getType('a.s) . red getName('a:s) . red getType('a:s) . red '`[s`] . red '`[s`,t`] . red getName('a.`[s`,t`]) . red getType('a.`[s`,t`]) . red getName('a:`[s`,t`]) . red getType('a:`[s`,t`]) . Maude-Maude3.5.1/tests/Meta/metaTerm.expected0000664000175000017510000000264615036121435020421 0ustar nileshnilesh========================================== reduce in QID : 'a:s . rewrites: 0 result Qid: 'a:s ========================================== reduce in META-TERM : 'a:s . rewrites: 0 result Variable: 'a:s ========================================== reduce in META-TERM : ''a:b . rewrites: 0 result Variable: ''a:b ========================================== reduce in META-TERM : getName('a.s) . rewrites: 6 result Sort: 'a ========================================== reduce in META-TERM : getType('a.s) . rewrites: 7 result Sort: 's ========================================== reduce in META-TERM : getName('a:s) . rewrites: 6 result Sort: 'a ========================================== reduce in META-TERM : getType('a:s) . rewrites: 7 result Sort: 's ========================================== reduce in META-TERM : '`[s`] . rewrites: 0 result Kind: '`[s`] ========================================== reduce in META-TERM : '`[s`,t`] . rewrites: 0 result Kind: '`[s`,t`] ========================================== reduce in META-TERM : getName('a.`[s`,t`]) . rewrites: 6 result Sort: 'a ========================================== reduce in META-TERM : getType('a.`[s`,t`]) . rewrites: 7 result Kind: '`[s`,t`] ========================================== reduce in META-TERM : getName('a:`[s`,t`]) . rewrites: 6 result Sort: 'a ========================================== reduce in META-TERM : getType('a:`[s`,t`]) . rewrites: 7 result Kind: '`[s`,t`] Bye. Maude-Maude3.5.1/tests/Meta/metaTerm0000775000175000017510000000033415036121435016614 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaTerm.maude -no-banner -no-advise \ > metaTerm.out 2>&1 diff $srcdir/metaTerm.expected metaTerm.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaSpecial.maude0000664000175000017510000000736115036121435020363 0ustar nileshnileshset show timing off . set show advisories off . red in META-LEVEL : metaParse( fmod 'FOO is including 'QID . sorts 'Token ; 'Foo . none op 'token : 'Qid -> 'Token [special(id-hook('Bubble, '1 '1) op-hook('qidSymbol, ', nil, 'Qid))] . op '`[_`] : 'Token -> 'Foo [none] . none none endfm, '`[ 'unseen '`] , anyType) . red in META-LEVEL : metaParse( fmod 'FOO is including 'QID-LIST . sorts 'Token ; 'Foo . none op 'token : 'Qid -> 'Token [special(id-hook('Bubble, '0 '1) op-hook('qidSymbol, ', nil, 'Qid) op-hook('nilQidListSymbol, 'nil, nil, 'QidList) id-hook('Exclude, 'assoc 'com 'memo))] . op '`[_`] : 'Token -> 'Foo [none] . none none endfm, '`[ '`] , anyType) . red in META-LEVEL : metaParse( fmod 'FOO is including 'QID-LIST . sorts 'Token ; 'Foo . none op 'tokens : 'Qid -> 'Token [special(id-hook('Bubble, '0 '10) op-hook('qidSymbol, ', nil, 'Qid) op-hook('nilQidListSymbol, 'nil, nil, 'QidList) op-hook('qidListSymbol, '__, 'QidList 'QidList, 'QidList) id-hook('Exclude, 'assoc 'com 'memo))] . op '`[_`] : 'Token -> 'Foo [none] . none none endfm, '`[ 'a 'b 'c '`] , anyType) . red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . none none endfm, '_::`Foo['a.Foo]) . red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo ; 'Bool . none op 'true : nil -> 'Bool [special(id-hook('SystemTrue, nil))] . op 'false : nil -> 'Bool [special(id-hook('SystemFalse, nil))] . op 'a : nil -> 'Foo [none] . none none endfm, '_::`Foo['a.Foo]) . red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo . none op 'id : nil -> 'Foo [none] . op '+ : 'Foo 'Foo -> 'Foo [id('id.Foo)] . op 'a : nil -> 'Foo [none] . none none endfm, '+['a.Foo, 'id.Foo]) . red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo . none op 'id : nil -> 'Foo [none] . op '+ : 'Foo 'Foo -> 'Foo [left-id('id.Foo)] . op 'a : nil -> 'Foo [none] . none none endfm, '+['a.Foo, 'id.Foo]) . red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo . none op '+ : 'Foo 'Foo -> 'Foo [right-id('id.Foo)] . op 'id : nil -> 'Foo [none] . op 'a : nil -> 'Foo [none] . none none endfm, '+['a.Foo, 'id.Foo]) . red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo ; 'Bool . none op 'itef : 'Bool 'Universal 'Universal -> 'Universal [special(id-hook('BranchSymbol, nil) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op 'true : nil -> 'Bool [none] . op 'false : nil -> 'Bool [none] . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none endfm, 'itef['true.Bool, 'a.Foo, 'b.Foo]) . red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo ; 'Bool . none op 'itef : 'Bool 'Universal 'Universal -> 'Universal [special(id-hook('BranchSymbol, nil) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op 'true : nil -> 'Bool [none] . op 'false : nil -> 'Bool [none] . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none endfm, 'itef['false.Bool, 'a.Foo, 'b.Foo]) . red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo ; 'Bit . none op '= : 'Universal 'Universal -> 'Bit [special(id-hook('EqualitySymbol, nil) term-hook('equalTerm, '1.Bit) term-hook('notEqualTerm, '0.Bit))] . op '1 : nil -> 'Bit [none] . op '0 : nil -> 'Bit [none] . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none endfm, '=['a.Foo, 'b.Foo]) . Maude-Maude3.5.1/tests/Meta/metaSpecial.expected0000664000175000017510000001363215036121435021067 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is including 'QID . sorts 'Foo ; 'Token . none op '`[_`] : 'Token -> 'Foo [none] . op 'token : 'Qid -> 'Token [special( id-hook('Bubble, '1 '1) op-hook('qidSymbol, ', nil, 'Qid))] . none none endfm, '`[ 'unseen '`], anyType) . rewrites: 2 result ResultPair: {'`[_`]['token[''unseen.Qid]], 'Foo} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is including 'QID-LIST . sorts 'Foo ; 'Token . none op '`[_`] : 'Token -> 'Foo [none] . op 'token : 'Qid -> 'Token [special( id-hook('Bubble, '0 '1) op-hook('qidSymbol, ', nil, 'Qid) op-hook('nilQidListSymbol, 'nil, nil, 'QidList) id-hook('Exclude, 'assoc 'com 'memo))] . none none endfm, '`[ '`], anyType) . rewrites: 2 result ResultPair: {'`[_`]['token['nil.QidList]], '`[Foo`]} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is including 'QID-LIST . sorts 'Foo ; 'Token . none op '`[_`] : 'Token -> 'Foo [none] . op 'tokens : 'Qid -> 'Token [special( id-hook('Bubble, '0 '10) op-hook('qidSymbol, ', nil, 'Qid) op-hook('nilQidListSymbol, 'nil, nil, 'QidList) op-hook('qidListSymbol, '__, 'QidList 'QidList, 'QidList) id-hook('Exclude, 'assoc 'com 'memo))] . none none endfm, '`[ 'a 'b 'c '`], anyType) . rewrites: 2 result ResultPair: {'`[_`]['tokens['__[''a.Qid, ''b.Qid, ''c.Qid]]], '`[Foo`]} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . none none endfm, '_::`Foo['a.Foo]) . rewrites: 0 result [ResultPair?]: metaReduce(fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . none none endfm, '_::`Foo['a.Foo]) ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Bool ; 'Foo . none (op 'a : nil -> 'Foo [none] . op 'false : nil -> 'Bool [special( id-hook('SystemFalse, nil))] .) op 'true : nil -> 'Bool [special( id-hook('SystemTrue, nil))] . none none endfm, '_::`Foo['a.Foo]) . rewrites: 2 result ResultPair: {'true.Bool, 'Bool} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Foo . none (op '+ : 'Foo 'Foo -> 'Foo [id('id.Foo)] . op 'a : nil -> 'Foo [none] .) op 'id : nil -> 'Foo [none] . none none endfm, '+['a.Foo, 'id.Foo]) . rewrites: 1 result ResultPair: {'a.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Foo . none (op '+ : 'Foo 'Foo -> 'Foo [left-id('id.Foo)] . op 'a : nil -> 'Foo [none] .) op 'id : nil -> 'Foo [none] . none none endfm, '+['a.Foo, 'id.Foo]) . rewrites: 1 result ResultPair: {'+['a.Foo, 'id.Foo], 'Foo} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Foo . none (op 'a : nil -> 'Foo [none] . op 'id : nil -> 'Foo [none] .) op '+ : 'Foo 'Foo -> 'Foo [right-id('id.Foo)] . none none endfm, '+['a.Foo, 'id.Foo]) . rewrites: 1 result ResultPair: {'a.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Bool ; 'Foo . none (((op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] .) op 'false : nil -> 'Bool [none] .) op 'true : nil -> 'Bool [none] .) op 'itef : 'Bool 'Universal 'Universal -> 'Universal [special( id-hook('BranchSymbol, nil) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . none none endfm, 'itef['true.Bool, 'a.Foo, 'b.Foo]) . rewrites: 0 result [ResultPair?]: metaReduce(fmod 'FOO is nil sorts 'Bool ; 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'false : nil -> 'Bool [none] . op 'itef : 'Bool 'Universal 'Universal -> 'Universal [special( id-hook('BranchSymbol, nil) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op 'true : nil -> 'Bool [none] . none none endfm, 'itef['true.Bool, 'a.Foo, 'b.Foo]) ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Bool ; 'Foo . none (((op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] .) op 'false : nil -> 'Bool [none] .) op 'true : nil -> 'Bool [none] .) op 'itef : 'Bool 'Universal 'Universal -> 'Universal [special( id-hook('BranchSymbol, nil) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . none none endfm, 'itef['false.Bool, 'a.Foo, 'b.Foo]) . rewrites: 0 result [ResultPair?]: metaReduce(fmod 'FOO is nil sorts 'Bool ; 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'false : nil -> 'Bool [none] . op 'itef : 'Bool 'Universal 'Universal -> 'Universal [special( id-hook('BranchSymbol, nil) term-hook('trueTerm, 'true.Bool) term-hook('falseTerm, 'false.Bool))] . op 'true : nil -> 'Bool [none] . none none endfm, 'itef['false.Bool, 'a.Foo, 'b.Foo]) ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Bit ; 'Foo . none (((op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] .) op '0 : nil -> 'Bit [none] .) op '1 : nil -> 'Bit [none] .) op '= : 'Universal 'Universal -> 'Bit [special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, '1.Bit) term-hook('notEqualTerm, '0.Bit))] . none none endfm, '=['a.Foo, 'b.Foo]) . rewrites: 0 result [ResultPair?]: metaReduce(fmod 'FOO is nil sorts 'Bit ; 'Foo . none op '0 : nil -> 'Bit [none] . op '1 : nil -> 'Bit [none] . op '= : 'Universal 'Universal -> 'Bit [special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, '1.Bit) term-hook('notEqualTerm, '0.Bit))] . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none endfm, '=['a.Foo, 'b.Foo]) Bye. Maude-Maude3.5.1/tests/Meta/metaSpecial0000775000175000017510000000035015036121435017263 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaSpecial.maude -no-banner -no-advise \ > metaSpecial.out 2>&1 diff $srcdir/metaSpecial.expected metaSpecial.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaSort.maude0000664000175000017510000001061115036121435017722 0ustar nileshnileshset show timing off . set show advisories off . select META-LEVEL . red sortLeq( fmod 'FOO is nil sorts 'NzNat ; 'Nat ; 'NzInt ; 'Int . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'NzNat, 'Int) . red sortLeq( fmod 'FOO is nil sorts 'NzNat ; 'Nat ; 'NzInt ; 'Int . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Int, 'NzInt) . red sameKind( fmod 'FOO is nil sorts 'NzNat ; 'Nat ; 'NzInt ; 'Int . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, '`[Int`], 'NzInt) . red sameKind( fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'NzInt ; 'Int . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, '`[Int`], 'Bool) . red leastSort( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'pi.Float) . red completeName( fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . none none none endfm, '`[NzInt`]) . red completeName( fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . none none none endfm, '`[NzInt`,Nat`]) . red lesserSorts( fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'NzInt ; 'Int . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Int) . red lesserSorts( fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'NzInt ; 'Int . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'NzNat) . red lesserSorts( fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'NzInt ; 'Int . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Nat) . red glbSorts( fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'NzInt ; 'Int . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Nat, 'NzInt) . red glbSorts( fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'NzInt ; 'Int . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Nat, 'Int) . red glbSorts( fmod 'FOO is protecting 'BOOL . sorts 'Nat ; 'NzInt ; 'Int . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Nat, 'NzInt) . red getKind(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'Foo) . red getKind(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'Bar) . red getKind(fmod 'FOO is protecting 'FLOAT . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, '`[Bar`]) . red getKinds(fmod 'FOO is nil sorts none . none none none none endfm) . red getKinds(fmod 'FOO is protecting 'BOOL . sorts none . none none none none endfm) . red getKinds(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm) . red maximalSorts(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm, '`[Qid`]) . red minimalSorts(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm, '`[Qid`]) . *** These two don't reduce because the 2nd arg should be a kind red maximalSorts(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm, 'Qid) . red minimalSorts(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm, 'Qid) . red maximalAritySet(['RAT], '_+_, 'Nat 'Nat, 'PosRat) . red maximalAritySet(['RAT], '_+_, 'Nat 'Nat, 'Rat) . red maximalAritySet(['RAT], '_/_, 'Nat 'Nat, 'Nat) . red maximalAritySet(['META-LEVEL], '_;_, 'TypeSet 'TypeSet, 'KindSet) . red maximalAritySet(['NAT], '0, nil, 'Nat) . red glbSorts(['RAT], '`[Int`], 'Int) . Maude-Maude3.5.1/tests/Meta/metaSort.expected0000664000175000017510000002121715036121435020434 0ustar nileshnilesh========================================== reduce in META-LEVEL : sortLeq(fmod 'FOO is nil sorts 'NzNat ; 'Nat ; 'Int ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'NzNat, 'Int) . rewrites: 1 result Bool: true ========================================== reduce in META-LEVEL : sortLeq(fmod 'FOO is nil sorts 'NzNat ; 'Nat ; 'Int ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Int, 'NzInt) . rewrites: 1 result Bool: false ========================================== reduce in META-LEVEL : sameKind(fmod 'FOO is nil sorts 'NzNat ; 'Nat ; 'Int ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, '`[Int`], 'NzInt) . rewrites: 1 result Bool: true ========================================== reduce in META-LEVEL : sameKind(fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'Int ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, '`[Int`], 'Bool) . rewrites: 1 result Bool: false ========================================== reduce in META-LEVEL : leastSort(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'pi.Float) . rewrites: 1 result Sort: 'FiniteFloat ========================================== reduce in META-LEVEL : completeName(fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . none none none endfm, '`[NzInt`]) . rewrites: 1 result Kind: '`[NzInt`,Nat`] ========================================== reduce in META-LEVEL : completeName(fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . none none none endfm, '`[NzInt`,Nat`]) . rewrites: 1 result Kind: '`[NzInt`,Nat`] ========================================== reduce in META-LEVEL : lesserSorts(fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'Int ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Int) . rewrites: 1 result NeSortSet: 'Nat ; 'NzInt ; 'NzNat ========================================== reduce in META-LEVEL : lesserSorts(fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'Int ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'NzNat) . rewrites: 1 result EmptyQidSet: (none).EmptyQidSet ========================================== reduce in META-LEVEL : lesserSorts(fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'Int ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Nat) . rewrites: 1 result Sort: 'NzNat ========================================== reduce in META-LEVEL : glbSorts(fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'Int ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Nat, 'NzInt) . rewrites: 1 result Sort: 'NzNat ========================================== reduce in META-LEVEL : glbSorts(fmod 'FOO is protecting 'BOOL . sorts 'NzNat ; 'Nat ; 'Int ; 'NzInt . subsort 'NzNat < 'Nat . subsort 'NzNat < 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Nat, 'Int) . rewrites: 1 result Sort: 'Nat ========================================== reduce in META-LEVEL : glbSorts(fmod 'FOO is protecting 'BOOL . sorts 'Nat ; 'Int ; 'NzInt . subsort 'Nat < 'Int . subsort 'NzInt < 'Int . none none none endfm, 'Nat, 'NzInt) . rewrites: 1 result EmptyQidSet: (none).EmptyQidSet ========================================== reduce in META-LEVEL : getKind(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'Foo) . rewrites: 1 result Kind: '`[Foo`] ========================================== reduce in META-LEVEL : getKind(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, 'Bar) . rewrites: 1 result Kind: '`[Foo`] ========================================== reduce in META-LEVEL : getKind(fmod 'FOO is protecting 'FLOAT . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . mb 'a.Foo : 'Bar [none] . none endfm, '`[Bar`]) . rewrites: 1 result Kind: '`[Foo`] ========================================== reduce in META-LEVEL : getKinds(fmod 'FOO is nil sorts none . none none none none endfm) . rewrites: 1 result EmptyQidSet: (none).EmptyQidSet ========================================== reduce in META-LEVEL : getKinds(fmod 'FOO is protecting 'BOOL . sorts none . none none none none endfm) . rewrites: 1 result Kind: '`[Bool`] ========================================== reduce in META-LEVEL : getKinds(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm) . rewrites: 1 result NeKindSet: '`[AttrSet`] ; '`[Bool`] ; '`[Condition`] ; '`[EquationSet`] ; '`[FindResult`,NatList`,Bound`,Parent`] ; '`[HookList`] ; '`[ImportList`] ; '`[MatchingProblem`] ; '`[MembAxSet`] ; '`[ModuleExpression`,ParameterList`,GTermList`,QidSet`,QidList`,TypeListSet`,Type?`,Header`] ; '`[Module`] ; '`[NarrowingApplyResult?`] ; '`[NarrowingSearchPathResult?`] ; '`[NarrowingSearchResult?`] ; '`[NarrowingTrace`] ; '`[OpDeclSet`] ; '`[OpMappingSet`] ; '`[ParameterDeclList`] ; '`[PrintOptionSet`] ; '`[RenamingSet`] ; '`[Result4Tuple?`] ; '`[ResultPair?`] ; '`[ResultTriple?`] ; '`[RuleSet`] ; '`[SmtResult?`] ; '`[SortMappingSet`] ; '`[SrewriteOption`] ; '`[StratDeclSet`] ; '`[StratDefSet`] ; '`[StratMappingSet`] ; '`[StrategyList`,Strategy?`] ; '`[String`] ; '`[SubsortDeclSet`] ; '`[Substitution?`] ; '`[Trace?`] ; '`[UnificationPair?`,MatchOrUnificationPair`,MatchPair?`] ; '`[UnificationProblem`] ; '`[UnificationTriple?`] ; '`[UsingPairSet`] ; '`[Variant?`] ; '`[VariantOptionSet`] ; '`[View`] ========================================== reduce in META-LEVEL : maximalSorts(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm, '`[Qid`]) . rewrites: 1 result NeSortSet: 'GTermList ; 'Header ; 'ModuleExpression ; 'ParameterList ; 'QidList ; 'QidSet ; 'Type? ; 'TypeListSet ========================================== reduce in META-LEVEL : minimalSorts(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm, '`[Qid`]) . rewrites: 1 result NeSortSet: 'Constant ; 'Context ; 'EmptyCommaList ; 'EmptyQidSet ; 'Kind ; 'Sort ; 'Variable ========================================== reduce in META-LEVEL : maximalSorts(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm, 'Qid) . rewrites: 0 result [ModuleExpression,ParameterList,GTermList,QidSet,QidList,TypeListSet, Type?,Header]: maximalSorts(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm, 'Qid) ========================================== reduce in META-LEVEL : minimalSorts(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm, 'Qid) . rewrites: 0 result [ModuleExpression,ParameterList,GTermList,QidSet,QidList,TypeListSet, Type?,Header]: minimalSorts(fmod 'FOO is protecting 'META-LEVEL . sorts none . none none none none endfm, 'Qid) ========================================== reduce in META-LEVEL : maximalAritySet(['RAT], '_+_, 'Nat 'Nat, 'PosRat) . rewrites: 2 result TypeListSet: 'Nat 'PosRat ; 'PosRat 'Nat ; 'PosRat 'PosRat ========================================== reduce in META-LEVEL : maximalAritySet(['RAT], '_+_, 'Nat 'Nat, 'Rat) . rewrites: 2 result NeTypeList: 'Rat 'Rat ========================================== reduce in META-LEVEL : maximalAritySet(['RAT], '_/_, 'Nat 'Nat, 'Nat) . rewrites: 2 result EmptyQidSet: (none).EmptyQidSet ========================================== reduce in META-LEVEL : maximalAritySet(['META-LEVEL], '_;_, 'TypeSet 'TypeSet, 'KindSet) . rewrites: 2 result NeTypeList: 'KindSet 'KindSet ========================================== reduce in META-LEVEL : maximalAritySet(['NAT], '0, nil, 'Nat) . rewrites: 2 result TypeList: (nil).TypeList ========================================== reduce in META-LEVEL : glbSorts(['RAT], '`[Int`], 'Int) . rewrites: 2 result Sort: 'Int Bye. Maude-Maude3.5.1/tests/Meta/metaSort0000775000175000017510000000033415036121435016634 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaSort.maude -no-banner -no-advise \ > metaSort.out 2>&1 diff $srcdir/metaSort.expected metaSort.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaSearch.maude0000664000175000017510000000717615036121435020214 0ustar nileshnileshset show timing off . set show advisories off . mod SEARCH-TEST is sort Nat . op _+_ : Nat Nat -> Nat [assoc comm prec 5] . op _*_ : Nat Nat -> Nat [assoc comm prec 3] . ops a b c d e 0 1 : -> Nat . vars W X Y Z : Nat . eq 0 * X = 0 . eq 1 * X = X . eq 0 + X = X . rl X * (Y + Z) => X * Y + X * Z . rl X * Y + X * Z => X * (Y + Z) . endm select META-LEVEL . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, '*, 100, 0) . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, '*, 100, 1) . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, '*, 100, 2) . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, '_*_['Y:Nat, 'Z:Nat] := 'X:Nat /\ 'Y:Nat = 'a.Nat, '*, 100, 0) . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, '_*_['Y:Nat, 'Z:Nat] := 'X:Nat /\ 'Y:Nat = 'a.Nat, '*, 100, 1) . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '*, 100, 0) . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '*, 100, 1) . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '*, 100, 2) . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '!, 100, 0) . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '+, 100, 0) . red metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '+, 100, 1) . red metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat,'b.Nat],'_*_['a.Nat,'c.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 100, 0) . red metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat,'b.Nat],'_*_['a.Nat,'c.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 100, 1) . red metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat,'b.Nat],'_*_['a.Nat,'c.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 0, 0) . red metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat,'b.Nat],'_*_['a.Nat,'c.Nat], '_*_['a.Nat,'d.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 100, 0) . red metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat,'b.Nat],'_*_['a.Nat,'c.Nat], '_*_['a.Nat,'d.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 100, 1) . red metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat,'b.Nat],'_*_['a.Nat,'c.Nat], '_*_['a.Nat,'d.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 1, 0) . red metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat,'b.Nat],'_*_['a.Nat,'c.Nat], '_*_['a.Nat,'d.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 1, 1) . mod SEARCH is sort State . ops a b c d e : -> State . rl [a-move1] : a => b . rl [a-move2] : a => c . rl [b-move] : b => d . rl [c-move] : c => e . endm select META-LEVEL . red metaSearch(['SEARCH], 'a.State, 'e.State, nil, '*, unbounded, 0) . red metaSearch(['SEARCH], 'a.State, 'e.State, nil, '*, unbounded, 1) . red metaSearchPath(['SEARCH], 'a.State, 'e.State, nil, '*, unbounded, 0) . red metaSearchPath(['SEARCH], 'a.State, 'e.State, nil, '*, unbounded, 1) . mod ARITH is inc INT . vars I J K L : Int . rl I * (J + K) => I * J + I * K . rl I * J + I * K => I * (J + K) . ops a b c d e : -> Int . endm select META-LEVEL . red metaSearchPath(['ARITH], '_*_[ '_+_['a.Int, 'b.Int], '_+_['c.Int, 'd.Int] ], '_+_['I:Int, 'J:Int, 'K:Int, 'L:Int], nil, '*, unbounded, 0) . Maude-Maude3.5.1/tests/Meta/metaSearch.expected0000664000175000017510000001571615036121435020721 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, '*, 100, 0) . rewrites: 2 result ResultTriple: {'_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'Nat, 'X:Nat <- '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]] ; 'Y:Nat <- '_+_['b.Nat, 'c.Nat] ; 'Z:Nat <- 'a.Nat} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, '*, 100, 1) . rewrites: 2 result ResultTriple: {'_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'Nat, 'X:Nat <- '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]] ; 'Y:Nat <- 'a.Nat ; 'Z:Nat <- '_+_['b.Nat, 'c.Nat]} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, '*, 100, 2) . rewrites: 6 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, '_*_['Y:Nat, 'Z:Nat] := 'X:Nat /\ 'Y:Nat = 'a.Nat, '*, 100, 0) . rewrites: 2 result ResultTriple: {'_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'Nat, 'X:Nat <- '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]] ; 'Y:Nat <- 'a.Nat ; 'Z:Nat <- '_+_['b.Nat, 'c.Nat]} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, '_*_['Y:Nat, 'Z:Nat] := 'X:Nat /\ 'Y:Nat = 'a.Nat, '*, 100, 1) . rewrites: 6 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '*, 100, 0) . rewrites: 2 result ResultTriple: {'_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'Nat, 'X:Nat <- '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]]} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '*, 100, 1) . rewrites: 3 result ResultTriple: {'_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat]], 'Nat, 'X:Nat <- '_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat]]} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '*, 100, 2) . rewrites: 5 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '!, 100, 0) . rewrites: 6 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '+, 100, 0) . rewrites: 3 result ResultTriple: {'_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat]], 'Nat, 'X:Nat <- '_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat]]} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'X:Nat, nil, '+, 100, 1) . rewrites: 4 result ResultTriple: {'_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'Nat, 'X:Nat <- '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]]} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 100, 0) . rewrites: 3 result ResultTriple: {'_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'Nat, 'X:Nat <- 'a.Nat ; 'Y:Nat <- '_+_['b.Nat, 'c.Nat]} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 100, 1) . rewrites: 2 result ResultTriple: {'_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], 'Nat, 'X:Nat <- '_+_['b.Nat, 'c.Nat] ; 'Y:Nat <- 'a.Nat} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 0, 0) . rewrites: 2 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat], '_*_['a.Nat, 'd.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 100, 0) . rewrites: 9 result ResultTriple: {'_*_['a.Nat, '_+_['b.Nat, 'c.Nat, 'd.Nat]], 'Nat, 'X:Nat <- 'a.Nat ; 'Y:Nat <- '_+_['b.Nat, 'c.Nat, 'd.Nat]} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat], '_*_['a.Nat, 'd.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 100, 1) . rewrites: 2 result ResultTriple: {'_*_['a.Nat, '_+_['b.Nat, 'c.Nat, 'd.Nat]], 'Nat, 'X:Nat <- '_+_['b.Nat, 'c.Nat, 'd.Nat] ; 'Y:Nat <- 'a.Nat} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat], '_*_['a.Nat, 'd.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 1, 0) . rewrites: 8 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaSearch(['SEARCH-TEST], '_+_['_*_['a.Nat, 'b.Nat], '_*_['a.Nat, 'c.Nat], '_*_['a.Nat, 'd.Nat]], '_*_['X:Nat, 'Y:Nat], nil, '*, 1, 1) . rewrites: 8 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaSearch(['SEARCH], 'a.State, 'e.State, nil, '*, unbounded, 0) . rewrites: 6 result ResultTriple: {'e.State, 'State, (none).Substitution} ========================================== reduce in META-LEVEL : metaSearch(['SEARCH], 'a.State, 'e.State, nil, '*, unbounded, 1) . rewrites: 2 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaSearchPath(['SEARCH], 'a.State, 'e.State, nil, '*, unbounded, 0) . rewrites: 6 result Trace: {'a.State, 'State, rl 'a.State => 'c.State [label('a-move2)] .} {'c.State, 'State, rl 'c.State => 'e.State [label('c-move)] .} ========================================== reduce in META-LEVEL : metaSearchPath(['SEARCH], 'a.State, 'e.State, nil, '*, unbounded, 1) . rewrites: 2 result Trace?: (failure).Trace? ========================================== reduce in META-LEVEL : metaSearchPath(['ARITH], '_*_['_+_['a.Int, 'b.Int], '_+_['c.Int, 'd.Int]], '_+_['I:Int, 'J:Int, 'K:Int, 'L:Int], nil, '*, unbounded, 0) . rewrites: 21 result Trace: {'_*_['_+_['a.Int, 'b.Int], '_+_['c.Int, 'd.Int]], 'Int, rl '_*_[ 'I:Int, '_+_['J:Int, 'K:Int]] => '_+_['_*_['I:Int, 'J:Int], '_*_['I:Int, 'K:Int]] [none] .} {'_+_['_*_['a.Int, '_+_['c.Int, 'd.Int]], '_*_['b.Int, '_+_['c.Int, 'd.Int]]], 'Int, rl '_*_['I:Int, '_+_['J:Int, 'K:Int]] => '_+_['_*_['I:Int, 'J:Int], '_*_['I:Int, 'K:Int]] [none] .} {'_+_['_*_['a.Int, 'c.Int], '_*_['a.Int, 'd.Int], '_*_['b.Int, '_+_['c.Int, 'd.Int]]], 'Int, rl '_*_['I:Int, '_+_['J:Int, 'K:Int]] => '_+_['_*_['I:Int, 'J:Int], '_*_['I:Int, 'K:Int]] [none] .} Bye. Maude-Maude3.5.1/tests/Meta/metaSearch0000775000175000017510000000034415036121435017113 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaSearch.maude -no-banner -no-advise \ > metaSearch.out 2>&1 diff $srcdir/metaSearch.expected metaSearch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaRewrite.maude0000664000175000017510000000350015036121435020413 0ustar nileshnileshset show timing off . set show advisories off . red in META-LEVEL : metaRewrite( mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'a.Foo [none] . endm, 'a.Foo, 1) . red in META-LEVEL : metaRewrite( mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'a.Foo [none] . endm, 'a.Foo, 2) . red in META-LEVEL : metaRewrite( mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'a.Foo [none] . endm, 'a.Foo, 3) . red in META-LEVEL : metaRewrite( mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'c.Foo [none] . endm, 'a.Foo, unbounded) . red in META-LEVEL : metaRewrite( mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'c.Foo [none] . endm, 'a.Foo, 1000000000000000000000000000000000000000000000000000) . red in META-LEVEL : metaRewrite( mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'c.Foo [none] . endm, 'a.Foo, JUNK:Nat) . red in META-LEVEL : metaRewrite( mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'c.Foo [none] . endm, 'a.Foo, 0) . Maude-Maude3.5.1/tests/Meta/metaRewrite.expected0000664000175000017510000000553515036121435021133 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaRewrite(mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'a.Foo [none] . endm, 'a.Foo, 1) . rewrites: 2 result ResultPair: {'b.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaRewrite(mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'a.Foo [none] . endm, 'a.Foo, 2) . rewrites: 3 result ResultPair: {'a.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaRewrite(mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'a.Foo [none] . endm, 'a.Foo, 3) . rewrites: 4 result ResultPair: {'b.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaRewrite(mod 'FOO is nil sorts 'Foo . none (op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'c.Foo [none] . endm, 'a.Foo, unbounded) . rewrites: 3 result ResultPair: {'c.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaRewrite(mod 'FOO is nil sorts 'Foo . none (op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'c.Foo [none] . endm, 'a.Foo, 1000000000000000000000000000000000000000000000000000) . rewrites: 3 result ResultPair: {'c.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaRewrite(mod 'FOO is nil sorts 'Foo . none (op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'c.Foo [none] . endm, 'a.Foo, JUNK:Nat) . rewrites: 0 result [ResultPair?]: metaRewrite(mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'c.Foo [none] . endm, 'a.Foo, JUNK:Nat) ========================================== reduce in META-LEVEL : metaRewrite(mod 'FOO is nil sorts 'Foo . none (op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'c.Foo [none] . endm, 'a.Foo, 0) . rewrites: 0 result [ResultPair?]: metaRewrite(mod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [none] . rl 'b.Foo => 'c.Foo [none] . endm, 'a.Foo, 0) Bye. Maude-Maude3.5.1/tests/Meta/metaRewrite0000775000175000017510000000035015036121435017324 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaRewrite.maude -no-banner -no-advise \ > metaRewrite.out 2>&1 diff $srcdir/metaRewrite.expected metaRewrite.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaReduce.maude0000664000175000017510000000276215036121435020212 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test the metaReduce() descent function. *** red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . none none endfm, 'a.Foo) . red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'f : 'Foo -> 'Foo [strat(0)] . none eq 'a.Foo = 'b.Foo [none] . endfm, 'f['a.Foo]) . red in META-LEVEL : metaReduce( fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'f : 'Foo -> 'Foo [strat(1 0)] . none eq 'a.Foo = 'b.Foo [none] . endfm, 'f['a.Foo]) . select META-LEVEL . red metaReduce( fmod 'FOO is protecting 'STRING . sorts none . none none none none endfm, '"a".String) . red metaReduce( fmod 'FOO is protecting 'STRING . sorts none . none none none none endfm, '"this is a string".String) . red metaReduce( fmod 'FOO is protecting 'STRING . sorts none . none none none none endfm, '"this is\na string".String) . red metaReduce( fmod 'FOO is protecting 'STRING . sorts none . none none none none endfm, '"\n".String) . red metaReduce( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'pi.Float) . select META-LEVEL . red metaReduce( fmod 'FOO is protecting 'INT . sorts 'Foo . none op 'a : nil -> 'Foo [none] . none none endfm, '_+_['s_['0.Int], 's_^12['0.Int]]) . Maude-Maude3.5.1/tests/Meta/metaReduce.expected0000664000175000017510000000454115036121435020715 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [none] . none none endfm, 'a.Foo) . rewrites: 1 result ResultPair: {'a.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Foo . none (op 'b : nil -> 'Foo [none] . op 'f : 'Foo -> 'Foo [strat(0)] .) op 'a : nil -> 'Foo [none] . none eq 'a.Foo = 'b.Foo [none] . endfm, 'f['a.Foo]) . rewrites: 1 result ResultPair: {'f['a.Foo], 'Foo} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is nil sorts 'Foo . none (op 'b : nil -> 'Foo [none] . op 'f : 'Foo -> 'Foo [strat(1 0)] .) op 'a : nil -> 'Foo [none] . none eq 'a.Foo = 'b.Foo [none] . endfm, 'f['a.Foo]) . rewrites: 2 result ResultPair: {'f['b.Foo], 'Foo} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is protecting 'STRING . sorts none . none none none none endfm, '"a".String) . rewrites: 1 result ResultPair: {'"a".Char, 'Char} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is protecting 'STRING . sorts none . none none none none endfm, '"this is a string".String) . rewrites: 1 result ResultPair: {'"this is a string".String, 'String} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is protecting 'STRING . sorts none . none none none none endfm, '"this is\na string".String) . rewrites: 1 result ResultPair: {'"this is\na string".String, 'String} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is protecting 'STRING . sorts none . none none none none endfm, '"\n".String) . rewrites: 1 result ResultPair: {'"\n".Char, 'Char} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'pi.Float) . rewrites: 2 result ResultPair: {'3.1415926535897931.FiniteFloat, 'FiniteFloat} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is protecting 'INT . sorts 'Foo . none op 'a : nil -> 'Foo [none] . none none endfm, '_+_['s_['0.Int], 's_^12['0.Int]]) . rewrites: 2 result ResultPair: {'s_^13['0.Zero], 'NzNat} Bye. Maude-Maude3.5.1/tests/Meta/metaReduce0000775000175000017510000000034415036121435017115 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaReduce.maude -no-banner -no-advise \ > metaReduce.out 2>&1 diff $srcdir/metaReduce.expected metaReduce.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcVariantUnify2.maude0000664000175000017510000001466215036121435022332 0ustar nileshnileshset show timing off . *** *** Test variant unification in the meta-interpreter, with new delay, filter semantics. *** load metaInterpreter fmod XOR is sort XOR . sort Elem . ops c1 c2 c3 c4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm mod VARIANT-UNIFY-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : UnificationProblem TermList -> Attribute . op options:_ : VariantOptionSet -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var V : Term . var TL : TermList . var S : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . var UP : UnificationProblem . var VO : VariantOptionSet . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(UP, TL), options: VO > insertedModule(X, Y) => < X : User | AS, problem:(UP, TL), options: VO, soln: 1, result(nil) > getVariantUnifier(Y, X, 'XOR, UP, TL, '#, VO, 0) . rl < X : User | AS, problem:(UP, TL), options: VO, soln: N, result(ML) > gotVariantUnifier(X, Y, R, S, Q) => < X : User | AS, problem:(UP, TL), options: VO, soln: (N + 1), result(ML, gotVariantUnifier(X, Y, R, S, Q)) > getVariantUnifier(Y, X, 'XOR, UP, TL, '#, VO, N) . endm erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: none > createInterpreter(interpreterManager, me, newProcess) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: delay > createInterpreter(interpreterManager, me, newProcess) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: filter > createInterpreter(interpreterManager, me, newProcess) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: (delay filter) > createInterpreter(interpreterManager, me, newProcess) . filtered variant unify in XOR : X:XOR + c1 =? Y:XOR + c2 . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: none > createInterpreter(interpreterManager, me, newProcess) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: delay > createInterpreter(interpreterManager, me, newProcess) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: filter > createInterpreter(interpreterManager, me, newProcess) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: (delay filter) > createInterpreter(interpreterManager, me, newProcess) . filtered variant unify in XOR : X:XOR + c1 =? Y:XOR + c2 such that X:XOR + c1 irreducible . mod DISJOINT-VARIANT-UNIFY-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : UnificationProblem TermList -> Attribute . op options:_ : VariantOptionSet -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var V : Term . var TL : TermList . var S S' : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . var UP : UnificationProblem . var VO : VariantOptionSet . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(UP, TL), options: VO > insertedModule(X, Y) => < X : User | AS, problem:(UP, TL), options: VO, soln: 1, result(nil) > getDisjointVariantUnifier(Y, X, 'XOR, UP, TL, '#, VO, 0) . rl < X : User | AS, problem:(UP, TL), options: VO, soln: N, result(ML) > gotDisjointVariantUnifier(X, Y, R, S, S', Q) => < X : User | AS, problem:(UP, TL), options: VO, soln: (N + 1), result(ML, gotDisjointVariantUnifier(X, Y, R, S, S', Q)) > getDisjointVariantUnifier(Y, X, 'XOR, UP, TL, '#, VO, N) . endm erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: none > createInterpreter(interpreterManager, me, newProcess) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: delay > createInterpreter(interpreterManager, me, newProcess) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: filter > createInterpreter(interpreterManager, me, newProcess) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: (delay filter) > createInterpreter(interpreterManager, me, newProcess) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: none > createInterpreter(interpreterManager, me, newProcess) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: delay > createInterpreter(interpreterManager, me, newProcess) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: filter > createInterpreter(interpreterManager, me, newProcess) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: (delay filter) > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcVariantUnify2.expected0000664000175000017510000003333415036121435023035 0ustar nileshnilesh========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: none, problem:('_+_[ 'X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | options: none, soln: 9, result( gotVariantUnifier(me, interpreter(0), 6, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 18, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotVariantUnifier(me, interpreter( 0), 0, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- 'c2.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem] ; 'Y:XOR <- '0.XOR, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: delay, problem:( '_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | options: delay, soln: 9, result( gotVariantUnifier(me, interpreter(0), 24, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotVariantUnifier(me, interpreter( 0), 0, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- 'c2.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem] ; 'Y:XOR <- '0.XOR, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: filter, problem:( '_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | options: filter, soln: 2, result( gotVariantUnifier(me, interpreter(0), 16, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 18, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: (delay filter), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | options: (delay filter), soln: 2, result(gotVariantUnifier(me, interpreter(0), 34, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== filtered variant unify in XOR : X + c1 =? Y + c2 . rewrites: 34 Unifier 1 X --> c2 + %1:XOR Y --> c1 + %1:XOR No more unifiers. ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: none, problem:('_+_[ 'X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 9 result Configuration: <> < me : User | options: none, soln: 4, result( gotVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: delay, problem:( '_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 9 result Configuration: <> < me : User | options: delay, soln: 4, result( gotVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: filter, problem:( '_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | options: filter, soln: 2, result( gotVariantUnifier(me, interpreter(0), 13, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: (delay filter), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | options: (delay filter), soln: 2, result(gotVariantUnifier(me, interpreter(0), 13, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== filtered variant unify in XOR : X + c1 =? Y + c2 such that X + c1 irreducible . rewrites: 13 Unifier 1 X --> c2 + %1:XOR Y --> c1 + %1:XOR No more unifiers. ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: none, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | options: none, soln: 9, result( gotDisjointVariantUnifier(me, interpreter(0), 6, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 18, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], 'Y:XOR <- '%1:XOR, '%), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotDisjointVariantUnifier( me, interpreter(0), 0, 'X:XOR <- '0.XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c1.Elem, 'Y:XOR <- 'c2.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem], 'Y:XOR <- '0.XOR, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: delay, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | options: delay, soln: 9, result( gotDisjointVariantUnifier(me, interpreter(0), 24, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], 'Y:XOR <- '%1:XOR, '%), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotDisjointVariantUnifier( me, interpreter(0), 0, 'X:XOR <- '0.XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c1.Elem, 'Y:XOR <- 'c2.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem], 'Y:XOR <- '0.XOR, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: filter, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | options: filter, soln: 2, result( gotDisjointVariantUnifier(me, interpreter(0), 16, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 18, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: (delay filter), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | options: (delay filter), soln: 2, result(gotDisjointVariantUnifier(me, interpreter(0), 34, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: none, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 9 result Configuration: <> < me : User | options: none, soln: 4, result( gotDisjointVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: delay, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 9 result Configuration: <> < me : User | options: delay, soln: 4, result( gotDisjointVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: filter, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | options: filter, soln: 2, result( gotDisjointVariantUnifier(me, interpreter(0), 13, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: (delay filter), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_[ 'X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | options: (delay filter), soln: 2, result(gotDisjointVariantUnifier(me, interpreter(0), 13, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) Bye. Maude-Maude3.5.1/tests/Meta/metaProcVariantUnify20000775000175000017510000000042015036121435021226 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcVariantUnify2.maude -no-banner -no-advise \ > metaProcVariantUnify2.out 2>&1 diff $srcdir/metaProcVariantUnify2.expected metaProcVariantUnify2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcVariantUnify.maude0000664000175000017510000000711015036121435022236 0ustar nileshnileshset show timing off . *** *** Test variant unification in the meta-interpreter. *** load metaInterpreter fmod XOR is sort XOR . sort Elem . ops c1 c2 c3 c4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm mod VARIANT-UNIFY-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : UnificationProblem TermList -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var V : Term . var TL : TermList . var S : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . var UP : UnificationProblem . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(UP, TL) > insertedModule(X, Y) => < X : User | AS, problem:(UP, TL), soln: 1, result(nil) > getVariantUnifier(Y, X, 'XOR, UP, TL, '#, 0) . rl < X : User | AS, problem:(UP, TL), soln: N, result(ML) > gotVariantUnifier(X, Y, R, S, Q) => < X : User | AS, problem:(UP, TL), soln: (N + 1), result(ML, gotVariantUnifier(X, Y, R, S, Q)) > getVariantUnifier(Y, X, 'XOR, UP, TL, '#, N) . endm erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . variant unify in XOR : X:XOR + c1 =? Y:XOR + c2 . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . variant unify in XOR : X:XOR + c1 =? Y:XOR + c2 such that X:XOR + c1 irreducible . mod DISJOINT-VARIANT-UNIFY-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : UnificationProblem TermList -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var V : Term . var TL : TermList . vars S S' : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . var UP : UnificationProblem . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(UP, TL) > insertedModule(X, Y) => < X : User | AS, problem:(UP, TL), soln: 1, result(nil) > getDisjointVariantUnifier(Y, X, 'XOR, UP, TL, '#, 0) . rl < X : User | AS, problem:(UP, TL), soln: N, result(ML) > gotDisjointVariantUnifier(X, Y, R, S, S', Q) => < X : User | AS, problem:(UP, TL), soln: (N + 1), result(ML, gotDisjointVariantUnifier(X, Y, R, S, S', Q)) > getDisjointVariantUnifier(Y, X, 'XOR, UP, TL, '#, N) . endm erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcVariantUnify.expected0000664000175000017510000001200715036121435022745 0ustar nileshnilesh========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 28 result Configuration: <> < me : User | soln: 9, result(gotVariantUnifier(me, interpreter(0), 6, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 18, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotVariantUnifier(me, interpreter( 0), 0, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- 'c2.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem] ; 'Y:XOR <- '0.XOR, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== variant unify in XOR : X + c1 =? Y + c2 . Unifier 1 rewrites: 6 X --> c2 + %1:XOR Y --> c1 + %1:XOR Unifier 2 rewrites: 6 X --> c2 Y --> c1 Unifier 3 rewrites: 24 X --> c1 + c2 + #1:XOR Y --> #1:XOR Unifier 4 rewrites: 24 X --> #1:XOR Y --> c1 + c2 + #1:XOR Unifier 5 rewrites: 24 X --> 0 Y --> c1 + c2 Unifier 6 rewrites: 24 X --> c1 Y --> c2 Unifier 7 rewrites: 24 X --> c1 + c2 Y --> 0 Unifier 8 rewrites: 24 X --> c1 + %1:XOR Y --> c2 + %1:XOR No more unifiers. rewrites: 24 ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 13 result Configuration: <> < me : User | soln: 4, result(gotVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== variant unify in XOR : X + c1 =? Y + c2 such that X + c1 irreducible . Unifier 1 rewrites: 3 X --> c2 + %1:XOR Y --> c1 + %1:XOR Unifier 2 rewrites: 3 X --> c2 Y --> c1 Unifier 3 rewrites: 3 X --> #1:XOR Y --> c1 + c2 + #1:XOR No more unifiers. rewrites: 3 ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem:('_+_[ 'X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 28 result Configuration: <> < me : User | soln: 9, result( gotDisjointVariantUnifier(me, interpreter(0), 6, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 18, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], 'Y:XOR <- '%1:XOR, '%), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotDisjointVariantUnifier( me, interpreter(0), 0, 'X:XOR <- '0.XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c1.Elem, 'Y:XOR <- 'c2.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem], 'Y:XOR <- '0.XOR, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem:('_+_[ 'X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 13 result Configuration: <> < me : User | soln: 4, result( gotDisjointVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) Bye. Maude-Maude3.5.1/tests/Meta/metaProcVariantUnify0000775000175000017510000000041415036121435021147 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcVariantUnify.maude -no-banner -no-advise \ > metaProcVariantUnify.out 2>&1 diff $srcdir/metaProcVariantUnify.expected metaProcVariantUnify.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcVariantMatch.maude0000664000175000017510000000373515036121435022211 0ustar nileshnileshset show timing off . *** *** Test variant unification in the meta-interpreter. *** load metaInterpreter fmod XOR is sort XOR . sort Elem . ops c1 c2 c3 c4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm mod VARIANT-MATCH-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : MatchingProblem TermList -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var V : Term . var TL : TermList . var S : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . var MP : MatchingProblem . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(MP, TL) > insertedModule(X, Y) => < X : User | AS, problem:(MP, TL), soln: 1, result(nil) > getVariantMatcher(Y, X, 'XOR, MP, TL, '#, none, 0) . rl < X : User | AS, problem:(MP, TL), soln: N, result(ML) > gotVariantMatcher(X, Y, R, S) => < X : User | AS, problem:(MP, TL), soln: (N + 1), result(ML, gotVariantMatcher(X, Y, R, S)) > getVariantMatcher(Y, X, 'XOR, MP, TL, '#, none, N) . endm erew in VARIANT-MATCH-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] <=? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . variant match in XOR : X:XOR + c1 <=? Y:XOR + c2 . erew in VARIANT-MATCH-TEST : <> < me : User | problem: ('_+_['X:XOR, 'Y:XOR] <=? '_+_['c1.Elem, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . variant match in XOR : X:XOR + Y:XOR <=? c1 + c2 . Maude-Maude3.5.1/tests/Meta/metaProcVariantMatch.expected0000664000175000017510000000447015036121435022714 0ustar nileshnilesh========================================== erewrite in VARIANT-MATCH-TEST : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem] <=? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | soln: 2, result(gotVariantMatcher(me, interpreter(0), 3, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, 'Y:XOR])), problem:('_+_['X:XOR, 'c1.Elem] <=? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== variant match in XOR : X + c1 <=? Y + c2 . rewrites: 3 Matcher 1 X --> c1 + c2 + Y No more matchers. ========================================== erewrite in VARIANT-MATCH-TEST : <> < me : User | problem:('_+_['X:XOR, 'Y:XOR] <=? '_+_['c1.Elem, 'c2.Elem], empty) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | soln: 9, result(gotVariantMatcher(me, interpreter(0), 10, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- 'c2.Elem), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem]), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem] ; 'Y:XOR <- '0.XOR), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '#1:XOR] ; 'Y:XOR <- '_+_['c2.Elem, '#1:XOR]), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '_+_['c2.Elem, '#1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '#1:XOR]), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '#1:XOR] ; 'Y:XOR <- '#1:XOR), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '#1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '#1:XOR])), problem:('_+_['X:XOR, 'Y:XOR] <=? '_+_['c1.Elem, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== variant match in XOR : X + Y <=? c1 + c2 . rewrites: 10 Matcher 1 X --> c1 Y --> c2 Matcher 2 X --> c2 Y --> c1 Matcher 3 X --> 0 Y --> c1 + c2 Matcher 4 X --> c1 + c2 Y --> 0 Matcher 5 X --> c1 + #1:XOR Y --> c2 + #1:XOR Matcher 6 X --> c2 + #1:XOR Y --> c1 + #1:XOR Matcher 7 X --> c1 + c2 + #1:XOR Y --> #1:XOR Matcher 8 X --> #1:XOR Y --> c1 + c2 + #1:XOR No more matchers. Bye. Maude-Maude3.5.1/tests/Meta/metaProcVariantMatch0000775000175000017510000000041415036121435021111 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcVariantMatch.maude -no-banner -no-advise \ > metaProcVariantMatch.out 2>&1 diff $srcdir/metaProcVariantMatch.expected metaProcVariantMatch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcVariant.maude0000664000175000017510000001055015036121435021225 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test variant generation in the meta-interpreter. *** load metaInterpreter fmod XOR is sort XOR . sort Elem . ops c1 c2 c3 c4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm mod VARIANT-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : Term TermList -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . vars T V : Term . var TL : TermList . var S : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(T, TL) > insertedModule(X, Y) => < X : User | AS, problem:(T, TL), soln: 1, result(nil) > getVariant(Y, X, 'XOR, T, TL, false, '#, 0) . rl < X : User | AS, problem:(T, TL), soln: N, result(ML) > gotVariant(X, Y, R, V, S, Q, P, B) => < X : User | AS, problem:(T, TL), soln: (N + 1), result(ML, gotVariant(X, Y, R, V, S, Q, P, B)) > getVariant(Y, X, 'XOR, T, TL, false, '#, N) . endm erew in VARIANT-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . get variants in XOR : X:XOR + c1 . erew in VARIANT-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > createInterpreter(interpreterManager, me, newProcess) . get variants in XOR : X:XOR + c1 such that X:XOR + a irreducible . erew in VARIANT-TEST : <> < me : User | problem: ('_+_['X:XOR, 'Y:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . get variants in XOR : X:XOR + Y:XOR + c1 . erew in VARIANT-TEST : <> < me : User | problem: ('_+_['X:XOR, 'Y:XOR, 'c1.Elem], ('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem])) > createInterpreter(interpreterManager, me, newProcess) . get variants in XOR : X:XOR + Y:XOR + c1 such that X:XOR + c1, X:XOR + c2 irreducible . mod VARIANT-TEST2 is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : Term TermList -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . vars T V : Term . var TL : TermList . var S : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(T, TL) > insertedModule(X, Y) => < X : User | AS, problem:(T, TL), soln: 1, result(nil) > getVariant(Y, X, 'XOR, T, TL, true, '#, 0) . rl < X : User | AS, problem:(T, TL), soln: N, result(ML) > gotVariant(X, Y, R, V, S, Q, P, B) => < X : User | AS, problem:(T, TL), soln: (N + 1), result(ML, gotVariant(X, Y, R, V, S, Q, P, B)) > getVariant(Y, X, 'XOR, T, TL, true, '#, N) . endm erew in VARIANT-TEST2 : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . get irredundant variants in XOR : X:XOR + c1 . erew in VARIANT-TEST2 : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > createInterpreter(interpreterManager, me, newProcess) . get irredundant variants in XOR : X:XOR + c1 such that X:XOR + a irreducible . erew in VARIANT-TEST2 : <> < me : User | problem: ('_+_['X:XOR, 'Y:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . get irredundant variants in XOR : X:XOR + Y:XOR + c1 . erew in VARIANT-TEST2 : <> < me : User | problem: ('_+_['X:XOR, 'Y:XOR, 'c1.Elem], ('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem])) > createInterpreter(interpreterManager, me, newProcess) . get irredundant variants in XOR : X:XOR + Y:XOR + c1 such that X:XOR + c1, X:XOR + c2 irreducible . Maude-Maude3.5.1/tests/Meta/metaProcVariant.expected0000664000175000017510000004525215036121435021742 0ustar nileshnilesh========================================== erewrite in VARIANT-TEST : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 11 result Configuration: <> < me : User | soln: 5, result(gotVariant(me, interpreter(0), 0, '_+_['c1.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, none, false), gotVariant(me, interpreter(0), 3, 'c1.Elem, 'X:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], '@, 0, false)), problem:('_+_['X:XOR, 'c1.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== get variants in XOR : c1 + X . Variant 1 rewrites: 0 XOR: c1 + #1:XOR X --> #1:XOR Variant 2 rewrites: 3 Elem: c1 X --> 0 Variant 3 rewrites: 3 XOR: 0 X --> c1 Variant 4 rewrites: 3 XOR: %1:XOR X --> c1 + %1:XOR No more variants. rewrites: 3 ========================================== erewrite in VARIANT-TEST : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 9 result Configuration: <> < me : User | soln: 4, result(gotVariant(me, interpreter(0), 0, '_+_['c1.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, none, false), gotVariant(me, interpreter(0), 2, '0.XOR, 'X:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], '@, 0, false)), problem:('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== get variants in XOR : c1 + X such that X + a irreducible . Variant 1 rewrites: 0 XOR: c1 + #1:XOR X --> #1:XOR Variant 2 rewrites: 2 XOR: 0 X --> c1 Variant 3 rewrites: 2 XOR: %1:XOR X --> c1 + %1:XOR No more variants. rewrites: 2 ========================================== erewrite in VARIANT-TEST : <> < me : User | problem:('_+_['X:XOR, 'Y:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 45 result Configuration: <> < me : User | soln: 22, result(gotVariant(me, interpreter(0), 0, '_+_['c1.Elem, '%1:XOR, '%2:XOR], 'X:XOR <- '%1:XOR ; 'Y:XOR <- '%2:XOR, '%, none, false), gotVariant(me, interpreter(0), 10, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '0.XOR ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '_+_['c1.Elem, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '@1:XOR, 'X:XOR <- '@1:XOR ; 'Y:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR, '@3:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '_+_['@1:XOR, '@3:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '_+_['c1.Elem, '@2:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['@1:XOR, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, 'c1.Elem, 'X:XOR <- '@1:XOR ; 'Y:XOR <- '@1:XOR, '@, 0, false), gotVariant(me, interpreter(0), 28, '%1:XOR, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 1, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR] ; 'Y:XOR <- '0.XOR, '%, 2, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%, 3, true), gotVariant(me, interpreter(0), 0, '_+_[ '%2:XOR, '%3:XOR], 'X:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR] ; 'Y:XOR <- '_+_['%1:XOR, '%2:XOR], '%, 3, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%2:XOR] ; 'Y:XOR <- '_+_['%1:XOR, '%2:XOR], '%, 3, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR] ; 'Y:XOR <- '%2:XOR, '%, 3, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 5, true), gotVariant(me, interpreter( 0), 0, '_+_['%2:XOR, '%3:XOR], 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR], '%, 5, true), gotVariant(me, interpreter(0), 0, '%1:XOR, 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%2:XOR], '%, 5, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '%2:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR], '%, 5, false)), problem:('_+_[ 'X:XOR, 'Y:XOR, 'c1.Elem], empty) > noSuchResult(me, interpreter(0), 8, true) ========================================== get variants in XOR : X + c1 + Y . Variant 1 rewrites: 0 XOR: c1 + #1:XOR + #2:XOR X --> #1:XOR Y --> #2:XOR Variant 2 rewrites: 10 XOR: c1 + %1:XOR X --> 0 Y --> %1:XOR Variant 3 rewrites: 10 XOR: c1 + %1:XOR X --> %1:XOR Y --> 0 Variant 4 rewrites: 10 XOR: %1:XOR + %2:XOR X --> c1 + %2:XOR Y --> %1:XOR Variant 5 rewrites: 10 XOR: %1:XOR X --> c1 Y --> %1:XOR Variant 6 rewrites: 10 XOR: %1:XOR + %2:XOR X --> %1:XOR Y --> c1 + %2:XOR Variant 7 rewrites: 10 XOR: %1:XOR X --> %1:XOR Y --> c1 Variant 8 rewrites: 10 XOR: c1 + %2:XOR + %3:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR + %3:XOR Variant 9 rewrites: 10 XOR: c1 + %2:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR Variant 10 rewrites: 10 XOR: c1 + %2:XOR X --> %1:XOR Y --> %1:XOR + %2:XOR Variant 11 rewrites: 10 Elem: c1 X --> %1:XOR Y --> %1:XOR Variant 12 rewrites: 38 XOR: #1:XOR X --> 0 Y --> c1 + #1:XOR Variant 13 rewrites: 38 XOR: #1:XOR X --> c1 + #1:XOR Y --> 0 Variant 14 rewrites: 38 XOR: 0 X --> c1 + #1:XOR Y --> #1:XOR Variant 15 rewrites: 38 XOR: #2:XOR + #3:XOR X --> c1 + #1:XOR + #3:XOR Y --> #1:XOR + #2:XOR Variant 16 rewrites: 38 XOR: #1:XOR X --> c1 + #2:XOR Y --> #1:XOR + #2:XOR Variant 17 rewrites: 38 XOR: #1:XOR X --> c1 + #1:XOR + #2:XOR Y --> #2:XOR Variant 18 rewrites: 38 XOR: 0 X --> #1:XOR Y --> c1 + #1:XOR Variant 19 rewrites: 38 XOR: #2:XOR + #3:XOR X --> #1:XOR + #2:XOR Y --> c1 + #1:XOR + #3:XOR Variant 20 rewrites: 38 XOR: #1:XOR X --> #1:XOR + #2:XOR Y --> c1 + #2:XOR Variant 21 rewrites: 38 XOR: #1:XOR X --> #2:XOR Y --> c1 + #1:XOR + #2:XOR No more variants. rewrites: 46 ========================================== erewrite in VARIANT-TEST : <> < me : User | problem:('_+_['X:XOR, 'Y:XOR, 'c1.Elem], '_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 27 result Configuration: <> < me : User | soln: 13, result(gotVariant(me, interpreter(0), 0, '_+_['c1.Elem, '%1:XOR, '%2:XOR], 'X:XOR <- '%1:XOR ; 'Y:XOR <- '%2:XOR, '%, none, false), gotVariant(me, interpreter(0), 7, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '@1:XOR, 'X:XOR <- '@1:XOR ; 'Y:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR, '@3:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '_+_['@1:XOR, '@3:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '_+_['c1.Elem, '@2:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['@1:XOR, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, 'c1.Elem, 'X:XOR <- '@1:XOR ; 'Y:XOR <- '@1:XOR, '@, 0, false), gotVariant(me, interpreter(0), 12, '0.XOR, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 2, true), gotVariant(me, interpreter( 0), 0, '_+_['%2:XOR, '%3:XOR], 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR], '%, 2, true), gotVariant(me, interpreter(0), 0, '%1:XOR, 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%2:XOR], '%, 2, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '%2:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR], '%, 2, false)), problem:('_+_[ 'X:XOR, 'Y:XOR, 'c1.Elem], '_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem]) > noSuchResult(me, interpreter(0), 4, true) ========================================== get variants in XOR : X + c1 + Y such that X + c1, X + c2 irreducible . Variant 1 rewrites: 0 XOR: c1 + #1:XOR + #2:XOR X --> #1:XOR Y --> #2:XOR Variant 2 rewrites: 7 XOR: c1 + %1:XOR X --> %1:XOR Y --> 0 Variant 3 rewrites: 7 XOR: %1:XOR + %2:XOR X --> %1:XOR Y --> c1 + %2:XOR Variant 4 rewrites: 7 XOR: %1:XOR X --> %1:XOR Y --> c1 Variant 5 rewrites: 7 XOR: c1 + %2:XOR + %3:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR + %3:XOR Variant 6 rewrites: 7 XOR: c1 + %2:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR Variant 7 rewrites: 7 XOR: c1 + %2:XOR X --> %1:XOR Y --> %1:XOR + %2:XOR Variant 8 rewrites: 7 Elem: c1 X --> %1:XOR Y --> %1:XOR Variant 9 rewrites: 19 XOR: 0 X --> #1:XOR Y --> c1 + #1:XOR Variant 10 rewrites: 19 XOR: #2:XOR + #3:XOR X --> #1:XOR + #2:XOR Y --> c1 + #1:XOR + #3:XOR Variant 11 rewrites: 19 XOR: #1:XOR X --> #1:XOR + #2:XOR Y --> c1 + #2:XOR Variant 12 rewrites: 19 XOR: #1:XOR X --> #2:XOR Y --> c1 + #1:XOR + #2:XOR No more variants. rewrites: 23 ========================================== erewrite in VARIANT-TEST2 : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 11 result Configuration: <> < me : User | soln: 5, result(gotVariant(me, interpreter(0), 3, '_+_['c1.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, none, false), gotVariant(me, interpreter(0), 0, 'c1.Elem, 'X:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], '@, 0, false)), problem:('_+_['X:XOR, 'c1.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== get irredundant variants in XOR : c1 + X . rewrites: 3 Variant 1 XOR: c1 + #1:XOR X --> #1:XOR Variant 2 Elem: c1 X --> 0 Variant 3 XOR: 0 X --> c1 Variant 4 XOR: %1:XOR X --> c1 + %1:XOR No more variants. ========================================== erewrite in VARIANT-TEST2 : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 9 result Configuration: <> < me : User | soln: 4, result(gotVariant(me, interpreter(0), 2, '_+_['c1.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, none, false), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], '@, 0, false)), problem:('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== get irredundant variants in XOR : c1 + X such that X + a irreducible . rewrites: 2 Variant 1 XOR: c1 + #1:XOR X --> #1:XOR Variant 2 XOR: 0 X --> c1 Variant 3 XOR: %1:XOR X --> c1 + %1:XOR No more variants. ========================================== erewrite in VARIANT-TEST2 : <> < me : User | problem:('_+_['X:XOR, 'Y:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 45 result Configuration: <> < me : User | soln: 22, result(gotVariant(me, interpreter(0), 46, '_+_['c1.Elem, '%1:XOR, '%2:XOR], 'X:XOR <- '%1:XOR ; 'Y:XOR <- '%2:XOR, '%, none, false), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '0.XOR ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '_+_['c1.Elem, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '@1:XOR, 'X:XOR <- '@1:XOR ; 'Y:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR, '@3:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '_+_['@1:XOR, '@3:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '_+_['c1.Elem, '@2:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['@1:XOR, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, 'c1.Elem, 'X:XOR <- '@1:XOR ; 'Y:XOR <- '@1:XOR, '@, 0, false), gotVariant(me, interpreter(0), 0, '%1:XOR, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 1, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR] ; 'Y:XOR <- '0.XOR, '%, 2, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%, 3, true), gotVariant(me, interpreter(0), 0, '_+_[ '%2:XOR, '%3:XOR], 'X:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR] ; 'Y:XOR <- '_+_['%1:XOR, '%2:XOR], '%, 3, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%2:XOR] ; 'Y:XOR <- '_+_['%1:XOR, '%2:XOR], '%, 3, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR] ; 'Y:XOR <- '%2:XOR, '%, 3, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 5, true), gotVariant(me, interpreter( 0), 0, '_+_['%2:XOR, '%3:XOR], 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR], '%, 5, true), gotVariant(me, interpreter(0), 0, '%1:XOR, 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%2:XOR], '%, 5, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '%2:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR], '%, 5, false)), problem:('_+_[ 'X:XOR, 'Y:XOR, 'c1.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== get irredundant variants in XOR : X + c1 + Y . rewrites: 46 Variant 1 XOR: c1 + #1:XOR + #2:XOR X --> #1:XOR Y --> #2:XOR Variant 2 XOR: c1 + %1:XOR X --> 0 Y --> %1:XOR Variant 3 XOR: c1 + %1:XOR X --> %1:XOR Y --> 0 Variant 4 XOR: %1:XOR + %2:XOR X --> c1 + %2:XOR Y --> %1:XOR Variant 5 XOR: %1:XOR X --> c1 Y --> %1:XOR Variant 6 XOR: %1:XOR + %2:XOR X --> %1:XOR Y --> c1 + %2:XOR Variant 7 XOR: %1:XOR X --> %1:XOR Y --> c1 Variant 8 XOR: c1 + %2:XOR + %3:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR + %3:XOR Variant 9 XOR: c1 + %2:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR Variant 10 XOR: c1 + %2:XOR X --> %1:XOR Y --> %1:XOR + %2:XOR Variant 11 Elem: c1 X --> %1:XOR Y --> %1:XOR Variant 12 XOR: #1:XOR X --> 0 Y --> c1 + #1:XOR Variant 13 XOR: #1:XOR X --> c1 + #1:XOR Y --> 0 Variant 14 XOR: 0 X --> c1 + #1:XOR Y --> #1:XOR Variant 15 XOR: #2:XOR + #3:XOR X --> c1 + #1:XOR + #3:XOR Y --> #1:XOR + #2:XOR Variant 16 XOR: #1:XOR X --> c1 + #2:XOR Y --> #1:XOR + #2:XOR Variant 17 XOR: #1:XOR X --> c1 + #1:XOR + #2:XOR Y --> #2:XOR Variant 18 XOR: 0 X --> #1:XOR Y --> c1 + #1:XOR Variant 19 XOR: #2:XOR + #3:XOR X --> #1:XOR + #2:XOR Y --> c1 + #1:XOR + #3:XOR Variant 20 XOR: #1:XOR X --> #1:XOR + #2:XOR Y --> c1 + #2:XOR Variant 21 XOR: #1:XOR X --> #2:XOR Y --> c1 + #1:XOR + #2:XOR No more variants. ========================================== erewrite in VARIANT-TEST2 : <> < me : User | problem:('_+_['X:XOR, 'Y:XOR, 'c1.Elem], '_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 27 result Configuration: <> < me : User | soln: 13, result(gotVariant(me, interpreter(0), 23, '_+_['c1.Elem, '%1:XOR, '%2:XOR], 'X:XOR <- '%1:XOR ; 'Y:XOR <- '%2:XOR, '%, none, false), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '@1:XOR, 'X:XOR <- '@1:XOR ; 'Y:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR, '@3:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '_+_['@1:XOR, '@3:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '_+_['c1.Elem, '@2:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['@1:XOR, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, 'c1.Elem, 'X:XOR <- '@1:XOR ; 'Y:XOR <- '@1:XOR, '@, 0, false), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 2, true), gotVariant(me, interpreter( 0), 0, '_+_['%2:XOR, '%3:XOR], 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR], '%, 2, true), gotVariant(me, interpreter(0), 0, '%1:XOR, 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%2:XOR], '%, 2, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '%2:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR], '%, 2, false)), problem:('_+_[ 'X:XOR, 'Y:XOR, 'c1.Elem], '_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== get irredundant variants in XOR : X + c1 + Y such that X + c1, X + c2 irreducible . rewrites: 23 Variant 1 XOR: c1 + #1:XOR + #2:XOR X --> #1:XOR Y --> #2:XOR Variant 2 XOR: c1 + %1:XOR X --> %1:XOR Y --> 0 Variant 3 XOR: %1:XOR + %2:XOR X --> %1:XOR Y --> c1 + %2:XOR Variant 4 XOR: %1:XOR X --> %1:XOR Y --> c1 Variant 5 XOR: c1 + %2:XOR + %3:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR + %3:XOR Variant 6 XOR: c1 + %2:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR Variant 7 XOR: c1 + %2:XOR X --> %1:XOR Y --> %1:XOR + %2:XOR Variant 8 Elem: c1 X --> %1:XOR Y --> %1:XOR Variant 9 XOR: 0 X --> #1:XOR Y --> c1 + #1:XOR Variant 10 XOR: #2:XOR + #3:XOR X --> #1:XOR + #2:XOR Y --> c1 + #1:XOR + #3:XOR Variant 11 XOR: #1:XOR X --> #1:XOR + #2:XOR Y --> c1 + #2:XOR Variant 12 XOR: #1:XOR X --> #2:XOR Y --> c1 + #1:XOR + #2:XOR No more variants. Bye. Maude-Maude3.5.1/tests/Meta/metaProcVariant0000775000175000017510000000037015036121435020135 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcVariant.maude -no-banner -no-advise \ > metaProcVariant.out 2>&1 diff $srcdir/metaProcVariant.expected metaProcVariant.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcUnify.maude0000664000175000017510000001637115036121435020722 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test unification and disjoint unification in the meta-interpreter. *** load metaInterpreter mod UNIFY-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getUnifier(Y, X, 'RAT, U, '#, 0) . rl < X : User | AS, problem: U, soln: N > gotUnifier(X, Y, S, Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotUnifier(X, Y, S, Q) > getUnifier(Y, X, 'RAT, U, '#, N) . endm erew in UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_['Z:Nat, 'W:Nat]) > createInterpreter(interpreterManager, me, newProcess) . unify in RAT : X:Nat + Y:Nat =? W:Nat + Z:Nat . erew in UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_['Z:Nat, 'W:Nat]) > createInterpreter(interpreterManager, me, newProcess) . unify in RAT : X:Nat + X:Nat =? W:Nat + Z:Nat . fmod FOO is sort Foo . op __ : Foo Foo -> Foo [assoc] . endfm mod UNIFY-TEST2 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('FOO, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getUnifier(Y, X, 'FOO, U, '%, 0) . rl < X : User | AS, problem: U, soln: N > gotUnifier(X, Y, S, Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotUnifier(X, Y, S, Q) > getUnifier(Y, X, 'FOO, U, '%, N) . endm erew in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['Z:Foo, 'W:Foo]) > createInterpreter(interpreterManager, me, newProcess) . unify in FOO : X:Foo Y:Foo =? W:Foo Z:Foo . erew in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'X:Foo] =? '__['Z:Foo, 'W:Foo]) > createInterpreter(interpreterManager, me, newProcess) . unify in FOO : X:Foo X:Foo =? W:Foo Z:Foo . erew in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['Z:Foo, 'X:Foo]) > createInterpreter(interpreterManager, me, newProcess) . unify in FOO : X:Foo Y:Foo =? W:Foo X:Foo . mod DISJOINT-UNIFY-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S S' : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getDisjointUnifier(Y, X, 'RAT, U, '@, 0) . rl < X : User | AS, problem: U, soln: N > gotDisjointUnifier(X, Y, S, S', Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotDisjointUnifier(X, Y, S, S', Q) > getDisjointUnifier(Y, X, 'RAT, U, '@, N) . endm erew in DISJOINT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat]) > createInterpreter(interpreterManager, me, newProcess) . erew in DISJOINT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_['X:Nat, 'Y:Nat]) > createInterpreter(interpreterManager, me, newProcess) . mod DISJOINT-UNIFY-TEST2 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S S' : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('FOO, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getDisjointUnifier(Y, X, 'FOO, U, '#, 0) . rl < X : User | AS, problem: U, soln: N > gotDisjointUnifier(X, Y, S, S', Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotDisjointUnifier(X, Y, S, S', Q) > getDisjointUnifier(Y, X, 'FOO, U, '#, N) . endm erew in DISJOINT-UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['X:Foo, 'Y:Foo]) > createInterpreter(interpreterManager, me, newProcess) . erew in DISJOINT-UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo, 'X:Foo] =? '__['X:Foo, 'X:Foo]) > createInterpreter(interpreterManager, me, newProcess) . *** irredundant unifiers fmod BAG is sorts Elt Bag . subsort Elt < Bag . op empty : -> Bag . op __ : Bag Bag -> Bag [assoc comm id: empty] . endfm mod IRRED-UNIFY-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('BAG, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getIrredundantUnifier(Y, X, 'BAG, U, '#, 0) . rl < X : User | AS, problem: U, soln: N > gotIrredundantUnifier(X, Y, S, Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotIrredundantUnifier(X, Y, S, Q) > getIrredundantUnifier(Y, X, 'BAG, U, '#, N) . endm erew in IRRED-UNIFY-TEST : <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag]) > createInterpreter(interpreterManager, me, newProcess) . mod IRRED-DISJOINT-UNIFY-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S S' : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('BAG, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getIrredundantDisjointUnifier(Y, X, 'BAG, U, '@, 0) . rl < X : User | AS, problem: U, soln: N > gotIrredundantDisjointUnifier(X, Y, S, S', Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotIrredundantDisjointUnifier(X, Y, S, S', Q) > getIrredundantDisjointUnifier(Y, X, 'BAG, U, '@, N) . endm erew in IRRED-DISJOINT-UNIFY-TEST : <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag]) > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcUnify.expected0000664000175000017510000003123515036121435021424 0ustar nileshnilesh========================================== erewrite in UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_['Z:Nat, 'W:Nat]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_[ 'Z:Nat, 'W:Nat]), soln: 8, result: gotUnifier(me, interpreter(0), 'W:Nat <- '%2:Nat ; 'X:Nat <- '%1:Nat ; 'Y:Nat <- '%2:Nat ; 'Z:Nat <- '%1:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '%2:Nat ; 'X:Nat <- '%1:Nat ; 'Y:Nat <- '_+_['%2:Nat, '%3:Nat] ; 'Z:Nat <- '_+_['%1:Nat, '%3:Nat], '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '%2:Nat ; 'X:Nat <- '%2:Nat ; 'Y:Nat <- '%1:Nat ; 'Z:Nat <- '%1:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '%2:Nat ; 'X:Nat <- '_+_['%2:Nat, '%3:Nat] ; 'Y:Nat <- '%1:Nat ; 'Z:Nat <- '_+_['%1:Nat, '%3:Nat], '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%1:Nat, '%3:Nat] ; 'X:Nat <- '%1:Nat ; 'Y:Nat <- '_+_['%2:Nat, '%3:Nat] ; 'Z:Nat <- '%2:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%1:Nat, '%3:Nat] ; 'X:Nat <- '_+_['%2:Nat, '%3:Nat] ; 'Y:Nat <- '%1:Nat ; 'Z:Nat <- '%2:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%3:Nat, '%4:Nat] ; 'X:Nat <- '_+_['%1:Nat, '%3:Nat] ; 'Y:Nat <- '_+_['%2:Nat, '%4:Nat] ; 'Z:Nat <- '_+_['%1:Nat, '%2:Nat], '%) > noSuchResult(me, interpreter(0), true) ========================================== unify in RAT : X:Nat + Y:Nat =? W:Nat + Z . Unifier 1 X:Nat --> #1:Nat + #3:Nat Y:Nat --> #2:Nat + #4:Nat Z --> #1:Nat + #2:Nat W:Nat --> #3:Nat + #4:Nat Unifier 2 X:Nat --> #2:Nat + #3:Nat Y:Nat --> #1:Nat Z --> #1:Nat + #3:Nat W:Nat --> #2:Nat Unifier 3 X:Nat --> #1:Nat Y:Nat --> #2:Nat + #3:Nat Z --> #1:Nat + #3:Nat W:Nat --> #2:Nat Unifier 4 X:Nat --> #2:Nat + #3:Nat Y:Nat --> #1:Nat Z --> #2:Nat W:Nat --> #1:Nat + #3:Nat Unifier 5 X:Nat --> #1:Nat Y:Nat --> #2:Nat Z --> #1:Nat W:Nat --> #2:Nat Unifier 6 X:Nat --> #1:Nat Y:Nat --> #2:Nat + #3:Nat Z --> #2:Nat W:Nat --> #1:Nat + #3:Nat Unifier 7 X:Nat --> #2:Nat Y:Nat --> #1:Nat Z --> #1:Nat W:Nat --> #2:Nat ========================================== erewrite in UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_['Z:Nat, 'W:Nat]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 15 result Configuration: <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_[ 'Z:Nat, 'W:Nat]), soln: 6, result: gotUnifier(me, interpreter(0), 'W:Nat <- '%1:Nat ; 'X:Nat <- '%1:Nat ; 'Z:Nat <- '%1:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '%1:Nat ; 'X:Nat <- '_+_['%1:Nat, '%2:Nat] ; 'Z:Nat <- '_+_['%1:Nat, '%2:Nat, '%2:Nat], '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%2:Nat, '%2:Nat] ; 'X:Nat <- '_+_['%1:Nat, '%2:Nat] ; 'Z:Nat <- '_+_['%1:Nat, '%1:Nat], '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%1:Nat, '%2:Nat, '%2:Nat] ; 'X:Nat <- '_+_['%1:Nat, '%2:Nat] ; 'Z:Nat <- '%1:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%2:Nat, '%3:Nat, '%3:Nat] ; 'X:Nat <- '_+_['%1:Nat, '%2:Nat, '%3:Nat] ; 'Z:Nat <- '_+_['%1:Nat, '%1:Nat, '%2:Nat], '%) > noSuchResult(me, interpreter(0), true) ========================================== unify in RAT : X:Nat + X:Nat =? W:Nat + Z . Unifier 1 X:Nat --> #1:Nat + #2:Nat + #3:Nat Z --> #1:Nat + #1:Nat + #2:Nat W:Nat --> #2:Nat + #3:Nat + #3:Nat Unifier 2 X:Nat --> #1:Nat + #2:Nat Z --> #1:Nat + #2:Nat + #2:Nat W:Nat --> #1:Nat Unifier 3 X:Nat --> #1:Nat + #2:Nat Z --> #1:Nat + #1:Nat W:Nat --> #2:Nat + #2:Nat Unifier 4 X:Nat --> #1:Nat + #2:Nat Z --> #1:Nat W:Nat --> #1:Nat + #2:Nat + #2:Nat Unifier 5 X:Nat --> #1:Nat Z --> #1:Nat W:Nat --> #1:Nat ========================================== erewrite in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['Z:Foo, 'W:Foo]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 9 result Configuration: <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__[ 'Z:Foo, 'W:Foo]), soln: 4, result: gotUnifier(me, interpreter(0), 'W:Foo <- '#2:Foo ; 'X:Foo <- '#1:Foo ; 'Y:Foo <- '#2:Foo ; 'Z:Foo <- '#1:Foo, '#), result: gotUnifier(me, interpreter(0), 'W:Foo <- '#2:Foo ; 'X:Foo <- '#1:Foo ; 'Y:Foo <- '__['#3:Foo, '#2:Foo] ; 'Z:Foo <- '__['#1:Foo, '#3:Foo], '#), result: gotUnifier(me, interpreter(0), 'W:Foo <- '__['#3:Foo, '#1:Foo] ; 'X:Foo <- '__['#2:Foo, '#3:Foo] ; 'Y:Foo <- '#1:Foo ; 'Z:Foo <- '#2:Foo, '#) > noSuchResult(me, interpreter(0), true) ========================================== unify in FOO : X:Foo Y:Foo =? W:Foo Z:Foo . Unifier 1 X:Foo --> #2:Foo #3:Foo Y:Foo --> #1:Foo W:Foo --> #2:Foo Z:Foo --> #3:Foo #1:Foo Unifier 2 X:Foo --> #1:Foo Y:Foo --> #3:Foo #2:Foo W:Foo --> #1:Foo #3:Foo Z:Foo --> #2:Foo Unifier 3 X:Foo --> #1:Foo Y:Foo --> #2:Foo W:Foo --> #1:Foo Z:Foo --> #2:Foo ========================================== erewrite in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'X:Foo] =? '__['Z:Foo, 'W:Foo]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 9 result Configuration: <> < me : User | problem: ('__['X:Foo, 'X:Foo] =? '__[ 'Z:Foo, 'W:Foo]), soln: 4, result: gotUnifier(me, interpreter(0), 'W:Foo <- '#1:Foo ; 'X:Foo <- '#1:Foo ; 'Z:Foo <- '#1:Foo, '#), result: gotUnifier(me, interpreter(0), 'W:Foo <- '#1:Foo ; 'X:Foo <- '__['#2:Foo, '#1:Foo] ; 'Z:Foo <- '__['#2:Foo, '#1:Foo, '#2:Foo], '#), result: gotUnifier(me, interpreter(0), 'W:Foo <- '__['#2:Foo, '#1:Foo, '#2:Foo] ; 'X:Foo <- '__['#1:Foo, '#2:Foo] ; 'Z:Foo <- '#1:Foo, '#) > noSuchResult(me, interpreter(0), true) ========================================== unify in FOO : X:Foo X:Foo =? W:Foo Z:Foo . Unifier 1 X:Foo --> #2:Foo #1:Foo W:Foo --> #2:Foo #1:Foo #2:Foo Z:Foo --> #1:Foo Unifier 2 X:Foo --> #1:Foo #2:Foo W:Foo --> #1:Foo Z:Foo --> #2:Foo #1:Foo #2:Foo Unifier 3 X:Foo --> #1:Foo W:Foo --> #1:Foo Z:Foo --> #1:Foo ========================================== erewrite in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['Z:Foo, 'X:Foo]) > createInterpreter(interpreterManager, me, newProcess) . Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. rewrites: 7 result Configuration: <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__[ 'Z:Foo, 'X:Foo]), soln: 3, result: gotUnifier(me, interpreter(0), 'X:Foo <- '#1:Foo ; 'Y:Foo <- '#1:Foo ; 'Z:Foo <- '#1:Foo, '#), result: gotUnifier(me, interpreter(0), 'X:Foo <- '#1:Foo ; 'Y:Foo <- '__['#2:Foo, '#1:Foo] ; 'Z:Foo <- '__['#1:Foo, '#2:Foo], '#) > noSuchResult(me, interpreter(0), false) ========================================== unify in FOO : X:Foo Y:Foo =? W:Foo X:Foo . Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. Unifier 1 X:Foo --> #1:Foo Y:Foo --> #2:Foo #1:Foo W:Foo --> #1:Foo #2:Foo Unifier 2 X:Foo --> #1:Foo Y:Foo --> #1:Foo W:Foo --> #1:Foo Warning: Some unifiers may have been missed due to incomplete unification algorithm(s). ========================================== erewrite in DISJOINT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat]), soln: 8, result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#2:Nat, 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#2:Nat, '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '#1:Nat ; 'Y:Nat <- '_+_['#2:Nat, '#3:Nat], 'X:Nat <- '#2:Nat ; 'Y:Nat <- '_+_['#1:Nat, '#3:Nat], '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '#1:Nat ; 'Y:Nat <- '_+_['#2:Nat, '#3:Nat], 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '#2:Nat, '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '#2:Nat ; 'Y:Nat <- '#1:Nat, 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#2:Nat, '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '_+_['#2:Nat, '#4:Nat], 'X:Nat <- '_+_['#1:Nat, '#2:Nat] ; 'Y:Nat <- '_+_['#3:Nat, '#4:Nat], '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#2:Nat, '#3:Nat] ; 'Y:Nat <- '#1:Nat, 'X:Nat <- '#2:Nat ; 'Y:Nat <- '_+_['#1:Nat, '#3:Nat], '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#2:Nat, '#3:Nat] ; 'Y:Nat <- '#1:Nat, 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '#2:Nat, '#) > noSuchResult(me, interpreter(0), true) ========================================== erewrite in DISJOINT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_['X:Nat, 'Y:Nat]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 15 result Configuration: <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_[ 'X:Nat, 'Y:Nat]), soln: 6, result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '#1:Nat, 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#1:Nat, '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#1:Nat, '#2:Nat], 'X:Nat <- '#1:Nat ; 'Y:Nat <- '_+_['#1:Nat, '#2:Nat, '#2:Nat], '#), result: gotDisjointUnifier( me, interpreter(0), 'X:Nat <- '_+_['#1:Nat, '#2:Nat], 'X:Nat <- '_+_['#1:Nat, '#1:Nat] ; 'Y:Nat <- '_+_['#2:Nat, '#2:Nat], '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#1:Nat, '#2:Nat], 'X:Nat <- '_+_['#1:Nat, '#2:Nat, '#2:Nat] ; 'Y:Nat <- '#1:Nat, '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#1:Nat, '#2:Nat, '#3:Nat], 'X:Nat <- '_+_['#1:Nat, '#1:Nat, '#2:Nat] ; 'Y:Nat <- '_+_['#2:Nat, '#3:Nat, '#3:Nat], '#) > noSuchResult(me, interpreter(0), true) ========================================== erewrite in DISJOINT-UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['X:Foo, 'Y:Foo]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 9 result Configuration: <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__[ 'X:Foo, 'Y:Foo]), soln: 4, result: gotDisjointUnifier(me, interpreter(0), 'X:Foo <- '%1:Foo ; 'Y:Foo <- '%2:Foo, 'X:Foo <- '%1:Foo ; 'Y:Foo <- '%2:Foo, '%), result: gotDisjointUnifier(me, interpreter(0), 'X:Foo <- '%1:Foo ; 'Y:Foo <- '__['%3:Foo, '%2:Foo], 'X:Foo <- '__['%1:Foo, '%3:Foo] ; 'Y:Foo <- '%2:Foo, '%), result: gotDisjointUnifier(me, interpreter(0), 'X:Foo <- '__['%2:Foo, '%3:Foo] ; 'Y:Foo <- '%1:Foo, 'X:Foo <- '%2:Foo ; 'Y:Foo <- '__['%3:Foo, '%1:Foo], '%) > noSuchResult(me, interpreter(0), true) ========================================== erewrite in DISJOINT-UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo, 'X:Foo] =? '__['X:Foo, 'X:Foo]) > createInterpreter( interpreterManager, me, newProcess) . Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. rewrites: 7 result Configuration: <> < me : User | problem: ('__['X:Foo, 'Y:Foo, 'X:Foo] =? '__['X:Foo, 'X:Foo]), soln: 3, result: gotDisjointUnifier(me, interpreter( 0), 'X:Foo <- '%1:Foo ; 'Y:Foo <- '__['%1:Foo, '%1:Foo], 'X:Foo <- '__['%1:Foo, '%1:Foo], '%), result: gotDisjointUnifier(me, interpreter(0), 'X:Foo <- '%1:Foo ; 'Y:Foo <- '__['%2:Foo, '%1:Foo, '%1:Foo, '%2:Foo], 'X:Foo <- '__['%1:Foo, '%2:Foo, '%1:Foo], '%) > noSuchResult(me, interpreter( 0), false) ========================================== erewrite in IRRED-UNIFY-TEST : <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__[ 'P:Bag, 'Q:Bag]), soln: 2, result: gotIrredundantUnifier(me, interpreter( 0), 'L:Bag <- '__['%2:Bag, '%4:Bag] ; 'M:Bag <- '__['%1:Bag, '%3:Bag] ; 'P:Bag <- '__['%3:Bag, '%4:Bag] ; 'Q:Bag <- '__['%1:Bag, '%2:Bag], '%) > noSuchResult(me, interpreter(0), true) ========================================== erewrite in IRRED-DISJOINT-UNIFY-TEST : <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__[ 'P:Bag, 'Q:Bag]), soln: 2, result: gotIrredundantDisjointUnifier(me, interpreter(0), 'L:Bag <- '__['#2:Bag, '#4:Bag] ; 'M:Bag <- '__['#1:Bag, '#3:Bag], 'P:Bag <- '__['#3:Bag, '#4:Bag] ; 'Q:Bag <- '__['#1:Bag, '#2:Bag], '#) > noSuchResult(me, interpreter(0), true) Bye. Maude-Maude3.5.1/tests/Meta/metaProcUnify0000775000175000017510000000036015036121435017622 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcUnify.maude -no-banner -no-advise \ > metaProcUnify.out 2>&1 diff $srcdir/metaProcUnify.expected metaProcUnify.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcStrategy.maude0000664000175000017510000000610115036121435021420 0ustar nileshnileshset show timing off . set show advisories off . load metaInterpreter fmod ROMAN-NUMERALS is sort RomanSymbol GenRomanNumeral . subsort RomanSymbol < GenRomanNumeral . ops M D C L X V I : -> RomanSymbol . op __ : GenRomanNumeral GenRomanNumeral -> GenRomanNumeral [ctor assoc] . var S : RomanSymbol . op _>_ : RomanSymbol RomanSymbol -> Bool . eq M > S = S =/= M . eq D > S = S =/= M and S =/= D . eq C > S = S == L or L > S . eq L > S = S == X or X > S . eq X > S = S == V or S == I . eq V > S = S == I . eq I > S = false . endfm mod RN-SIMPL-RULES is protecting ROMAN-NUMERALS . vars S1 S2 : RomanSymbol . rl [simp] : I I I I I => V . rl [simp] : V V => X . rl [simp] : X X X X X => L . rl [simp] : L L => C . rl [simp] : C C C C C => D . rl [simp] : D D => M . rl [add] : I X => V I I I I . rl [add] : I V => I I I I . rl [add] : X L => X X X X . rl [add] : X C => L X X X X . rl [add] : C D => C C C C . rl [add] : C M => D X X X X . crl [sort] : S1 S2 => S2 S1 if S2 > S1 . endm smod RN-SIMP is protecting RN-SIMPL-RULES . strats simplify additive-normal-form @ GenRomanNumeral . sd simplify := simp ? simplify : idle . sd additive-normal-form := simplify ; add ! ; sort ! ; simplify . endsm mod RUN is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op option:_ : SrewriteOption -> Attribute . op input:_@_ : Term Strategy -> Attribute . op output:_ : TermList -> Attribute . op solcount:_ : Nat -> Attribute . op n1999 : -> Term . eq n1999 = '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol] . vars X Y Z : Oid . var C : RewriteCount . var O : SrewriteOption . vars T R : Term . var Ty : Type . var S : Strategy . var TL : TermList . var N : Nat . var Attrs : AttributeSet . rl < X : User | Attrs > createdInterpreter(X, Y, Z) => < X : User | Attrs > insertModule(Z, X, upModule('RN-SIMP, true)) . rl < X : User | option: O, (input: T @ S), Attrs > insertedModule(X, Y) => < X : User | option: O, (input: T @ S), solcount: 0, Attrs > srewriteTerm(Y, X, 'RN-SIMP, T, S, O, 0) . rl < X : User | option: O, (input: T @ S), solcount: N, output: TL, Attrs > srewroteTerm(X, Y, C, R, Ty) => < X : User | option: O, (input: T @ S), solcount: s(N), output: (TL , R), Attrs > srewriteTerm(Y, X, 'RN-SIMP, T, S, O, s(N)) . endm erew in RUN : <> < me : User | option: breadthFirst, output: empty, input: n1999 @ 'additive-normal-form[[empty]] > createInterpreter(interpreterManager, me, newProcess) . erew in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'additive-normal-form[[empty]] > createInterpreter(interpreterManager, me, newProcess) . erew in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'add[none]{empty} > createInterpreter(interpreterManager, me, newProcess) . erew in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'sort[none]{empty} ; 'add[none]{empty} > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcStrategy.expected0000664000175000017510000000765315036121435022143 0ustar nileshnilesh========================================== erewrite in RUN : <> < me : User | option: breadthFirst, output: empty, input: n1999 @ 'additive-normal-form[[empty]] > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | option: breadthFirst, output: ('__[ 'M.RomanSymbol, 'D.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'V.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol]), solcount: 1, input: '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol] @ 'additive-normal-form[[empty]] > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'additive-normal-form[[empty]] > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | option: depthFirst, output: ('__[ 'M.RomanSymbol, 'D.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'V.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol]), solcount: 1, input: '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol] @ 'additive-normal-form[[empty]] > noSuchResult(me, interpreter(0), 11) ========================================== erewrite in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'add[none]{empty} > createInterpreter(interpreterManager, me, newProcess) . rewrites: 7 result Configuration: <> < me : User | option: depthFirst, output: ('__[ 'M.RomanSymbol, 'D.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol], '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'V.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol], '__[ 'M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'L.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol]), solcount: 3, input: '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol] @ 'add[none]{empty} > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'sort[none]{empty} ; 'add[none]{empty} > createInterpreter( interpreterManager, me, newProcess) . rewrites: 10 result Configuration: <> < me : User | option: depthFirst, output: ('__[ 'M.RomanSymbol, 'M.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'V.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol], '__['M.RomanSymbol, 'M.RomanSymbol, 'C.RomanSymbol, 'L.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol], '__[ 'M.RomanSymbol, 'D.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol], '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'V.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol], '__[ 'M.RomanSymbol, 'D.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'I.RomanSymbol], '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'L.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'I.RomanSymbol]), solcount: 6, input: '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol] @ 'sort[ none]{empty} ; 'add[none]{empty} > noSuchResult(me, interpreter(0), 0) Bye. Maude-Maude3.5.1/tests/Meta/metaProcStrategy0000775000175000017510000000037415036121435020337 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcStrategy.maude -no-banner -no-advise \ > metaProcStrategy.out 2>&1 diff $srcdir/metaProcStrategy.expected metaProcStrategy.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcSort.maude0000664000175000017510000001725015036121435020554 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test sort calculations in the meta-interpreter. *** load metaInterpreter mod SORT-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op type:_ : Type -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var T : Type . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | type: T, AS > insertedModule(X, Y) => < X : User | AS > getLesserSorts(Y, X, 'RAT, T) . endm erew in SORT-TEST : <> < me : User | type: 'Int > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST : <> < me : User | type: 'Rat > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST : <> < me : User | type: '`[Rat`] > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST : <> < me : User | type: '`[Bool`] > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST : <> < me : User | type: 'Bool > createInterpreter(interpreterManager, me, newProcess) . mod SORT-TEST2 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op kind:_ : Type -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var K : Kind . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | kind: K, AS > insertedModule(X, Y) => < X : User | AS > getMaximalSorts(Y, X, 'RAT, K) . endm erew in SORT-TEST2 : <> < me : User | kind: '`[Rat`] > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST2 : <> < me : User | kind: '`[Bool`] > createInterpreter(interpreterManager, me, newProcess) . mod SORT-TEST3 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op kind:_ : Type -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var K : Kind . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | kind: K, AS > insertedModule(X, Y) => < X : User | AS > getMinimalSorts(Y, X, 'RAT, K) . endm erew in SORT-TEST3 : <> < me : User | kind: '`[Rat`] > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST3 : <> < me : User | kind: '`[Bool`] > createInterpreter(interpreterManager, me, newProcess) . mod SORT-TEST4 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op typePair:_:_ : Type Type -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . vars T1 T2 : Type . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, typePair: T1 : T2 > insertedModule(X, Y) => < X : User | AS > compareTypes(Y, X, 'RAT, T1, T2) . endm erew in SORT-TEST4 : <> < me : User | typePair: 'Nat : 'Bool > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST4 : <> < me : User | typePair: 'Nat : 'Rat > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST4 : <> < me : User | typePair: 'Rat : 'Rat > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST4 : <> < me : User | typePair: 'Rat : 'Int > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST4 : <> < me : User | typePair: 'NzRat : 'Int > createInterpreter(interpreterManager, me, newProcess) . mod SORT-TEST5 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op type:_ : Type -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var T : Type . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, type: T > insertedModule(X, Y) => < X : User | AS > getKind(Y, X, 'RAT, T) . endm erew in SORT-TEST5 : <> < me : User | type: 'Nat > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST5 : <> < me : User | type: 'Bool > createInterpreter(interpreterManager, me, newProcess) . mod SORT-TEST6 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op module:_ : Qid -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var Q : Qid . rl < X : User | AS, module: Q > createdInterpreter(X, Y, Z) => < X : User | AS, module: Q > insertModule(Z, X, upModule(Q, true)) . rl < X : User | AS, module: Q > insertedModule(X, Y) => < X : User | AS > getKinds(Y, X, Q) . endm erew in SORT-TEST6 : <> < me : User | module: 'RAT > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST6 : <> < me : User | module: 'META-LEVEL > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST6 : <> < me : User | module: 'META-INTERPRETER > createInterpreter(interpreterManager, me, newProcess) . mod SORT-TEST7 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op types:_ : TypeSet -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var T : TypeSet . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, types: T > insertedModule(X, Y) => < X : User | AS > getGlbTypes(Y, X, 'RAT, T) . endm erew in SORT-TEST7 : <> < me : User | types: ('Nat ; 'NzRat) > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST7 : <> < me : User | types: none > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST7 : <> < me : User | types: '`[Nat`] > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST7 : <> < me : User | types: ('Nat ; 'NzRat ; 'Zero) > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST7 : <> < me : User | types: ('Nat ; 'NzRat ; 'Int) > createInterpreter(interpreterManager, me, newProcess) . mod SORT-TEST8 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op op:(_:_->_) : Qid TypeList Sort -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var Q : Qid . var TL : TypeList . var S : Sort . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, op:(Q : TL -> S) > insertedModule(X, Y) => < X : User | AS > getMaximalAritySet(Y, X, 'RAT, Q, TL, S) . endm erew in SORT-TEST8 : <> < me : User | op: ('_+_ : 'Nat 'Nat -> 'Nat) > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST8 : <> < me : User | op: ('_+_ : 'Nat 'Nat -> 'NzNat) > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST8 : <> < me : User | op: ('_+_ : 'Nat 'Nat -> 'NzRat) > createInterpreter(interpreterManager, me, newProcess) . mod SORT-TEST9 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op term:_ : Term -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var T : Term . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, term: T > insertedModule(X, Y) => < X : User | AS > normalizeTerm(Y, X, 'RAT, T) . endm erew in SORT-TEST9 : <> < me : User | term: ('_+_['X:Nat, '_+_['Y:Rat, 'X:Nat]]) > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST9 : <> < me : User | term: ('_+_['_+_['X:Nat, 'Y:Rat], '_+_['Y:Rat, 'X:Nat]]) > createInterpreter(interpreterManager, me, newProcess) . erew in SORT-TEST9 : <> < me : User | term: ('_+_['_+_['X:NzNat, 'Y:PosRat], '_+_['Y:PosRat, 'X:NzNat]]) > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcSort.expected0000664000175000017510000002507515036121435021266 0ustar nileshnilesh========================================== erewrite in SORT-TEST : <> < me : User | type: 'Int > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotLesserSorts(me, interpreter( 0), 'Nat ; 'NzInt ; 'NzNat ; 'Zero) ========================================== erewrite in SORT-TEST : <> < me : User | type: 'Rat > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotLesserSorts(me, interpreter( 0), 'Int ; 'Nat ; 'NzInt ; 'NzNat ; 'NzRat ; 'PosRat ; 'Zero) ========================================== erewrite in SORT-TEST : <> < me : User | type: '`[Rat`] > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotLesserSorts(me, interpreter( 0), 'Int ; 'Nat ; 'NzInt ; 'NzNat ; 'NzRat ; 'PosRat ; 'Rat ; 'Zero) ========================================== erewrite in SORT-TEST : <> < me : User | type: '`[Bool`] > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotLesserSorts(me, interpreter( 0), 'Bool) ========================================== erewrite in SORT-TEST : <> < me : User | type: 'Bool > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotLesserSorts(me, interpreter( 0), none) ========================================== erewrite in SORT-TEST2 : <> < me : User | kind: '`[Rat`] > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotMaximalSorts(me, interpreter( 0), 'Rat) ========================================== erewrite in SORT-TEST2 : <> < me : User | kind: '`[Bool`] > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotMaximalSorts(me, interpreter( 0), 'Bool) ========================================== erewrite in SORT-TEST3 : <> < me : User | kind: '`[Rat`] > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotMinimalSorts(me, interpreter( 0), 'NzNat ; 'Zero) ========================================== erewrite in SORT-TEST3 : <> < me : User | kind: '`[Bool`] > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotMinimalSorts(me, interpreter( 0), 'Bool) ========================================== erewrite in SORT-TEST4 : <> < me : User | typePair: 'Nat : 'Bool > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > comparedTypes(me, interpreter(0), false, false, false) ========================================== erewrite in SORT-TEST4 : <> < me : User | typePair: 'Nat : 'Rat > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > comparedTypes(me, interpreter(0), true, true, false) ========================================== erewrite in SORT-TEST4 : <> < me : User | typePair: 'Rat : 'Rat > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > comparedTypes(me, interpreter(0), true, true, true) ========================================== erewrite in SORT-TEST4 : <> < me : User | typePair: 'Rat : 'Int > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > comparedTypes(me, interpreter(0), true, false, true) ========================================== erewrite in SORT-TEST4 : <> < me : User | typePair: 'NzRat : 'Int > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > comparedTypes(me, interpreter(0), true, false, false) ========================================== erewrite in SORT-TEST5 : <> < me : User | type: 'Nat > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotKind(me, interpreter(0), '`[Rat`]) ========================================== erewrite in SORT-TEST5 : <> < me : User | type: 'Bool > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotKind(me, interpreter(0), '`[Bool`]) ========================================== erewrite in SORT-TEST6 : <> < me : User | module: 'RAT > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotKinds(me, interpreter(0), '`[Bool`] ; '`[Rat`]) ========================================== erewrite in SORT-TEST6 : <> < me : User | module: 'META-LEVEL > createInterpreter(interpreterManager, me, newProcess) . rewrites: 4 result Configuration: <> < me : User | none > gotKinds(me, interpreter(0), '`[AttrSet`] ; '`[Bool`] ; '`[Condition`] ; '`[EquationSet`] ; '`[FindResult`,NatList`,Parent`,Bound`] ; '`[HookList`] ; '`[ImportList`] ; '`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`] ; '`[MatchingProblem`] ; '`[MembAxSet`] ; '`[Module`] ; '`[NarrowingApplyResult?`] ; '`[NarrowingSearchPathResult?`] ; '`[NarrowingSearchResult?`] ; '`[NarrowingTrace`] ; '`[OpDeclSet`] ; '`[OpMappingSet`] ; '`[ParameterDeclList`] ; '`[PrintOptionSet`] ; '`[QidList`,TypeListSet`,QidSet`,GTermList`,Header`,Type?`,ModuleExpression`,ParameterList`] ; '`[RenamingSet`] ; '`[Result4Tuple?`] ; '`[ResultPair?`] ; '`[ResultTriple?`] ; '`[RuleSet`] ; '`[SmtResult?`] ; '`[SortMappingSet`] ; '`[SrewriteOption`] ; '`[StratDeclSet`] ; '`[StratDefSet`] ; '`[StratMappingSet`] ; '`[Strategy?`,StrategyList`] ; '`[String`] ; '`[SubsortDeclSet`] ; '`[Substitution?`] ; '`[Trace?`] ; '`[UnificationProblem`] ; '`[UnificationTriple?`] ; '`[UsingPairSet`] ; '`[Variant?`] ; '`[VariantOptionSet`] ; '`[View`]) ========================================== erewrite in SORT-TEST6 : <> < me : User | module: 'META-INTERPRETER > createInterpreter(interpreterManager, me, newProcess) . rewrites: 4 result Configuration: <> < me : User | none > gotKinds(me, interpreter(0), '`[AttrSet`] ; '`[AttributeSet`] ; '`[Bool`] ; '`[Cid`] ; '`[Condition`] ; '`[Configuration`] ; '`[EquationSet`] ; '`[FindResult`,NatList`,Parent`,RewriteCount`,Bound`] ; '`[HookList`] ; '`[ImportList`] ; '`[InterpreterOptionSet`] ; '`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`] ; '`[MatchingProblem`] ; '`[MembAxSet`] ; '`[Module`] ; '`[NarrowingApplyResult?`] ; '`[NarrowingSearchPathResult?`] ; '`[NarrowingSearchResult?`] ; '`[NarrowingTrace`] ; '`[Oid`] ; '`[OpDeclSet`] ; '`[OpMappingSet`] ; '`[ParameterDeclList`] ; '`[PrintOptionSet`] ; '`[QidList`,TypeListSet`,QidSet`,GTermList`,Header`,Type?`,ModuleExpression`,ParameterList`] ; '`[RenamingSet`] ; '`[Result4Tuple?`] ; '`[ResultPair?`] ; '`[ResultTriple?`] ; '`[RuleSet`] ; '`[SmtResult?`] ; '`[SortMappingSet`] ; '`[SrewriteOption`] ; '`[StratDeclSet`] ; '`[StratDefSet`] ; '`[StratMappingSet`] ; '`[Strategy?`,StrategyList`] ; '`[String`] ; '`[SubsortDeclSet`] ; '`[Substitution?`] ; '`[Trace?`] ; '`[UnificationProblem`] ; '`[UnificationTriple?`] ; '`[UsingPairSet`] ; '`[Variant?`] ; '`[VariantOptionSet`] ; '`[View`]) ========================================== erewrite in SORT-TEST7 : <> < me : User | types: ('Nat ; 'NzRat) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotGlbTypes(me, interpreter(0), 'NzNat) ========================================== erewrite in SORT-TEST7 : <> < me : User | types: none > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotGlbTypes(me, interpreter(0), none) ========================================== erewrite in SORT-TEST7 : <> < me : User | types: '`[Nat`] > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotGlbTypes(me, interpreter(0), '`[Rat`]) ========================================== erewrite in SORT-TEST7 : <> < me : User | types: ('Nat ; 'NzRat ; 'Zero) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotGlbTypes(me, interpreter(0), none) ========================================== erewrite in SORT-TEST7 : <> < me : User | types: ('Nat ; 'Int ; 'NzRat) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotGlbTypes(me, interpreter(0), 'NzNat) ========================================== erewrite in SORT-TEST8 : <> < me : User | op:('_+_ : 'Nat 'Nat -> 'Nat) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotMaximalAritySet(me, interpreter(0), 'Nat 'Nat) ========================================== erewrite in SORT-TEST8 : <> < me : User | op:('_+_ : 'Nat 'Nat -> 'NzNat) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotMaximalAritySet(me, interpreter(0), 'Nat 'NzNat ; 'NzNat 'Nat) ========================================== erewrite in SORT-TEST8 : <> < me : User | op:('_+_ : 'Nat 'Nat -> 'NzRat) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > gotMaximalAritySet(me, interpreter(0), 'Nat 'PosRat ; 'PosRat 'Nat ; 'PosRat 'PosRat) ========================================== erewrite in SORT-TEST9 : <> < me : User | term: ('_+_['X:Nat, '_+_['Y:Rat, 'X:Nat]]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > normalizedTerm(me, interpreter( 0), '_+_['X:Nat, 'X:Nat, 'Y:Rat], 'Rat) ========================================== erewrite in SORT-TEST9 : <> < me : User | term: ('_+_['_+_['X:Nat, 'Y:Rat], '_+_['Y:Rat, 'X:Nat]]) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > normalizedTerm(me, interpreter( 0), '_+_['X:Nat, 'X:Nat, 'Y:Rat, 'Y:Rat], 'Rat) ========================================== erewrite in SORT-TEST9 : <> < me : User | term: ('_+_['_+_['X:NzNat, 'Y:PosRat], '_+_['Y:PosRat, 'X:NzNat]]) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > normalizedTerm(me, interpreter( 0), '_+_['X:NzNat, 'X:NzNat, 'Y:PosRat, 'Y:PosRat], 'PosRat) Bye. Maude-Maude3.5.1/tests/Meta/metaProcSort0000775000175000017510000000035415036121435017462 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcSort.maude -no-banner -no-advise \ > metaProcSort.out 2>&1 diff $srcdir/metaProcSort.expected metaProcSort.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcSearch.maude0000664000175000017510000001054315036121435021030 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test search in the meta-interpreter without and with path. *** load metaInterpreter mod SEARCH is sort State . ops a b c d e : -> State . rl [a-move1] : a => b . rl [a-move2] : a => c . rl [b-move] : b => d . rl [c-move] : c => e . endm mod SEARCH-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('SEARCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS > getSearchResult(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, N) . endm erew in SEARCH-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, newProcess) . erew in SEARCH-TEST : <> < me : User | soln: 1 > createInterpreter(interpreterManager, me, newProcess) . erew in SEARCH-TEST : <> < me : User | soln: 2 > createInterpreter(interpreterManager, me, newProcess) . erew in SEARCH-TEST : <> < me : User | soln: 3 > createInterpreter(interpreterManager, me, newProcess) . erew in SEARCH-TEST : <> < me : User | soln: 4 > createInterpreter(interpreterManager, me, newProcess) . erew in SEARCH-TEST : <> < me : User | soln: 5 > createInterpreter(interpreterManager, me, newProcess) . mod SEARCH-CACHE-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . var S : Substitution . var T : Term . var TY : Type . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('SEARCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS, soln: 1 > getSearchResult(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, 0) . rl < X : User | soln: N, AS > gotSearchResult(X, Y, M, T, TY, S) => < X : User | AS, soln: (N + 1), got: gotSearchResult(X, Y, M, T, TY, S) > getSearchResult(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, N) . endm erew in SEARCH-CACHE-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, newProcess) . mod SEARCH-PATH-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('SEARCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS > getSearchResultAndPath(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, N) . endm erew in SEARCH-PATH-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, newProcess) . erew in SEARCH-PATH-TEST : <> < me : User | soln: 1 > createInterpreter(interpreterManager, me, newProcess) . erew in SEARCH-PATH-TEST : <> < me : User | soln: 2 > createInterpreter(interpreterManager, me, newProcess) . erew in SEARCH-PATH-TEST : <> < me : User | soln: 3 > createInterpreter(interpreterManager, me, newProcess) . erew in SEARCH-PATH-TEST : <> < me : User | soln: 4 > createInterpreter(interpreterManager, me, newProcess) . erew in SEARCH-PATH-TEST : <> < me : User | soln: 5 > createInterpreter(interpreterManager, me, newProcess) . mod SEARCH-PATH-CACHE-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . var S : Substitution . var T : Term . var TY : Type . var TR : Trace . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('SEARCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS, soln: 1 > getSearchResultAndPath(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, 0) . rl < X : User | soln: N, AS > gotSearchResultAndPath(X, Y, M, T, TY, S, TR) => < X : User | AS, soln: (N + 1), got: gotSearchResultAndPath(X, Y, M, T, TY, S, TR) > getSearchResultAndPath(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, N) . endm erew in SEARCH-PATH-CACHE-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcSearch.expected0000664000175000017510000001341715036121435021541 0ustar nileshnilesh========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResult(me, interpreter( 0), 0, 'a.State, 'State, 'X:State <- 'a.State) ========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResult(me, interpreter( 0), 1, 'b.State, 'State, 'X:State <- 'b.State) ========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 2 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResult(me, interpreter( 0), 2, 'c.State, 'State, 'X:State <- 'c.State) ========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 3 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResult(me, interpreter( 0), 3, 'd.State, 'State, 'X:State <- 'd.State) ========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 4 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResult(me, interpreter( 0), 4, 'e.State, 'State, 'X:State <- 'e.State) ========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 5 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > noSuchResult(me, interpreter(0), 4) ========================================== erewrite in SEARCH-CACHE-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 13 result Configuration: <> < me : User | soln: 6, got: gotSearchResult(me, interpreter(0), 0, 'a.State, 'State, 'X:State <- 'a.State), got: gotSearchResult(me, interpreter(0), 1, 'b.State, 'State, 'X:State <- 'b.State), got: gotSearchResult(me, interpreter(0), 1, 'c.State, 'State, 'X:State <- 'c.State), got: gotSearchResult(me, interpreter(0), 1, 'd.State, 'State, 'X:State <- 'd.State), got: gotSearchResult(me, interpreter(0), 1, 'e.State, 'State, 'X:State <- 'e.State) > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResultAndPath(me, interpreter(0), 0, 'a.State, 'State, 'X:State <- 'a.State, nil) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResultAndPath(me, interpreter(0), 1, 'b.State, 'State, 'X:State <- 'b.State, {'a.State, 'State, rl 'a.State => 'b.State [label( 'a-move1)] .}) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 2 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResultAndPath(me, interpreter(0), 2, 'c.State, 'State, 'X:State <- 'c.State, {'a.State, 'State, rl 'a.State => 'c.State [label( 'a-move2)] .}) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 3 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResultAndPath(me, interpreter(0), 3, 'd.State, 'State, 'X:State <- 'd.State, {'a.State, 'State, rl 'a.State => 'b.State [label( 'a-move1)] .} {'b.State, 'State, rl 'b.State => 'd.State [label('b-move)] .}) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 4 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResultAndPath(me, interpreter(0), 4, 'e.State, 'State, 'X:State <- 'e.State, {'a.State, 'State, rl 'a.State => 'c.State [label( 'a-move2)] .} {'c.State, 'State, rl 'c.State => 'e.State [label('c-move)] .}) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 5 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > noSuchResult(me, interpreter(0), 4) ========================================== erewrite in SEARCH-PATH-CACHE-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, newProcess) . rewrites: 13 result Configuration: <> < me : User | soln: 6, got: gotSearchResultAndPath(me, interpreter(0), 0, 'a.State, 'State, 'X:State <- 'a.State, nil), got: gotSearchResultAndPath(me, interpreter(0), 1, 'b.State, 'State, 'X:State <- 'b.State, {'a.State, 'State, rl 'a.State => 'b.State [label( 'a-move1)] .}), got: gotSearchResultAndPath(me, interpreter(0), 1, 'c.State, 'State, 'X:State <- 'c.State, {'a.State, 'State, rl 'a.State => 'c.State [label( 'a-move2)] .}), got: gotSearchResultAndPath(me, interpreter(0), 1, 'd.State, 'State, 'X:State <- 'd.State, {'a.State, 'State, rl 'a.State => 'b.State [label( 'a-move1)] .} {'b.State, 'State, rl 'b.State => 'd.State [label('b-move)] .}), got: gotSearchResultAndPath(me, interpreter(0), 1, 'e.State, 'State, 'X:State <- 'e.State, {'a.State, 'State, rl 'a.State => 'c.State [label( 'a-move2)] .} {'c.State, 'State, rl 'c.State => 'e.State [label('c-move)] .}) > noSuchResult( me, interpreter(0), 0) Bye. Maude-Maude3.5.1/tests/Meta/metaProcSearch0000775000175000017510000000036415036121435017741 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcSearch.maude -no-banner -no-advise \ > metaProcSearch.out 2>&1 diff $srcdir/metaProcSearch.expected metaProcSearch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcReplace2.maude0000664000175000017510000001456115036121435021264 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test replacing modules and views in meta-interpreter with op->term mappings. *** load metaInterpreter set include BOOL off . fth T is sort Elt . op f : Elt -> Elt . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = f(f(X)) . endfm fmod FOO is sort Foo . op h : Foo Foo -> Foo . op c : -> Foo . endfm view V from T to FOO is sort Elt to Foo . var X : Elt . op f(X) to term h(X, c) . endv fmod TEST is inc M{V} . endfm red g(X:Foo) . mod META1 is pr META-INTERPRETER . op T : -> Module . eq T = upModule('T, false) . op M : -> Module . eq M = upModule('M, false) . op FOO : -> Module . eq FOO = upModule('FOO, false) . op V : -> View . eq V = upView('V) . op TEST : -> Module . eq TEST = upModule('TEST, false) . endm red T . red M . red FOO . red V . red TEST . mod META2 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META2 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, newProcess) . mod META3 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op M2 : -> Module . eq M2 = ( fmod 'M{'X :: 'T} is nil sorts none . none op 'g : 'X$Elt -> 'X$Elt [none] . none eq 'g['X:X$Elt] = 'f['f['f['X:X$Elt]]] [none] . endfm ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, M2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META3 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, newProcess) . mod META4 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op FOO2 : -> Module . eq FOO2 = ( fmod 'FOO is nil sorts 'Foo . none op 'c : nil -> 'Foo [none] . op 'h : 'Foo 'Foo -> 'Foo [comm] . none none endfm ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, FOO2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META4 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, newProcess) . mod META5 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 10 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op FOO2 : -> Module . eq FOO2 = ( fmod 'FOO is nil sorts 'Foo . none op 'd : nil -> 'Foo [none] . op 'k : 'Foo 'Foo -> 'Foo [none] . none none endfm ) . op V2 : -> View . eq V2 = ( view 'V from 'T to 'FOO is sort 'Elt to 'Foo . op 'f['X:Elt] to term 'k['X:Foo,'d.Foo] . none endv ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, FOO2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > insertView(Y, X, V2) . rl < X : User | state: 9 > insertedView(X, Y) => < X : User | state: 10 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META5 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcReplace2.expected0000664000175000017510000000442415036121435021767 0ustar nileshnilesh========================================== reduce in TEST : g(X:Foo) . rewrites: 1 result Foo: h(h(X:Foo, c), c) ========================================== reduce in META1 : T . rewrites: 2 result FTheory: fth 'T is nil sorts 'Elt . none op 'f : 'Elt -> 'Elt [none] . none none endfth ========================================== reduce in META1 : M . rewrites: 2 result FModule: fmod 'M{'X :: 'T} is nil sorts none . none op 'g : 'X$Elt -> 'X$Elt [none] . none eq 'g['X:X$Elt] = 'f['f['X:X$Elt]] [none] . endfm ========================================== reduce in META1 : FOO . rewrites: 2 result FModule: fmod 'FOO is nil sorts 'Foo . none op 'c : nil -> 'Foo [none] . op 'h : 'Foo 'Foo -> 'Foo [none] . none none endfm ========================================== reduce in META1 : V . rewrites: 2 result View: view 'V from 'T to 'FOO is sort 'Elt to 'Foo . op 'f['X:Elt] to term 'h['X:Foo, 'c.Foo] . none endv ========================================== reduce in META1 : TEST . rewrites: 2 result FModule: fmod 'TEST is including 'M{'V} . sorts none . none none none none endfm ========================================== erewrite in META2 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 16 result Configuration: <> < me : User | state: 7 > reducedTerm(me, interpreter( 0), 1, 'h['h['X:Foo, 'c.Foo], 'c.Foo], 'Foo) ========================================== erewrite in META3 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | state: 9 > reducedTerm(me, interpreter( 0), 1, 'h['h['h['X:Foo, 'c.Foo], 'c.Foo], 'c.Foo], 'Foo) ========================================== erewrite in META4 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | state: 9 > reducedTerm(me, interpreter( 0), 1, 'h['c.Foo, 'h['c.Foo, 'X:Foo]], 'Foo) ========================================== erewrite in META5 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 21 result Configuration: <> < me : User | state: 10 > reducedTerm(me, interpreter( 0), 1, 'k['k['X:Foo, 'd.Foo], 'd.Foo], 'Foo) Bye. Maude-Maude3.5.1/tests/Meta/metaProcReplace20000775000175000017510000000037415036121435020172 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcReplace2.maude -no-banner -no-advise \ > metaProcReplace2.out 2>&1 diff $srcdir/metaProcReplace2.expected metaProcReplace2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcReplace.maude0000664000175000017510000001432215036121435021175 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test replacing modules and views in meta-interpreter. *** load metaInterpreter set include BOOL off . fth T is sort Elt . op f : Elt -> Elt . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = f(f(X)) . endfm fmod FOO is sort Foo . op h : Foo -> Foo . endfm view V from T to FOO is sort Elt to Foo . var X : Elt . op f to h . endv fmod TEST is inc M{V} . endfm red g(X:Foo) . mod META1 is pr META-INTERPRETER . op T : -> Module . eq T = upModule('T, false) . op M : -> Module . eq M = upModule('M, false) . op FOO : -> Module . eq FOO = upModule('FOO, false) . op V : -> View . eq V = upView('V) . op TEST : -> Module . eq TEST = upModule('TEST, false) . endm red T . red M . red FOO . red V . red TEST . mod META2 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META2 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, newProcess) . mod META3 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op M2 : -> Module . eq M2 = ( fmod 'M{'X :: 'T} is nil sorts none . none op 'g : 'X$Elt -> 'X$Elt [none] . none eq 'g['X:X$Elt] = 'f['f['f['X:X$Elt]]] [none] . endfm ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, M2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META3 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, newProcess) . mod META4 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op FOO2 : -> Module . eq FOO2 = ( fmod 'FOO is nil sorts 'Foo . none op 'h : 'Foo -> 'Foo [none] . none none endfm ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, FOO2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META4 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, newProcess) . mod META5 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 10 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op FOO2 : -> Module . eq FOO2 = ( fmod 'FOO is nil sorts 'Bar . none op 'k : 'Bar -> 'Bar [none] . none none endfm ) . op V2 : -> View . eq V2 = ( view 'V from 'T to 'FOO is sort 'Elt to 'Bar . op 'f to 'k . none endv ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, FOO2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > insertView(Y, X, V2) . rl < X : User | state: 9 > insertedView(X, Y) => < X : User | state: 10 > reduceTerm(Y, X, 'TEST, 'g['X:Bar]) . endm erew in META5 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcReplace.expected0000664000175000017510000000420515036121435021702 0ustar nileshnilesh========================================== reduce in TEST : g(X:Foo) . rewrites: 1 result Foo: h(h(X:Foo)) ========================================== reduce in META1 : T . rewrites: 2 result FTheory: fth 'T is nil sorts 'Elt . none op 'f : 'Elt -> 'Elt [none] . none none endfth ========================================== reduce in META1 : M . rewrites: 2 result FModule: fmod 'M{'X :: 'T} is nil sorts none . none op 'g : 'X$Elt -> 'X$Elt [none] . none eq 'g['X:X$Elt] = 'f['f['X:X$Elt]] [none] . endfm ========================================== reduce in META1 : FOO . rewrites: 2 result FModule: fmod 'FOO is nil sorts 'Foo . none op 'h : 'Foo -> 'Foo [none] . none none endfm ========================================== reduce in META1 : V . rewrites: 2 result View: view 'V from 'T to 'FOO is sort 'Elt to 'Foo . op 'f to 'h . none endv ========================================== reduce in META1 : TEST . rewrites: 2 result FModule: fmod 'TEST is including 'M{'V} . sorts none . none none none none endfm ========================================== erewrite in META2 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 16 result Configuration: <> < me : User | state: 7 > reducedTerm(me, interpreter( 0), 1, 'h['h['X:Foo]], 'Foo) ========================================== erewrite in META3 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | state: 9 > reducedTerm(me, interpreter( 0), 1, 'h['h['h['X:Foo]]], 'Foo) ========================================== erewrite in META4 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 19 result Configuration: <> < me : User | state: 9 > reducedTerm(me, interpreter( 0), 1, 'h['h['X:Foo]], 'Foo) ========================================== erewrite in META5 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 21 result Configuration: <> < me : User | state: 10 > reducedTerm(me, interpreter( 0), 1, 'k['k['X:Bar]], 'Bar) Bye. Maude-Maude3.5.1/tests/Meta/metaProcReplace0000775000175000017510000000037015036121435020104 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcReplace.maude -no-banner -no-advise \ > metaProcReplace.out 2>&1 diff $srcdir/metaProcReplace.expected metaProcReplace.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcPrint.maude0000664000175000017510000000312015036121435020710 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test pretty printing in the meta-interpreter. *** load metaInterpreter mod PRINT-TEST is pr META-INTERPRETER . pr RAT . op me : -> Oid . op User : -> Cid . op term:_ : Term -> Attribute . op flags:_ : PrintOptionSet -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var T : Term . var F : PrintOptionSet . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, term: T, flags: F > insertedModule(X, Y) => < X : User | AS > printTerm(Y, X, 'RAT, 'X:Rat, T, F) . endm erew in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: mixfix > createInterpreter(interpreterManager, me, newProcess) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: number > createInterpreter(interpreterManager, me, newProcess) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: rat > createInterpreter(interpreterManager, me, newProcess) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2 + X:Rat), flags: rat > createInterpreter(interpreterManager, me, newProcess) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2 + X:Rat), flags: (rat mixfix) > createInterpreter(interpreterManager, me, newProcess) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2 + X:Rat), flags: (number mixfix) > createInterpreter(interpreterManager, me, newProcess) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2 + X:Rat), flags: mixfix > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcPrint.expected0000664000175000017510000000407615036121435021431 0ustar nileshnilesh========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: mixfix > createInterpreter(interpreterManager, me, newProcess) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), 's '0 '/ 's_^2 '`( '0 '`)) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: number > createInterpreter(interpreterManager, me, newProcess) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), '_/_ '`( '1 '`, '2 '`)) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: rat > createInterpreter(interpreterManager, me, newProcess) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), '1/2) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(X:Rat + 1/2), flags: rat > createInterpreter(interpreterManager, me, newProcess) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), '_+_ '`( 'X '`, '1/2 '`)) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(X:Rat + 1/2), flags: ( mixfix rat) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), 'X '+ '1/2) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(X:Rat + 1/2), flags: ( mixfix number) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), 'X '+ '1 '/ '2) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(X:Rat + 1/2), flags: mixfix > createInterpreter(interpreterManager, me, newProcess) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), 'X '+ 's '0 '/ 's_^2 '`( '0 '`)) Bye. Maude-Maude3.5.1/tests/Meta/metaProcPrint0000775000175000017510000000036015036121435017624 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcPrint.maude -no-banner -no-advise \ > metaProcPrint.out 2>&1 diff $srcdir/metaProcPrint.expected metaProcPrint.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcPrelude.maude0000664000175000017510000001232415036121435021222 0ustar nileshnileshset show timing off . set show advisories off . *** *** We suck the prelude modules and views out of the object level interpreter into *** an interpreter object. *** load metaInterpreter fmod SEQUENCE is pr QID . sort ViewCmd ModuleCmd Seq . subsort ViewCmd ModuleCmd < Seq . op v : Qid -> ViewCmd . op m : Qid -> ModuleCmd . op __ : Seq Seq -> Seq [assoc id: nil] . op nil : -> Seq . op prelude : -> Seq . eq prelude = m('TRUTH-VALUE) m('BOOL-OPS) m('TRUTH) m('BOOL) m('EXT-BOOL) m('NAT) m('INT) m('RAT) m('FLOAT) m('STRING) m('CONVERSION) m('RANDOM) m('BOUND) m('QID) m('TRIV) v('Bool) v('Nat) v('Int) v('Rat) v('Float) v('String) v('Qid) m('STRICT-WEAK-ORDER) v('STRICT-WEAK-ORDER) m('STRICT-TOTAL-ORDER) v('STRICT-TOTAL-ORDER) v('Nat<) v('Int<) v('Rat<) v('Float<) v('String<) m('TOTAL-PREORDER) v('TOTAL-PREORDER) m('TOTAL-ORDER) v('TOTAL-ORDER) v('Nat<=) v('Int<=) v('Rat<=) v('Float<=) v('String<=) m('DEFAULT) v('DEFAULT) v('Nat0) v('Int0) v('Rat0) v('Float0) v('String0) v('Qid0) m('LIST) m('WEAKLY-SORTABLE-LIST) m('SORTABLE-LIST) m('WEAKLY-SORTABLE-LIST') m('SORTABLE-LIST') m('SET) m('LIST-AND-SET) m('SORTABLE-LIST-AND-SET) m('SORTABLE-LIST-AND-SET') m('LIST*) m('SET*) m('MAP) m('ARRAY) m('NAT-LIST) m('QID-LIST) m('QID-SET) m('META-TERM) m('META-CONDITION) m('META-STRATEGY) m('META-MODULE) m('META-VIEW) m('META-LEVEL) m('LEXICAL) m('COUNTER) m('LOOP-MODE) m('CONFIGURATION) . endfm mod RUN is pr META-INTERPRETER . pr SEQUENCE . op me : -> Oid . op User : -> Cid . op pending : Seq -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . rl < X : User | pending(m(Q) Rest) > createdInterpreter(X, Y, Z) => < X : User | pending(Rest) > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(v(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(v(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(nil) > insertedModule(X, Y) => < X : User | pending(nil) > reduceTerm(Y, X, 'NAT, '_+_['s_^2['0.Nat], 's_^3['0.Nat]]) . endm erew in RUN : <> < me : User | pending(prelude) > createInterpreter(interpreterManager, me, newProcess) . mod RUN2 is pr META-INTERPRETER . pr SEQUENCE . op me : -> Oid . op User : -> Cid . op pending : Seq -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . op run : -> Term . eq run = 'metaReduce['`[_`][''NAT.Sort],'_`[_`][''_+_.Sort, '_`,_['_`[_`][''s_^2.Sort,''0.Nat.Constant],'_`[_`][ ''s_^3.Sort,''0.Nat.Constant]]]] . rl < X : User | pending(m(Q) Rest) > createdInterpreter(X, Y, Z) => < X : User | pending(Rest) > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(v(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(v(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(nil) > insertedModule(X, Y) => < X : User | pending(nil) > reduceTerm(Y, X, 'META-LEVEL, run) . endm erew in RUN2 : <> < me : User | pending(prelude) > createInterpreter(interpreterManager, me, newProcess) . mod RUN3 is pr META-INTERPRETER . pr SEQUENCE . op me : -> Oid . op User : -> Cid . op pending : Seq -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . op run : -> Term . eq run = 'upModule[''META-LEVEL.Qid, 'false.Bool] . rl < X : User | pending(m(Q) Rest) > createdInterpreter(X, Y, Z) => < X : User | pending(Rest) > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(v(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(v(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(nil) > insertedModule(X, Y) => < X : User | pending(nil) > reduceTerm(Y, X, 'META-LEVEL, run) . endm erew in RUN3 : <> < me : User | pending(prelude) > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcPrelude.expected0000664000175000017510000027017715036121435021744 0ustar nileshnilesh========================================== erewrite in RUN : <> < me : User | pending(prelude) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 151 result Configuration: <> < me : User | pending(nil) > reducedTerm(me, interpreter(0), 1, 's_^5['0.Zero], 'NzNat) ========================================== erewrite in RUN2 : <> < me : User | pending(prelude) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 152 result Configuration: <> < me : User | pending(nil) > reducedTerm(me, interpreter(0), 3, '`{_`,_`}['_`[_`][''s_^5.Sort, ''0.Zero.Constant], ''NzNat.Sort], 'ResultPair) ========================================== erewrite in RUN3 : <> < me : User | pending(prelude) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 152 result Configuration: <> < me : User | pending(nil) > reducedTerm(me, interpreter(0), 1, 'fmod_is_sorts_.____endfm[''META-LEVEL.Sort, '__[ 'protecting_.[''META-VIEW.Sort], 'protecting_.[''BOUND.Sort]], '_;_[ ''MatchOrUnificationPair.Sort, ''MatchPair.Sort, ''MatchPair?.Sort, ''MatchingProblem.Sort, ''NarrowingApplyResult.Sort, ''NarrowingApplyResult?.Sort, ''NarrowingSearchPathResult.Sort, ''NarrowingSearchPathResult?.Sort, ''NarrowingSearchResult.Sort, ''NarrowingSearchResult?.Sort, ''NarrowingStep.Sort, ''NarrowingTrace.Sort, ''NeVariableSet.Sort, ''Parent.Sort, ''PatternSubjectPair.Sort, ''PrintOption.Sort, ''PrintOptionSet.Sort, ''Result4Tuple.Sort, ''Result4Tuple?.Sort, ''ResultPair.Sort, ''ResultPair?.Sort, ''ResultTriple.Sort, ''ResultTriple?.Sort, ''SmtResult.Sort, ''SmtResult?.Sort, ''SrewriteOption.Sort, ''Strategy?.Sort, ''Substitution?.Sort, ''Trace.Sort, ''Trace?.Sort, ''TraceStep.Sort, ''Type?.Sort, ''UnificandPair.Sort, ''UnificationPair.Sort, ''UnificationPair?.Sort, ''UnificationProblem.Sort, ''UnificationTriple.Sort, ''UnificationTriple?.Sort, ''VariableSet.Sort, ''Variant.Sort, ''Variant?.Sort, ''VariantOption.Sort, ''VariantOptionSet.Sort], '__['subsort_<_.[''EmptyQidSet.Sort, ''VariableSet.Sort], 'subsort_<_.[''MatchPair.Sort, ''MatchOrUnificationPair.Sort], 'subsort_<_.[''MatchPair.Sort, ''MatchPair?.Sort], 'subsort_<_.[''NarrowingApplyResult.Sort, ''NarrowingApplyResult?.Sort], 'subsort_<_.[ ''NarrowingSearchPathResult.Sort, ''NarrowingSearchPathResult?.Sort], 'subsort_<_.[''NarrowingSearchResult.Sort, ''NarrowingSearchResult?.Sort], 'subsort_<_.[''NarrowingStep.Sort, ''NarrowingTrace.Sort], 'subsort_<_.[ ''Nat.Sort, ''Parent.Sort], 'subsort_<_.[''NeVariableSet.Sort, ''NeQidSet.Sort], 'subsort_<_.[''NeVariableSet.Sort, ''VariableSet.Sort], 'subsort_<_.[''PatternSubjectPair.Sort, ''MatchingProblem.Sort], 'subsort_<_.[''PrintOption.Sort, ''PrintOptionSet.Sort], 'subsort_<_.[ ''Result4Tuple.Sort, ''Result4Tuple?.Sort], 'subsort_<_.[''ResultPair.Sort, ''ResultPair?.Sort], 'subsort_<_.[''ResultTriple.Sort, ''ResultTriple?.Sort], 'subsort_<_.[''SmtResult.Sort, ''SmtResult?.Sort], 'subsort_<_.[''Strategy.Sort, ''Strategy?.Sort], 'subsort_<_.[ ''Substitution.Sort, ''Substitution?.Sort], 'subsort_<_.[''Trace.Sort, ''Trace?.Sort], 'subsort_<_.[''TraceStep.Sort, ''Trace.Sort], 'subsort_<_.[ ''Type.Sort, ''Type?.Sort], 'subsort_<_.[''UnificandPair.Sort, ''UnificationProblem.Sort], 'subsort_<_.[''UnificationPair.Sort, ''MatchOrUnificationPair.Sort], 'subsort_<_.[''UnificationPair.Sort, ''UnificationPair?.Sort], 'subsort_<_.[''UnificationTriple.Sort, ''UnificationTriple?.Sort], 'subsort_<_.[''Variable.Sort, ''NeVariableSet.Sort], 'subsort_<_.[''VariableSet.Sort, ''QidSet.Sort], 'subsort_<_.[''Variant.Sort, ''Variant?.Sort], 'subsort_<_.[ ''VariantOption.Sort, ''VariantOptionSet.Sort]], '__['op_:_->_`[_`].[ ''$applySubstitution.Sort, '__[''NeTermList.Sort, ''Substitution.Sort], ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_/\_.Sort, '__[ ''MatchingProblem.Sort, ''MatchingProblem.Sort], ''MatchingProblem.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec['s_^73['0.Zero]]]], 'op_:_->_`[_`].[''_/\_.Sort, '__[''UnificationProblem.Sort, ''UnificationProblem.Sort], ''UnificationProblem.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec['s_^73['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''NeVariableSet.Sort, ''VariableSet.Sort], ''NeVariableSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''VariableSet.Sort, ''VariableSet.Sort], ''VariableSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_<=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''PatternSubjectPair.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_=?_.Sort, '__[ ''Term.Sort, ''Term.Sort], ''UnificandPair.Sort, '__['ctor.Attr, 'prec[ 's_^71['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''NarrowingTrace.Sort, ''NarrowingTrace.Sort], ''NarrowingTrace.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.NarrowingTrace.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''PrintOptionSet.Sort, ''PrintOptionSet.Sort], ''PrintOptionSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.PrintOptionSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[''Trace.Sort, ''Trace.Sort], ''Trace.Sort, '__['assoc.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''n.Sort, ''d.Sort]], 'id[''nil.Trace.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''VariantOptionSet.Sort, ''VariantOptionSet.Sort], ''VariantOptionSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.VariantOptionSet.Constant]]], 'op_:_->_`[_`].[ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort, ''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''NarrowingStep.Sort, '__['ctor.Attr, 'format['__[ ''ni.Sort, ''n++i.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingApplyResult.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''NarrowingTrace.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchPathResult.Sort, '__[ 'ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchResult.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Nat.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Substitution.Sort, ''Qid.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Substitution.Sort, ''Term.Sort, ''Nat.Sort], ''SmtResult.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Context.Sort], ''Result4Tuple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[ ''Substitution.Sort, ''Substitution.Sort, ''Nat.Sort], ''UnificationTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''UnificationTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Rule.Sort], ''TraceStep.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''ResultTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Context.Sort], ''MatchPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Nat.Sort], ''UnificationPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Qid.Sort], ''UnificationPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort], ''ResultPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''ambiguity.Sort, '__[''ResultPair.Sort, ''ResultPair.Sort], ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''ambiguity.Sort, '__[ ''Strategy.Sort, ''Strategy.Sort], ''Strategy?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''anyType.Sort, 'nil.TypeList, ''Type?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''applySubstitution.Sort, '__[''Module.Sort, ''Term.Sort, ''Substitution.Sort], ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''breadthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''completeName.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaCompleteName.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''delay.Sort, 'nil.TypeList, ''VariantOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''depthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''downTerm.Sort, '__[ ''Term.Sort, ''Universal.Sort], ''Universal.Sort, '__['poly['__['s_^2[ '0.Zero], '0.Zero]], 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaDownTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]]], 'op_:_->_`[_`].[ ''failure.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failure.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''Result4Tuple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''ResultTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failure.Sort, 'nil.TypeList, ''SmtResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''Trace?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failureIncomplete.Sort, 'nil.TypeList, ''ResultTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''filter.Sort, 'nil.TypeList, ''VariantOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''flat.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''format.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''getAccumulatedSubstitution.Sort, ''NarrowingSearchResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getAccumulatedSubstitution.Sort, ''NarrowingStep.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''MatchPair.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getContext.Sort, ''NarrowingApplyResult.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''NarrowingStep.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''Result4Tuple.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getInitialSubstitution.Sort, ''NarrowingSearchPathResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getInitialTerm.Sort, ''NarrowingSearchPathResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getInitialType.Sort, ''NarrowingSearchPathResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getKind.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaGetKind.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''getKinds.Sort, ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetKinds.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''getLabel.Sort, ''NarrowingApplyResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getLabel.Sort, ''NarrowingStep.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getLhsSubstitution.Sort, ''UnificationTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getMoreVariantsInLayerFlag.Sort, ''Variant.Sort, ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getParent.Sort, ''Variant.Sort, ''Parent.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getRhsSubstitution.Sort, ''UnificationTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRule.Sort, ''TraceStep.Sort, ''Rule.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRuleSubstitution.Sort, ''NarrowingApplyResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getStateVariableFamily.Sort, ''NarrowingSearchResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSubstitution.Sort, ''MatchPair.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''Result4Tuple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSubstitution.Sort, ''ResultTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''UnificationPair.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''Variant.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''NarrowingApplyResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getTerm.Sort, ''NarrowingSearchResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''NarrowingStep.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''Result4Tuple.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''ResultPair.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getTerm.Sort, ''ResultTriple.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''TraceStep.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''Variant.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTermSubstitution.Sort, ''NarrowingApplyResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTrace.Sort, ''NarrowingSearchPathResult.Sort, ''NarrowingTrace.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''NarrowingApplyResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getType.Sort, ''NarrowingSearchResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''NarrowingStep.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Result4Tuple.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''ResultPair.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getType.Sort, ''ResultTriple.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''TraceStep.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingSearchPathResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingSearchResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingStep.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getUnifierVariableFamily.Sort, ''NarrowingSearchPathResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getUnifierVariableFamily.Sort, ''NarrowingSearchResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifierVariableFamily.Sort, ''NarrowingStep.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getVariableFamily.Sort, ''NarrowingApplyResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getVariableFamily.Sort, ''UnificationPair.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getVariableFamily.Sort, ''UnificationTriple.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getVariableFamily.Sort, ''Variant.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''glbSorts.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGlbSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''leastSort.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaLeastSort.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''lesserSorts.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaLesserSorts.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''maximalAritySet.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMaximalAritySet.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''maximalSorts.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMaximalSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaApply.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Substitution?`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaApply.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaCheck.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[Bool`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaCheck.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaDisjointUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''legacyMetaDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaDisjointUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaFrewrite.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaFrewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaGetIrredundantVariant.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaGetIrredundantVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetIrredundantVariant.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetIrredundantVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetVariant.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaGetVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetVariant.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaIrredundantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaIrredundantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaIrredundantUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaIrredundantUnify.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaMatch.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Condition`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Substitution?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMatch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrow.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[Bool`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrow2.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrow.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrow.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingApply.Sort, '__[''Module.Sort, ''Term.Sort, ''TermList.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingApplyResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''metaNarrowingApply.Sort, '__[''Module.Sort, ''Term.Sort, ''TermList.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingApplyResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingApply.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrowingSearch.Sort, '__[ ''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingSearchResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''metaNarrowingSearch.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingSearchResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingSearch.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrowingSearchPath.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingSearchPathResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''metaNarrowingSearchPath.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingSearchPathResult?.Sort, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrowingSearchPath.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNormalize.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[ResultPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNormalize.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaParse.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[ResultPair?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaParse.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaParse.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaParseStrategy.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[StrategyList`,Strategy?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaParseStrategy.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[PrintOptionSet`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[PrintOptionSet`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[PrintOptionSet`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrettyPrint.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaPrettyPrintStrategy.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[StrategyList`,Strategy?`].Kind, ''`[PrintOptionSet`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrettyPrintStrategy.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaPrintToString.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[PrintOptionSet`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[String`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrintToString.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaReduce.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaReduce.Sort], 'op-hook[''qidSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''metaTermSymbol.Sort, ''_`[_`].Qid, '__[''Qid.Sort, ''NeCTermList.Sort], ''Context.Sort], 'op-hook[''metaArgSymbol.Sort, ''_`,_.Qid, '__[''GTermList.Sort, ''GTermList.Sort], ''GTermList.Sort], 'op-hook[''emptyTermListSymbol.Sort, ''empty.Sort, 'nil.TypeList, ''GroundTermList.Sort], 'op-hook[''assignmentSymbol.Sort, ''_<-_.Sort, '__[ ''Variable.Sort, ''Term.Sort], ''Assignment.Sort], 'op-hook[ ''emptySubstitutionSymbol.Sort, ''none.Sort, 'nil.TypeList, ''Substitution.Sort], 'op-hook[''substitutionSymbol.Sort, ''_;_.Sort, '__[ ''Substitution.Sort, ''Substitution.Sort], ''Substitution.Sort], 'op-hook[ ''holeSymbol.Sort, ''`[`].Kind, 'nil.TypeList, ''Context.Sort], 'op-hook[ ''noConditionSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''EqCondition.Sort], 'op-hook[''equalityConditionSymbol.Sort, ''_=_.Sort, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort], 'op-hook[''sortTestConditionSymbol.Sort, ''_:_.Variable, '__[''Term.Sort, ''Sort.Sort], ''EqCondition.Sort], 'op-hook[''matchConditionSymbol.Sort, ''_:=_.Variable, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort], 'op-hook[''rewriteConditionSymbol.Sort, ''_=>_.Sort, '__[''Term.Sort, ''Term.Sort], ''Condition.Sort], 'op-hook[ ''conjunctionSymbol.Sort, ''_/\_.Sort, '__[''Condition.Sort, ''Condition.Sort], ''Condition.Sort], 'op-hook[''failStratSymbol.Sort, ''fail.Sort, 'nil.TypeList, ''Strategy.Sort], 'op-hook[ ''idleStratSymbol.Sort, ''idle.Sort, 'nil.TypeList, ''Strategy.Sort], 'op-hook[''allStratSymbol.Sort, ''all.Sort, 'nil.TypeList, ''RuleApplication.Sort], 'op-hook[''applicationStratSymbol.Sort, ''_`[_`]`{_`}.Qid, '__[''Qid.Sort, ''Substitution.Sort, ''StrategyList.Sort], ''RuleApplication.Sort], 'op-hook[ ''topStratSymbol.Sort, ''top.Sort, ''RuleApplication.Sort, ''Strategy.Sort], 'op-hook[''matchStratSymbol.Sort, ''match_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[ ''xmatchStratSymbol.Sort, ''xmatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[''amatchStratSymbol.Sort, ''amatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[''unionStratSymbol.Sort, ''_|_.Sort, '__[ ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[ ''concatStratSymbol.Sort, ''_;_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''orelseStratSymbol.Sort, ''_or-else_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''plusStratSymbol.Sort, ''_+.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''conditionalStratSymbol.Sort, ''_?_:_.Variable, '__[''Strategy.Sort, ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''matchrewStratSymbol.Sort, ''matchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''xmatchrewStratSymbol.Sort, ''xmatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''amatchrewStratSymbol.Sort, ''amatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''callStratSymbol.Sort, ''_`[`[_`]`].Qid, '__[''Qid.Sort, ''TermList.Sort], ''CallStrategy.Sort], 'op-hook[''oneStratSymbol.Sort, ''one.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[ ''starStratSymbol.Sort, ''_*.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''normalizationStratSymbol.Sort, ''_!.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''notStratSymbol.Sort, ''not.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''testStratSymbol.Sort, ''test.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[ ''tryStratSymbol.Sort, ''try.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''usingStratSymbol.Sort, ''_using_.Sort, '__[''Variable.Sort, ''Strategy.Sort], ''UsingPair.Sort], 'op-hook[''usingListStratSymbol.Sort, ''_`,_.Qid, '__[''UsingPairSet.Sort, ''UsingPairSet.Sort], ''UsingPairSet.Sort], 'op-hook[''emptyStratListSymbol.Sort, ''empty.Sort, 'nil.TypeList, ''StrategyList.Sort], 'op-hook[''stratListSymbol.Sort, ''_`,_.Qid, '__[''StrategyList.Sort, ''StrategyList.Sort], ''StrategyList.Sort], 'op-hook[''headerSymbol.Sort, ''_`{_`}.Sort, '__[ ''Qid.Sort, ''ParameterDeclList.Sort], ''Header.Sort], 'op-hook[ ''parameterDeclSymbol.Sort, ''_::_.Variable, '__[''Sort.Sort, ''ModuleExpression.Sort], ''ParameterDecl.Sort], 'op-hook[ ''parameterDeclListSymbol.Sort, ''_`,_.Qid, '__[''NeParameterDeclList.Sort, ''ParameterDeclList.Sort], ''NeParameterDeclList.Sort], 'op-hook[ ''protectingSymbol.Sort, ''protecting_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''extendingSymbol.Sort, ''extending_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''includingSymbol.Sort, ''including_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[ ''generatedBySymbol.Sort, ''generated-by_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''nilImportListSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''ImportList.Sort], 'op-hook[''importListSymbol.Sort, ''__.Sort, '__[''ImportList.Sort, ''ImportList.Sort], ''ImportList.Sort], 'op-hook[''emptySortSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''QidSet.Sort], 'op-hook[''sortSetSymbol.Sort, ''_;_.Sort, '__[ ''NeQidSet.Sort, ''QidSet.Sort], ''NeQidSet.Sort], 'op-hook[ ''subsortSymbol.Sort, ''subsort_<_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SubsortDecl.Sort], 'op-hook[''emptySubsortDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''SubsortDeclSet.Sort], 'op-hook[ ''subsortDeclSetSymbol.Sort, ''__.Sort, '__[''SubsortDeclSet.Sort, ''SubsortDeclSet.Sort], ''SubsortDeclSet.Sort], 'op-hook[ ''nilQidListSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''QidList.Sort], 'op-hook[''qidListSymbol.Sort, ''__.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort], 'op-hook[''emptyQidSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''QidSet.Sort], 'op-hook[''qidSetSymbol.Sort, ''_;_.Sort, '__[''NeQidSet.Sort, ''QidSet.Sort], ''NeQidSet.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'op-hook[ ''natListSymbol.Sort, ''__.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort], 'op-hook[''unboundedSymbol.Sort, ''unbounded.Sort, 'nil.TypeList, ''Bound.Sort], 'op-hook[''noParentSymbol.Sort, ''none.Sort, 'nil.TypeList, ''Parent.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[ ''sortRenamingSymbol.Sort, ''sort_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''opRenamingSymbol.Sort, ''op_to_`[_`].Qid, '__[ ''Qid.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort], 'op-hook[ ''opRenamingSymbol2.Sort, ''op_:_->_to_`[_`].Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort], 'op-hook[''labelRenamingSymbol.Sort, ''label_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[ ''stratRenamingSymbol.Sort, ''strat_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''stratRenamingSymbol2.Sort, ''strat_:_@_to_.Variable, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''renamingSetSymbol.Sort, ''_`,_.Qid, '__[''RenamingSet.Sort, ''RenamingSet.Sort], ''RenamingSet.Sort], 'op-hook[''sumSymbol.Sort, ''_+_.Sort, '__[ ''ModuleExpression.Sort, ''ModuleExpression.Sort], ''ModuleExpression.Sort], 'op-hook[''renamingSymbol.Sort, ''_*`(_`).Sort, '__[''ModuleExpression.Sort, ''RenamingSet.Sort], ''ModuleExpression.Sort], 'op-hook[''instantiationSymbol.Sort, ''_`{_`}.Sort, '__[''Expression.Sort, ''NeParameterList.Sort], ''Expression.Sort], 'op-hook[ ''termHookSymbol.Sort, ''term-hook.Sort, '__[''Qid.Sort, ''Term.Sort], ''Hook.Sort], 'op-hook[''hookListSymbol.Sort, ''__.Sort, '__[ ''HookList.Sort, ''HookList.Sort], ''HookList.Sort], 'op-hook[ ''idHookSymbol.Sort, ''id-hook.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Hook.Sort], 'op-hook[''opHookSymbol.Sort, ''op-hook.Sort, '__[''Qid.Sort, ''Qid.Sort, ''QidList.Sort, ''Qid.Sort], ''Hook.Sort], 'op-hook[ ''assocSymbol.Sort, ''assoc.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''commSymbol.Sort, ''comm.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''idemSymbol.Sort, ''idem.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''iterSymbol.Sort, ''iter.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''idSymbol.Sort, ''id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''leftIdSymbol.Sort, ''left-id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''rightIdSymbol.Sort, ''right-id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''stratSymbol.Sort, ''strat.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[ ''memoSymbol.Sort, ''memo.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''precSymbol.Sort, ''prec.Sort, ''Nat.Sort, ''Attr.Sort], 'op-hook[ ''gatherSymbol.Sort, ''gather.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[ ''formatSymbol.Sort, ''format.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[ ''latexSymbol.Sort, ''latex.Sort, ''String.Sort, ''Attr.Sort], 'op-hook[ ''ctorSymbol.Sort, ''ctor.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''frozenSymbol.Sort, ''frozen.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[''polySymbol.Sort, ''poly.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[''configSymbol.Sort, ''config.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''objectSymbol.Sort, ''object.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''msgSymbol.Sort, ''msg.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''portalSymbol.Sort, ''portal.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''pconstSymbol.Sort, ''pconst.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''specialSymbol.Sort, ''special.Sort, ''NeHookList.Sort, ''Attr.Sort], 'op-hook[''labelSymbol.Sort, ''label.Sort, ''Qid.Sort, ''Attr.Sort], 'op-hook[''metadataSymbol.Sort, ''metadata.Sort, ''String.Sort, ''Attr.Sort], 'op-hook[''owiseSymbol.Sort, ''owise.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''variantAttrSymbol.Sort, ''variant.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''narrowingSymbol.Sort, ''narrowing.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''nonexecSymbol.Sort, ''nonexec.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''printSymbol.Sort, ''print.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[''emptyAttrSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''AttrSet.Sort], 'op-hook[''attrSetSymbol.Sort, ''__.Sort, '__[ ''AttrSet.Sort, ''AttrSet.Sort], ''AttrSet.Sort], 'op-hook[ ''opDeclSymbol.Sort, ''op_:_->_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''OpDecl.Sort], 'op-hook[ ''opDeclSetSymbol.Sort, ''__.Sort, '__[''OpDeclSet.Sort, ''OpDeclSet.Sort], ''OpDeclSet.Sort], 'op-hook[''emptyOpDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''OpDeclSet.Sort], 'op-hook[''mbSymbol.Sort, ''mb_:_`[_`]..Qid, '__[''Term.Sort, ''Sort.Sort, ''AttrSet.Sort], ''MembAx.Sort], 'op-hook[''cmbSymbol.Sort, ''cmb_:_if_`[_`]..Qid, '__[ ''Term.Sort, ''Sort.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''MembAx.Sort], 'op-hook[''emptyMembAxSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''MembAxSet.Sort], 'op-hook[''membAxSetSymbol.Sort, ''__.Sort, '__[''MembAxSet.Sort, ''MembAxSet.Sort], ''MembAxSet.Sort], 'op-hook[''eqSymbol.Sort, ''eq_=_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Equation.Sort], 'op-hook[''ceqSymbol.Sort, ''ceq_=_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''Equation.Sort], 'op-hook[''emptyEquationSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''EquationSet.Sort], 'op-hook[ ''equationSetSymbol.Sort, ''__.Sort, '__[''EquationSet.Sort, ''EquationSet.Sort], ''EquationSet.Sort], 'op-hook[''rlSymbol.Sort, ''rl_=>_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Rule.Sort], 'op-hook[''crlSymbol.Sort, ''crl_=>_if_`[_`]..Qid, '__[ ''Term.Sort, ''Term.Sort, ''Condition.Sort, ''AttrSet.Sort], ''Rule.Sort], 'op-hook[''emptyRuleSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''RuleSet.Sort], 'op-hook[''ruleSetSymbol.Sort, ''__.Sort, '__[ ''RuleSet.Sort, ''RuleSet.Sort], ''RuleSet.Sort], 'op-hook[ ''stratDeclSymbol.Sort, ''strat_:_@_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''StratDecl.Sort], 'op-hook[ ''emptyStratDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratDeclSet.Sort], 'op-hook[''stratDeclSetSymbol.Sort, ''__.Sort, '__[ ''StratDeclSet.Sort, ''StratDeclSet.Sort], ''StratDeclSet.Sort], 'op-hook[ ''sdSymbol.Sort, ''sd_:=_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''AttrSet.Sort], ''StratDefinition.Sort], 'op-hook[ ''csdSymbol.Sort, ''csd_:=_if_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''StratDefinition.Sort], 'op-hook[''emptyStratDefSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratDefSet.Sort], 'op-hook[ ''stratDefSetSymbol.Sort, ''__.Sort, '__[''StratDefSet.Sort, ''StratDefSet.Sort], ''StratDefSet.Sort], 'op-hook[''fmodSymbol.Sort, ''fmod_is_sorts_.____endfm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FModule.Sort], 'op-hook[''fthSymbol.Sort, ''fth_is_sorts_.____endfth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FTheory.Sort], 'op-hook[''modSymbol.Sort, ''mod_is_sorts_._____endm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''SModule.Sort], 'op-hook[ ''thSymbol.Sort, ''th_is_sorts_._____endth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''STheory.Sort], 'op-hook[''smodSymbol.Sort, ''smod_is_sorts_._______endsm.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratModule.Sort], 'op-hook[ ''sthSymbol.Sort, ''sth_is_sorts_._______endsth.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratTheory.Sort], 'op-hook[ ''sortMappingSymbol.Sort, ''sort_to_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SortMapping.Sort], 'op-hook[''emptySortMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''SortMappingSet.Sort], 'op-hook[ ''sortMappingSetSymbol.Sort, ''__.Sort, '__[''SortMappingSet.Sort, ''SortMappingSet.Sort], ''SortMappingSet.Sort], 'op-hook[ ''opMappingSymbol.Sort, ''op_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''OpMapping.Sort], 'op-hook[''opSpecificMappingSymbol.Sort, ''op_:_->_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''OpMapping.Sort], 'op-hook[''opTermMappingSymbol.Sort, ''op_to`term_..Qid, '__[''Term.Sort, ''Term.Sort], ''OpMapping.Sort], 'op-hook[''emptyOpMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''OpMappingSet.Sort], 'op-hook[''opMappingSetSymbol.Sort, ''__.Sort, '__[ ''OpMappingSet.Sort, ''OpMappingSet.Sort], ''OpMappingSet.Sort], 'op-hook[ ''stratMappingSymbol.Sort, ''strat_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''StratMapping.Sort], 'op-hook[''stratSpecificMappingSymbol.Sort, ''strat_:_@_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''StratMapping.Sort], 'op-hook[''stratExprMappingSymbol.Sort, ''strat_to`expr_..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort], ''StratMapping.Sort], 'op-hook[''emptyStratMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratMappingSet.Sort], 'op-hook[ ''stratMappingSetSymbol.Sort, ''__.Sort, '__[''StratMappingSet.Sort, ''StratMappingSet.Sort], ''StratMappingSet.Sort], 'op-hook[ ''viewSymbol.Sort, ''view_from_to_is___endv.Sort, '__[''Header.Sort, ''ModuleExpression.Sort, ''ModuleExpression.Sort, ''SortMappingSet.Sort, ''OpMappingSet.Sort, ''StratMappingSet.Sort], ''View.Sort], 'op-hook[ ''anyTypeSymbol.Sort, ''anyType.Sort, 'nil.TypeList, ''Type?.Sort], 'op-hook[''unificandPairSymbol.Sort, ''_=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''UnificandPair.Sort], 'op-hook[ ''unificationConjunctionSymbol.Sort, ''_/\_.Sort, '__[ ''UnificationProblem.Sort, ''UnificationProblem.Sort], ''UnificationProblem.Sort], 'op-hook[''patternSubjectPairSymbol.Sort, ''_<=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''PatternSubjectPair.Sort], 'op-hook[''matchingConjunctionSymbol.Sort, ''_/\_.Sort, '__[ ''MatchingProblem.Sort, ''MatchingProblem.Sort], ''MatchingProblem.Sort], 'op-hook[''resultPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort], ''ResultPair.Sort], 'op-hook[''resultTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''ResultTriple.Sort], 'op-hook[''result4TupleSymbol.Sort, ''`{_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Context.Sort], ''Result4Tuple.Sort], 'op-hook[''matchPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Context.Sort], ''MatchPair.Sort], 'op-hook[''unificationTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''UnificationTriple.Sort], 'op-hook[''variantSymbol.Sort, ''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Qid.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort], 'op-hook[ ''narrowingApplyResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingApplyResult.Sort], 'op-hook[ ''narrowingSearchResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchResult.Sort], 'op-hook[ ''traceStepSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Rule.Sort], ''TraceStep.Sort], 'op-hook[''nilTraceSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''Trace.Sort], 'op-hook[''traceSymbol.Sort, ''__.Sort, '__[''Trace.Sort, ''Trace.Sort], ''Trace.Sort], 'op-hook[ ''narrowingStepSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort, ''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''NarrowingStep.Sort], 'op-hook[ ''nilNarrowingTraceSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''NarrowingTrace.Sort], 'op-hook[''narrowingTraceSymbol.Sort, ''__.Sort, '__[''NarrowingTrace.Sort, ''NarrowingTrace.Sort], ''NarrowingTrace.Sort], 'op-hook[''narrowingSearchPathResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''NarrowingTrace.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchPathResult.Sort], 'op-hook[ ''smtResultSymbol.Sort, ''`{_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Term.Sort, ''Nat.Sort], ''SmtResult.Sort], 'op-hook[ ''noParseSymbol.Sort, ''noParse.Sort, ''Nat.Sort, ''ResultPair?.Sort], 'op-hook[''ambiguitySymbol.Sort, ''ambiguity.Sort, '__[''ResultPair.Sort, ''ResultPair.Sort], ''ResultPair?.Sort], 'op-hook[''failure2Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''ResultPair?.Sort], 'op-hook[ ''failure3Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''ResultTriple?.Sort], 'op-hook[''failureIncomplete3Symbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''ResultTriple?.Sort], 'op-hook[ ''failure4Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''Result4Tuple?.Sort], 'op-hook[''noUnifierPairSymbol.Sort, ''noUnifier.Sort, 'nil.TypeList, ''UnificationPair?.Sort], 'op-hook[ ''noUnifierTripleSymbol.Sort, ''noUnifier.Sort, 'nil.TypeList, ''UnificationTriple?.Sort], 'op-hook[''noUnifierIncompletePairSymbol.Sort, ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationPair?.Sort], 'op-hook[''noUnifierIncompleteTripleSymbol.Sort, ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationTriple?.Sort], 'op-hook[''noVariantSymbol.Sort, ''noVariant.Sort, 'nil.TypeList, ''Variant?.Sort], 'op-hook[''noVariantIncompleteSymbol.Sort, ''noVariantIncomplete.Sort, 'nil.TypeList, ''Variant?.Sort], 'op-hook[ ''narrowingApplyFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort], 'op-hook[ ''narrowingApplyFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort], 'op-hook[ ''narrowingSearchFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort], 'op-hook[ ''narrowingSearchFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort], 'op-hook[ ''narrowingSearchPathFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort], 'op-hook[ ''narrowingSearchPathFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort], 'op-hook[''noMatchSubstSymbol.Sort, ''noMatch.Sort, 'nil.TypeList, ''Substitution?.Sort], 'op-hook[ ''noMatchIncompleteSubstSymbol.Sort, ''noMatchIncomplete.Sort, 'nil.TypeList, ''Substitution?.Sort], 'op-hook[''noMatchPairSymbol.Sort, ''noMatch.Sort, 'nil.TypeList, ''MatchPair?.Sort], 'op-hook[ ''failureTraceSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''Trace?.Sort], 'op-hook[''smtFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''SmtResult?.Sort], 'op-hook[''noStratParseSymbol.Sort, ''noStratParse.Sort, ''Nat.Sort, ''Strategy?.Sort], 'op-hook[ ''stratAmbiguitySymbol.Sort, ''ambiguity.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy?.Sort], 'op-hook[''mixfixSymbol.Sort, ''mixfix.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''withParensSymbol.Sort, ''with-parens.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''withSortsSymbol.Sort, ''with-sorts.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''flatSymbol.Sort, ''flat.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''formatPrintOptionSymbol.Sort, ''format.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''numberSymbol.Sort, ''number.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''ratSymbol.Sort, ''rat.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''emptyPrintOptionSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''PrintOptionSet.Sort], 'op-hook[''printOptionSetSymbol.Sort, ''__.Sort, '__[''PrintOptionSet.Sort, ''PrintOptionSet.Sort], ''PrintOptionSet.Sort], 'op-hook[''delaySymbol.Sort, ''delay.Sort, 'nil.TypeList, ''VariantOption.Sort], 'op-hook[''filterSymbol.Sort, ''filter.Sort, 'nil.TypeList, ''VariantOption.Sort], 'op-hook[ ''emptyVariantOptionSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''VariantOptionSet.Sort], 'op-hook[''variantOptionSetSymbol.Sort, ''__.Sort, '__[''VariantOptionSet.Sort, ''VariantOptionSet.Sort], ''VariantOptionSet.Sort], 'op-hook[''breadthFirstSymbol.Sort, ''breadthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort], 'op-hook[ ''depthFirstSymbol.Sort, ''depthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort], 'op-hook[''legacyUnificationPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Nat.Sort], ''UnificationPair.Sort], 'op-hook[''legacyUnificationTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Nat.Sort], ''UnificationTriple.Sort], 'op-hook[ ''legacyVariantSymbol.Sort, ''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Nat.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]], 'op_:_->_`[_`].[ ''metaRewrite.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaRewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaSearch.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Condition`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSearch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSearchPath.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Condition`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Trace?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSearchPath.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSmtSearch.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Condition`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[SmtResult?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSmtSearch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSrewrite.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[StrategyList`,Strategy?`].Kind, ''`[SrewriteOption`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSrewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''legacyMetaVariantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaVariantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaVariantMatch.Sort, '__[ ''`[Module`].Kind, ''`[MatchingProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Substitution?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaVariantMatch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaVariantUnify.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaVariantUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaVariantUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaXapply.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Substitution?`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Result4Tuple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaXapply.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaXmatch.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Condition`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaXmatch.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''minimalSorts.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaMinimalSorts.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''mixfix.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''NarrowingTrace.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''Trace.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noMatch.Sort, 'nil.TypeList, ''MatchPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noMatch.Sort, 'nil.TypeList, ''Substitution?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noMatchIncomplete.Sort, 'nil.TypeList, ''Substitution?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noParse.Sort, ''Nat.Sort, ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noStratParse.Sort, ''Nat.Sort, ''Strategy?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifier.Sort, 'nil.TypeList, ''UnificationPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifier.Sort, 'nil.TypeList, ''UnificationTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noVariant.Sort, 'nil.TypeList, ''Variant?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noVariantIncomplete.Sort, 'nil.TypeList, ''Variant?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''Parent.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''PrintOptionSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''VariantOptionSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''number.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''rat.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''sameKind.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSameKind.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''sortLeq.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSortLeq.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''upEqs.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[EquationSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpEqs.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''upImports.Sort, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[ImportList`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaUpImports.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upMbs.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[MembAxSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpMbs.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upModule.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[Module`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpModule.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upOpDecls.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[OpDeclSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpOpDecls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upRls.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[RuleSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpRls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSds.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[StratDefSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpSds.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSorts.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upStratDecls.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[StratDeclSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpStratDecls.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSubsortDecls.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[SubsortDeclSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpSubsortDecls.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upTerm.Sort, ''Universal.Sort, ''Term.Sort, '__['poly['s_['0.Zero]], 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]]], 'op_:_->_`[_`].[''upView.Sort, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[View`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpView.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''wellFormed.Sort, ''Module.Sort, ''Bool.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaWellFormedModule.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''wellFormed.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[Bool`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaWellFormedTerm.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''wellFormed.Sort, '__[ ''`[Module`].Kind, ''`[Substitution?`].Kind], ''`[Bool`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaWellFormedSubstitution.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''with-parens.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''with-sorts.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr]], 'none.MembAxSet, '__['eq_=_`[_`].['_`[_`][ ''$applySubstitution.Sort, '_`,_[''Q:Qid.Variable, ''S:Substitution.Variable]], ''Q:Qid.Variable, 'owise.Attr], 'eq_=_`[_`].[ '_`[_`][''$applySubstitution.Sort, '_`,_[''V:Variable.Variable, '_`[_`][ ''_;_.Sort, '_`,_[''S:Substitution.Variable, '_`[_`][''_<-_.Sort, '_`,_[ ''V:Variable.Variable, ''T:Term.Variable]]]]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$applySubstitution.Sort, '_`,_[ '_`[_`][''_`,_.Qid, '_`,_[''T:Term.Variable, ''TL:NeTermList.Variable]], ''S:Substitution.Variable]], '_`[_`][''_`,_.Qid, '_`,_['_`[_`][ ''$applySubstitution.Sort, '_`,_[''T:Term.Variable, ''S:Substitution.Variable]], '_`[_`][''$applySubstitution.Sort, '_`,_[ ''TL:NeTermList.Variable, ''S:Substitution.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$applySubstitution.Sort, '_`,_['_`[_`][''_`[_`].Qid, '_`,_[''Q:Qid.Variable, ''TL:NeTermList.Variable]], ''S:Substitution.Variable]], '_`[_`][''_`[_`].Qid, '_`,_[''Q:Qid.Variable, '_`[_`][''$applySubstitution.Sort, '_`,_[''TL:NeTermList.Variable, ''S:Substitution.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''applySubstitution.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''S:Substitution.Variable]], '_`[_`][''getTerm.Sort, '_`[_`][ ''metaNormalize.Sort, '_`,_[''M:Module.Variable, '_`[_`][ ''$applySubstitution.Sort, '_`,_[''T:Term.Variable, ''S:Substitution.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getAccumulatedSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''A:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getAccumulatedSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''A:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getContext.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getContext.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[ ''S:Substitution.Variable, ''C:Context.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialTerm.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialType.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getLabel.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''L:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getLabel.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''L:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getLhsSubstitution.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''LS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMoreVariantsInLayerFlag.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''B:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getParent.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''P:Parent.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRhsSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''RS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRule.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''R:Rule.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRuleSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''RS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStateVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''SV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''S:Substitution.Variable, ''C:Context.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[ ''S:Substitution.Variable, ''V:Qid.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getTermSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''TS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTrace.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:NarrowingTrace.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getUnifierVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifierVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifierVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getVariableFamily.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''S:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaNarrowingApply.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][ ''metaNarrowingApply.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaNarrowingSearch.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaNarrowingSearch.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaNarrowingSearchPath.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaNarrowingSearchPath.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaParse.Sort, '_`,_[''M:Module.Variable, ''Q:QidList.Variable, ''T:Type?.Variable]], '_`[_`][''metaParse.Sort, '_`,_[''M:Module.Variable, ''none.EmptyQidSet.Constant, ''Q:QidList.Variable, ''T:Type?.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''none.EmptyQidSet.Constant, ''T:Term.Variable, '_`[_`][''__.Sort, '_`,_[''mixfix.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[''flat.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[ ''format.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[ ''number.PrintOption.Constant, ''rat.PrintOption.Constant]]]]]]]], ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''none.EmptyQidSet.Constant, ''T:Term.Variable, ''P:PrintOptionSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''VS:VariableSet.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''VS:VariableSet.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaVariantDisjointUnify.Sort, '_`,_[ ''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][ ''metaVariantDisjointUnify.Sort, '_`,_[''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaVariantUnify.Sort, '_`,_[''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaVariantUnify.Sort, '_`,_[ ''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet]]], 'FModule) Bye. Maude-Maude3.5.1/tests/Meta/metaProcPrelude0000775000175000017510000000037015036121435020131 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcPrelude.maude -no-banner -no-advise \ > metaProcPrelude.out 2>&1 diff $srcdir/metaProcPrelude.expected metaProcPrelude.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcParse.maude0000664000175000017510000000273215036121435020676 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test parsing in the meta-interpreter. *** load metaInterpreter fmod FOO is inc RAT . sort Foo . op 0 : -> Foo . endfm mod PARSE-TEST is pr META-INTERPRETER . pr RAT . op me : -> Oid . op User : -> Cid . op term:_ : Term -> Attribute . op qids:_ : QidList -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var QL : QidList . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('FOO, true)) . rl < X : User | AS, qids: QL > insertedModule(X, Y) => < X : User | AS > parseTerm(Y, X, 'FOO, 'X:Rat, QL, anyType) . endm erew in PARSE-TEST : <> < me : User | qids: '1/2 > createInterpreter(interpreterManager, me, newProcess) . erew in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'X:Rat) > createInterpreter(interpreterManager, me, newProcess) . erew in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'X) > createInterpreter(interpreterManager, me, newProcess) . erew in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'bad) > createInterpreter(interpreterManager, me, newProcess) . erew in PARSE-TEST : <> < me : User | qids: ('1/2 '- '1) > createInterpreter(interpreterManager, me, newProcess) . erew in PARSE-TEST : <> < me : User | qids: ('1/2 '- '1 '- '1 '/ '2) > createInterpreter(interpreterManager, me, newProcess) . erew in PARSE-TEST : <> < me : User | qids: '0 > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcParse.expected0000664000175000017510000000425415036121435021405 0ustar nileshnilesh========================================== erewrite in PARSE-TEST : <> < me : User | qids: '1/2 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), { '_/_['s_['0.Zero], 's_^2['0.Zero]], 'PosRat}) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'X:Rat) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), { '_+_['_/_['s_['0.Zero], 's_^2['0.Zero]], 'X:Rat], 'Rat}) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'X) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), { '_+_['_/_['s_['0.Zero], 's_^2['0.Zero]], 'X:Rat], 'Rat}) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'bad) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), noParse(2)) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: ('1/2 '- '1) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), { '_-_['_/_['s_['0.Zero], 's_^2['0.Zero]], 's_['0.Zero]], 'Rat}) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: ('1/2 '- '1 '- '1 '/ '2) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), { '_-_['_-_['_/_['s_['0.Zero], 's_^2['0.Zero]], 's_['0.Zero]], '_/_['s_[ '0.Zero], 's_^2['0.Zero]]], 'Rat}) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: '0 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), ambiguity({'0.Zero, 'Zero}, {'0.Foo, 'Foo})) Bye. Maude-Maude3.5.1/tests/Meta/metaProcParse0000775000175000017510000000036015036121435017602 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcParse.maude -no-banner -no-advise \ > metaProcParse.out 2>&1 diff $srcdir/metaProcParse.expected metaProcParse.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcNarrowSearch.maude0000664000175000017510000000724615036121435022227 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test getNarrowingSearchResult()/getNarrowingSearchResultAndPath() in the meta-interpreter. *** load metaInterpreter mod NARROW is sort Foo . ops f g h : Foo -> Foo . ops i j k : Foo Foo -> Foo . vars X Y Z W A B C D : Foo . eq j(f(X), Y) = i(f(Y), X) [variant] . rl g(i(X, k(Y, Z))) => f(k(Z, X)) [narrowing] . endm mod NARROW-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op empty : -> MsgList . op _;_ : MsgList MsgList -> MsgList [assoc id: empty] . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : MsgList -> Attribute . op start:_ : Term -> Attribute . op goal:_ : Term -> Attribute . op fold:_ : Qid -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars S S' : Substitution . var ST T G : Term . var TY : Type . var C : Context . var Q Q' L : Qid . var ML : MsgList . var TL : TermList . var F : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('NARROW, true)) . rl < X : User | AS, start: ST, goal: G, fold: F > insertedModule(X, Y) => < X : User | AS, soln: 1, start: ST, goal: G, fold: F, got: empty > getNarrowingSearchResult(Y, X, 'NARROW, ST, G, '*, unbounded, F, 0) . rl < X : User | AS, soln: N, start: ST, goal: G, fold: F, got: ML > gotNarrowingSearchResult(X, Y, M, T, TY, S, Q, S', Q') => < X : User | AS, soln: (N + 1), start: ST, goal: G, fold: F, got: (ML ; gotNarrowingSearchResult(X, Y, M, T, TY, S, Q, S', Q')) > getNarrowingSearchResult(Y, X, 'NARROW, ST, G, '*, unbounded, F, N) . endm set show breakdown on . erew in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > createInterpreter(interpreterManager, me, newProcess) . erew in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > createInterpreter(interpreterManager, me, newProcess) . mod NARROW-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op empty : -> MsgList . op _;_ : MsgList MsgList -> MsgList [assoc id: empty] . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : MsgList -> Attribute . op start:_ : Term -> Attribute . op goal:_ : Term -> Attribute . op fold:_ : Qid -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars S S' : Substitution . var ST T G : Term . var TY : Type . var C : Context . var Q Q' L : Qid . var ML : MsgList . var TL : TermList . var F : Qid . var TR : NarrowingTrace . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('NARROW, true)) . rl < X : User | AS, start: ST, goal: G, fold: F > insertedModule(X, Y) => < X : User | AS, soln: 1, start: ST, goal: G, fold: F, got: empty > getNarrowingSearchResultAndPath(Y, X, 'NARROW, ST, G, '*, unbounded, F, 0) . rl < X : User | AS, soln: N, start: ST, goal: G, fold: F, got: ML > gotNarrowingSearchResultAndPath(X, Y, M, T, TY, S, TR, S', Q') => < X : User | AS, soln: (N + 1), start: ST, goal: G, fold: F, got: (ML ; gotNarrowingSearchResultAndPath(X, Y, M, T, TY, S, TR, S', Q')) > getNarrowingSearchResultAndPath(Y, X, 'NARROW, ST, G, '*, unbounded, F, N) . endm erew in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > createInterpreter(interpreterManager, me, newProcess) . erew in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcNarrowSearch.expected0000664000175000017510000001245715036121435022735 0ustar nileshnilesh========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > createInterpreter(interpreterManager, me, newProcess) . rewrites: 13 mb applications: 0 equational rewrites: 8 rule rewrites: 5 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 4, got: (gotNarrowingSearchResult( me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@) ; gotNarrowingSearchResult(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '%) ; gotNarrowingSearchResult(me, interpreter(0), 3, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo, '%, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@)), start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > noSuchResult(me, interpreter(0), 4, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > createInterpreter(interpreterManager, me, newProcess) . rewrites: 13 mb applications: 0 equational rewrites: 8 rule rewrites: 5 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 4, got: (gotNarrowingSearchResult( me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@) ; gotNarrowingSearchResult(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '%) ; gotNarrowingSearchResult(me, interpreter(0), 3, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo, '%, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@)), start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > noSuchResult(me, interpreter(0), 4, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > createInterpreter(interpreterManager, me, newProcess) . rewrites: 13 mb applications: 0 equational rewrites: 8 rule rewrites: 5 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 4, got: ( gotNarrowingSearchResultAndPath(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, nil, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@) ; gotNarrowingSearchResultAndPath(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, nil, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '%) ; gotNarrowingSearchResultAndPath(me, interpreter(0), 3, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; '#2:Foo <- '%3:Foo ; 'X:Foo <- 'f['%3:Foo] ; 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%2:Foo, '%, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo }, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@)), start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > noSuchResult(me, interpreter(0), 4, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > createInterpreter(interpreterManager, me, newProcess) . rewrites: 13 mb applications: 0 equational rewrites: 8 rule rewrites: 5 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 4, got: ( gotNarrowingSearchResultAndPath(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, nil, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@) ; gotNarrowingSearchResultAndPath(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, nil, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '%) ; gotNarrowingSearchResultAndPath(me, interpreter(0), 3, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; '#2:Foo <- '%3:Foo ; 'X:Foo <- 'f['%3:Foo] ; 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%2:Foo, '%, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo }, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@)), start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > noSuchResult(me, interpreter(0), 4, true) Bye. Maude-Maude3.5.1/tests/Meta/metaProcNarrowSearch0000775000175000017510000000041415036121435021126 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcNarrowSearch.maude -no-banner -no-advise \ > metaProcNarrowSearch.out 2>&1 diff $srcdir/metaProcNarrowSearch.expected metaProcNarrowSearch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcNarrow.maude0000664000175000017510000001451515036121435021076 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test getOneStepNarrowing() in the meta-interpreter. *** load metaInterpreter mod NARROW is sort Foo . op f : Foo Foo -> Foo [assoc comm] . ops g h : Foo -> Foo . ops a b c d e : -> Foo . vars X Y Z W : Foo . rl g(f(X, X)) => h(X) [narrowing]. endm mod NARROW-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op empty : -> MsgList . op _;_ : MsgList MsgList -> MsgList [assoc id: empty] . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : MsgList -> Attribute . op start:_ : Term -> Attribute . op irred:_ : TermList -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars S S' : Substitution . var ST T : Term . var TY : Type . var C : Context . var Q L : Qid . var ML : MsgList . var TL : TermList . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('NARROW, true)) . rl < X : User | AS, start: ST, irred: TL > insertedModule(X, Y) => < X : User | AS, soln: 1, start: ST, irred: TL, got: empty > getOneStepNarrowing(Y, X, 'NARROW, ST, TL, '#, 0) . rl < X : User | AS, soln: N, start: ST, irred: TL, got: ML > gotOneStepNarrowing(X, Y, M, T, TY, C, L, S, S', Q) => < X : User | AS, soln: (N + 1), start: ST, irred: TL, got: (ML ; gotOneStepNarrowing(X, Y, M, T, TY, C, L, S, S', Q)) > getOneStepNarrowing(Y, X, 'NARROW, ST, TL, '#, N) . endm set show breakdown on . erew in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . mod NARROW is sort Foo . op f : Foo Foo -> Foo [assoc] . ops g h : Foo -> Foo . ops a b c d e : -> Foo . vars X Y Z W : Foo . rl g(f(X, X)) => h(X) [narrowing]. endm erew in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . erew in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#22:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . erew in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#23:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . mod XOR is sorts Elt Expr . subsort Elt < Expr . ops a b c d e : -> Elt . op _+_ : Expr Expr -> Expr [assoc comm] . op 0 : -> Elt . vars W X Y Z : Expr . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endm mod NARROW is inc XOR . ops g h : Expr -> Expr . op f : Expr Expr -> Expr . vars W X Y Z : Expr . rl g(Y + a) => h(Y) [narrowing label one] . endm *** bound variable in irreducibility constraint erew in NARROW-TEST : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, newProcess) . *** unbound variable in irreducibility constraint erew in NARROW-TEST : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, newProcess) . *** # variable in input erew in NARROW-TEST : <> < me : User | start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, newProcess) . mod NARROW-TEST2 is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op empty : -> MsgList . op _;_ : MsgList MsgList -> MsgList [assoc id: empty] . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : MsgList -> Attribute . op start:_ : Term -> Attribute . op irred:_ : TermList -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars S S' : Substitution . var ST T : Term . var TY : Type . var C : Context . var Q L : Qid . var ML : MsgList . var TL : TermList . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('NARROW, true)) . rl < X : User | AS, start: ST, irred: TL > insertedModule(X, Y) => < X : User | AS, soln: 1, start: ST, irred: TL, got: empty > getOneStepNarrowing(Y, X, 'NARROW, ST, TL, '#, (delay filter), 0) . rl < X : User | AS, soln: N, start: ST, irred: TL, got: ML > gotOneStepNarrowing(X, Y, M, T, TY, C, L, S, S', Q) => < X : User | AS, soln: (N + 1), start: ST, irred: TL, got: (ML ; gotOneStepNarrowing(X, Y, M, T, TY, C, L, S, S', Q)) > getOneStepNarrowing(Y, X, 'NARROW, ST, TL, '#, (delay filter), N) . endm *** bound variable in irreducibility constraint erew in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, newProcess) . *** unbound variable in irreducibility constraint erew in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, newProcess) . *** # variable in input erew in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, newProcess) . fmod EXCLUSIVE-OR is sorts Elem ElemXor . subsort Elem < ElemXor . ops a b c : -> Elem . op mt : -> ElemXor . op _*_ : ElemXor ElemXor -> ElemXor [assoc comm] . vars X Y Z U V : [ElemXor] . vars V1 V2 V3 V4 V5 V6 V7 V8 V9 : [ElemXor] . eq [idem] : X * X = mt [variant] . eq [idem-Coh] : X * X * Z = Z [variant] . eq [id] : X * mt = X [variant] . op f1 : [ElemXor] -> [ElemXor] . op f2 : [ElemXor] [ElemXor] -> [ElemXor] . op f3 : [ElemXor] [ElemXor] [ElemXor] -> [ElemXor] . endfm mod NARROW is inc EXCLUSIVE-OR . vars W X Y Z : [ElemXor] . op f : ElemXor ElemXor -> ElemXor . rl X * Y => f(X, Y) [narrowing label one] . endm *** 57 unifiers variant unify in NARROW : A:ElemXor * B:ElemXor =? X * Y . *** 1 unifier filtered variant unify in NARROW : A:ElemXor * B:ElemXor =? X * Y . erew in NARROW-TEST : <> < me : User | start: ('_*_['A:ElemXor, 'B:ElemXor]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . erew in NARROW-TEST2 : <> < me : User | start: ('_*_['A:ElemXor, 'B:ElemXor]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcNarrow.expected0000664000175000017510000017326615036121435021615 0ustar nileshnilesh========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . rewrites: 139 mb applications: 0 equational rewrites: 92 rule rewrites: 47 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 46, got: (gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo, '@6:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@4:Foo, '@4:Foo, '@5:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@5:Foo, '@6:Foo, '@6:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo, '@6:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@4:Foo, '@4:Foo, '@5:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@4:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@5:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@4:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@4:Foo, '@5:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [ ], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@3:Foo] ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@3:Foo, '@3:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@4:Foo, '@5:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo, '@4:Foo, '@4:Foo] ; '#22:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [ ], ', '#21:Foo <- 'f['@2:Foo, '@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [ ], ', '#21:Foo <- 'f['@2:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo] ; '#22:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo] ; '#23:Foo <- 'f['@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@3:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo, '@5:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@3:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [ ], ', '#21:Foo <- 'f['@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@1:Foo, '@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@1:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo] ; '#23:Foo <- 'f['@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@2:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo] ; '#23:Foo <- 'f['@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@2:Foo, '@2:Foo] ; '#23:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@2:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo, '@5:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [ ], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@3:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@3:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@2:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@2:Foo, '@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@2:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@2:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@2:Foo ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@2:Foo ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@)), start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . rewrites: 25 mb applications: 0 equational rewrites: 16 rule rewrites: 9 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 8, got: (gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@3:Foo, '@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@3:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@3:Foo, '@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@3:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@2:Foo, '@1:Foo, '@3:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@3:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@1:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@1:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@2:Foo ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@3:Foo, '@1:Foo, '@2:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@2:Foo ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@)), start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#22:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 10 mb applications: 0 equational rewrites: 6 rule rewrites: 4 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 3, got: (gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@1:Foo, '@2:Foo]], 'Foo, [], ', '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@1:Foo], 'X:Foo <- 'f['@1:Foo, '@1:Foo], '@)), start: ('g['f['#22:Foo, '#22:Foo, '#23:Foo]]), irred: empty > noSuchResult(me, interpreter(0), 0, false) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#23:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 16 mb applications: 0 equational rewrites: 10 rule rewrites: 6 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 5, got: (gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; '#23:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@1:Foo, '@1:Foo] ; '#23:Foo <- 'f['@1:Foo, '@1:Foo], 'X:Foo <- 'f['@1:Foo, '@1:Foo, '@1:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@1:Foo, '@1:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@1:Foo], '@)), start: ('g['f['#22:Foo, '#23:Foo, '#23:Foo]]), irred: empty > noSuchResult(me, interpreter(0), 0, false) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 13 mb applications: 0 equational rewrites: 8 rule rewrites: 5 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 4, got: (gotOneStepNarrowing(me, interpreter(0), 7, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['h['b.Elt], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- 'a.Elt ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- 'b.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ '_+_['a.Elt, 'b.Elt, '%1:Expr]], '%2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '%1:Expr ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr], '%)), start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > noSuchResult(me, interpreter(0), 6, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 40 mb applications: 0 equational rewrites: 26 rule rewrites: 14 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 13, got: (gotOneStepNarrowing(me, interpreter(0), 31, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['h['b.Elt], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- 'a.Elt ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- 'b.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 19, 'f['h[ '_+_['a.Elt, 'b.Elt, '%1:Expr]], '%2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '%1:Expr ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h['%1:Expr], '%2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr] ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ '0.Elt], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, 'b.Elt] ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- '0.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ 'a.Elt], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- 'b.Elt ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- 'a.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ '_+_['a.Elt, 'b.Elt]], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '0.Elt ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['h['_+_['a.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['a.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 25, 'f['g['h['%1:Expr]], '%2:Expr], 'Expr, 'f['g[[]], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, 'g['_+_['a.Elt, '%1:Expr]]] ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g[ 'h['0.Elt]], '@1:Expr], 'Expr, 'f['g[[]], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, 'g['a.Elt]] ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- '0.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g['h[ 'a.Elt]], '@1:Expr], 'Expr, 'f['g[[]], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, 'g['0.Elt]] ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- 'a.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g['h[ '_+_['a.Elt, '@1:Expr]]], '@2:Expr], 'Expr, 'f['g[[]], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, 'g['@1:Expr]] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['a.Elt, '@1:Expr], '@)), start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > noSuchResult(me, interpreter(0), 3, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 40 mb applications: 0 equational rewrites: 26 rule rewrites: 14 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 13, got: (gotOneStepNarrowing(me, interpreter(0), 31, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '_+_['a.Elt, '@1:Expr] ; '#2:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['h['b.Elt], '@1:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- 'a.Elt ; '#2:Expr <- '@1:Expr, 'Y:Expr <- 'b.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 19, 'f['h[ '_+_['a.Elt, 'b.Elt, '%1:Expr]], '%2:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '%1:Expr ; '#2:Expr <- '%2:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h['%1:Expr], '%2:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr] ; '#2:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ '0.Elt], '@1:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '_+_['a.Elt, 'b.Elt] ; '#2:Expr <- '@1:Expr, 'Y:Expr <- '0.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ 'a.Elt], '@1:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- 'b.Elt ; '#2:Expr <- '@1:Expr, 'Y:Expr <- 'a.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ '_+_['a.Elt, 'b.Elt]], '@1:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '0.Elt ; '#2:Expr <- '@1:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['h['_+_['a.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, '@1:Expr] ; '#2:Expr <- '@2:Expr, 'Y:Expr <- '_+_['a.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 25, 'f['g['h['%1:Expr]], '%2:Expr], 'Expr, 'f['g[[]], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, 'g['_+_['a.Elt, '%1:Expr]]] ; '#2:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g[ 'h['0.Elt]], '@1:Expr], 'Expr, 'f['g[[]], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, 'g['a.Elt]] ; '#2:Expr <- '@1:Expr, 'Y:Expr <- '0.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g['h[ 'a.Elt]], '@1:Expr], 'Expr, 'f['g[[]], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, 'g['0.Elt]] ; '#2:Expr <- '@1:Expr, 'Y:Expr <- 'a.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g['h[ '_+_['a.Elt, '@1:Expr]]], '@2:Expr], 'Expr, 'f['g[[]], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, 'g['@1:Expr]] ; '#2:Expr <- '@2:Expr, 'Y:Expr <- '_+_['a.Elt, '@1:Expr], '@)), start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > noSuchResult(me, interpreter(0), 3, true) ========================================== erewrite in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 5 mb applications: 0 equational rewrites: 2 rule rewrites: 3 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 2, got: gotOneStepNarrowing(me, interpreter(0), 17, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@), start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > noSuchResult(me, interpreter( 0), 6, true) ========================================== erewrite in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 7 mb applications: 0 equational rewrites: 3 rule rewrites: 4 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 3, got: (gotOneStepNarrowing(me, interpreter(0), 59, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 28, 'f['g['h['%1:Expr]], '%2:Expr], 'Expr, 'f['g[[]], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, 'g['_+_['a.Elt, '%1:Expr]]] ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%)), start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > noSuchResult(me, interpreter(0), 3, true) ========================================== erewrite in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, newProcess) . rewrites: 7 mb applications: 0 equational rewrites: 3 rule rewrites: 4 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 3, got: (gotOneStepNarrowing(me, interpreter(0), 59, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '_+_['a.Elt, '@1:Expr] ; '#2:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 28, 'f['g['h['%1:Expr]], '%2:Expr], 'Expr, 'f['g[[]], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, 'g['_+_['a.Elt, '%1:Expr]]] ; '#2:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%)), start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > noSuchResult(me, interpreter(0), 3, true) ========================================== variant unify in NARROW : A:ElemXor * B:ElemXor =? X * Y . Unifier 1 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %4:ElemXor X --> %1:ElemXor * %2:ElemXor Y --> %3:ElemXor * %4:ElemXor Unifier 2 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %2:ElemXor * %3:ElemXor B:ElemXor --> %1:ElemXor X --> %1:ElemXor * %3:ElemXor Y --> %2:ElemXor Unifier 3 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %1:ElemXor * %3:ElemXor Y --> %2:ElemXor Unifier 4 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %2:ElemXor * %3:ElemXor B:ElemXor --> %1:ElemXor X --> %2:ElemXor Y --> %1:ElemXor * %3:ElemXor Unifier 5 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> %2:ElemXor X --> %1:ElemXor Y --> %2:ElemXor Unifier 6 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %2:ElemXor Y --> %1:ElemXor * %3:ElemXor Unifier 7 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> %2:ElemXor X --> %2:ElemXor Y --> %1:ElemXor Unifier 8 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #2:ElemXor * #4:ElemXor B:ElemXor --> #1:ElemXor * #3:ElemXor * #5:ElemXor X --> #2:ElemXor * #3:ElemXor Y --> #4:ElemXor * #5:ElemXor Unifier 9 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #2:ElemXor * #3:ElemXor * #4:ElemXor B:ElemXor --> #1:ElemXor * #3:ElemXor X --> #1:ElemXor * #4:ElemXor Y --> #2:ElemXor Unifier 10 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #3:ElemXor B:ElemXor --> #2:ElemXor * #3:ElemXor * #4:ElemXor X --> #1:ElemXor * #4:ElemXor Y --> #2:ElemXor Unifier 11 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #2:ElemXor * #3:ElemXor * #4:ElemXor B:ElemXor --> #1:ElemXor * #3:ElemXor X --> #2:ElemXor Y --> #1:ElemXor * #4:ElemXor Unifier 12 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #3:ElemXor B:ElemXor --> #2:ElemXor * #3:ElemXor X --> #1:ElemXor Y --> #2:ElemXor Unifier 13 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #3:ElemXor B:ElemXor --> #2:ElemXor * #3:ElemXor * #4:ElemXor X --> #2:ElemXor Y --> #1:ElemXor * #4:ElemXor Unifier 14 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #3:ElemXor B:ElemXor --> #2:ElemXor * #3:ElemXor X --> #2:ElemXor Y --> #1:ElemXor Unifier 15 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #2:ElemXor * #3:ElemXor B:ElemXor --> #3:ElemXor X --> #1:ElemXor Y --> #2:ElemXor Unifier 16 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #3:ElemXor B:ElemXor --> #1:ElemXor * #2:ElemXor * #3:ElemXor X --> #1:ElemXor Y --> #2:ElemXor Unifier 17 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> mt B:ElemXor --> #1:ElemXor * #2:ElemXor X --> #1:ElemXor Y --> #2:ElemXor Unifier 18 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #2:ElemXor B:ElemXor --> mt X --> #1:ElemXor Y --> #2:ElemXor Unifier 19 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #2:ElemXor * #4:ElemXor B:ElemXor --> #3:ElemXor * #5:ElemXor X --> #1:[ElemXor] * #2:ElemXor * #3:ElemXor Y --> #1:[ElemXor] * #4:ElemXor * #5:ElemXor Unifier 20 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #2:ElemXor * #4:ElemXor B:ElemXor --> #1:ElemXor X --> #3:[ElemXor] * #1:ElemXor * #4:ElemXor Y --> #3:[ElemXor] * #2:ElemXor Unifier 21 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor * #4:ElemXor X --> #3:[ElemXor] * #1:ElemXor * #4:ElemXor Y --> #3:[ElemXor] * #2:ElemXor Unifier 22 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #2:ElemXor * #4:ElemXor B:ElemXor --> #1:ElemXor X --> #3:[ElemXor] * #2:ElemXor Y --> #3:[ElemXor] * #1:ElemXor * #4:ElemXor Unifier 23 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> #3:[ElemXor] * #1:ElemXor Y --> #3:[ElemXor] * #2:ElemXor Unifier 24 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor * #4:ElemXor X --> #3:[ElemXor] * #2:ElemXor Y --> #3:[ElemXor] * #1:ElemXor * #4:ElemXor Unifier 25 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> #3:[ElemXor] * #2:ElemXor Y --> #3:[ElemXor] * #1:ElemXor Unifier 26 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> #3:[ElemXor] * #1:ElemXor * #2:ElemXor Y --> #3:[ElemXor] Unifier 27 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> #3:[ElemXor] Y --> #3:[ElemXor] * #1:ElemXor * #2:ElemXor Unifier 28 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> mt Y --> #1:ElemXor * #2:ElemXor Unifier 29 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> #1:ElemXor * #2:ElemXor Y --> mt Unifier 30 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> %1:ElemXor X --> %2:[ElemXor] Y --> %2:[ElemXor] Unifier 31 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor * %5:ElemXor B:ElemXor --> %1:ElemXor * %4:ElemXor * %6:ElemXor X --> %2:[ElemXor] * %3:ElemXor * %4:ElemXor Y --> %2:[ElemXor] * %5:ElemXor * %6:ElemXor Unifier 32 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor * %3:ElemXor * %5:ElemXor B:ElemXor --> %1:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %1:ElemXor * %5:ElemXor Y --> %4:[ElemXor] * %2:ElemXor Unifier 33 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor * %5:ElemXor X --> %4:[ElemXor] * %1:ElemXor * %5:ElemXor Y --> %4:[ElemXor] * %2:ElemXor Unifier 34 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor * %3:ElemXor * %5:ElemXor B:ElemXor --> %1:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %2:ElemXor Y --> %4:[ElemXor] * %1:ElemXor * %5:ElemXor Unifier 35 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %1:ElemXor Y --> %4:[ElemXor] * %2:ElemXor Unifier 36 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor * %5:ElemXor X --> %4:[ElemXor] * %2:ElemXor Y --> %4:[ElemXor] * %1:ElemXor * %5:ElemXor Unifier 37 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %2:ElemXor Y --> %4:[ElemXor] * %1:ElemXor Unifier 38 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %1:ElemXor * %2:ElemXor Y --> %4:[ElemXor] Unifier 39 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %4:[ElemXor] Y --> %4:[ElemXor] * %1:ElemXor * %2:ElemXor Unifier 40 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> mt Y --> %1:ElemXor * %2:ElemXor Unifier 41 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %1:ElemXor * %2:ElemXor Y --> mt Unifier 42 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor * %3:ElemXor B:ElemXor --> %3:ElemXor X --> %4:[ElemXor] * %1:ElemXor Y --> %4:[ElemXor] * %2:ElemXor Unifier 43 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor B:ElemXor --> %2:ElemXor X --> %3:[ElemXor] * %1:ElemXor Y --> %3:[ElemXor] Unifier 44 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor B:ElemXor --> %2:ElemXor X --> %3:[ElemXor] Y --> %3:[ElemXor] * %1:ElemXor Unifier 45 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor B:ElemXor --> %2:ElemXor X --> mt Y --> %1:ElemXor Unifier 46 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor B:ElemXor --> %2:ElemXor X --> %1:ElemXor Y --> mt Unifier 47 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %3:ElemXor B:ElemXor --> %1:ElemXor * %2:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %1:ElemXor Y --> %4:[ElemXor] * %2:ElemXor Unifier 48 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor B:ElemXor --> %1:ElemXor * %2:ElemXor X --> %3:[ElemXor] * %1:ElemXor Y --> %3:[ElemXor] Unifier 49 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor B:ElemXor --> %1:ElemXor * %2:ElemXor X --> %3:[ElemXor] Y --> %3:[ElemXor] * %1:ElemXor Unifier 50 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor B:ElemXor --> %1:ElemXor * %2:ElemXor X --> mt Y --> %1:ElemXor Unifier 51 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor B:ElemXor --> %1:ElemXor * %2:ElemXor X --> %1:ElemXor Y --> mt Unifier 52 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> mt B:ElemXor --> %1:ElemXor * %2:ElemXor X --> %3:[ElemXor] * %1:ElemXor Y --> %3:[ElemXor] * %2:ElemXor Unifier 53 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> mt B:ElemXor --> %1:ElemXor X --> %2:[ElemXor] * %1:ElemXor Y --> %2:[ElemXor] Unifier 54 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> mt B:ElemXor --> %1:ElemXor X --> %2:[ElemXor] Y --> %2:[ElemXor] * %1:ElemXor Unifier 55 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor B:ElemXor --> mt X --> %3:[ElemXor] * %1:ElemXor Y --> %3:[ElemXor] * %2:ElemXor Unifier 56 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> mt X --> %2:[ElemXor] * %1:ElemXor Y --> %2:[ElemXor] Unifier 57 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> mt X --> %2:[ElemXor] Y --> %2:[ElemXor] * %1:ElemXor No more unifiers. rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 ========================================== filtered variant unify in NARROW : A:ElemXor * B:ElemXor =? X * Y . rewrites: 1995 mb applications: 0 equational rewrites: 215 rule rewrites: 0 variant narrowing steps: 1780 narrowing steps: 0 Unifier 1 A:ElemXor --> #2:ElemXor * #4:ElemXor B:ElemXor --> #3:ElemXor * #5:ElemXor X --> #1:[ElemXor] * #2:ElemXor * #3:ElemXor Y --> #1:[ElemXor] * #4:ElemXor * #5:ElemXor No more unifiers. ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('_*_['A:ElemXor, 'B:ElemXor]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . rewrites: 175 mb applications: 0 equational rewrites: 116 rule rewrites: 59 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 58, got: (gotOneStepNarrowing(me, interpreter(0), 13, 'f['_*_['@1:ElemXor, '@3:ElemXor], '_*_['@2:ElemXor, '@4:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor] ; 'B:ElemXor <- '_*_['@3:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@2:ElemXor, '@4:ElemXor], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['_*_['@2:ElemXor, '@3:ElemXor], '@1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '_*_['@2:ElemXor, '@3:ElemXor] ; 'Y:`[ElemXor`] <- '@1:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@1:ElemXor, '_*_['@2:ElemXor, '@3:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '@1:ElemXor ; 'Y:`[ElemXor`] <- '_*_['@2:ElemXor, '@3:ElemXor], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['_*_['@2:ElemXor, '@3:ElemXor], '@1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '@2:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- '_*_['@2:ElemXor, '@3:ElemXor] ; 'Y:`[ElemXor`] <- '@1:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@1:ElemXor, '@2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '@1:ElemXor ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '@1:ElemXor ; 'Y:`[ElemXor`] <- '@2:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@1:ElemXor, '_*_['@2:ElemXor, '@3:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '@2:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- '@1:ElemXor ; 'Y:`[ElemXor`] <- '_*_['@2:ElemXor, '@3:ElemXor], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['@2:ElemXor, '@1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '@1:ElemXor ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '@2:ElemXor ; 'Y:`[ElemXor`] <- '@1:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 81, 'f['mt.ElemXor, '_*_['%1:ElemXor, '%2:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- 'mt.ElemXor ; 'Y:`[ElemXor`] <- '_*_['%1:ElemXor, '%2:ElemXor], '%) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['_*_['%1:ElemXor, '%2:ElemXor], 'mt.ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%1:ElemXor, '%2:ElemXor] ; 'Y:`[ElemXor`] <- 'mt.ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%1:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '_*_[ '%1:`[ElemXor`], '%3:ElemXor, '%5:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%4:ElemXor, '%5:ElemXor], 'X:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:ElemXor, '%5:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '_*_['%3:`[ElemXor`], '%1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%4:ElemXor] ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%1:ElemXor], '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%4:ElemXor] ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '_*_['%3:`[ElemXor`], '%1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%2:ElemXor ; 'B:ElemXor <- '_*_['%1:ElemXor, '%4:ElemXor], 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%1:ElemXor], '_*_['%3:`[ElemXor`], '%2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%1:ElemXor], '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%2:ElemXor ; 'B:ElemXor <- '_*_['%1:ElemXor, '%4:ElemXor], 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%2:ElemXor], '_*_['%3:`[ElemXor`], '%1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%1:ElemXor, '%2:ElemXor], '%3:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor, '%2:ElemXor] ; 'Y:`[ElemXor`] <- '%3:`[ElemXor`], '%) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['%3:`[ElemXor`], '_*_['%3:`[ElemXor`], '%1:ElemXor, '%2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '%3:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor, '%2:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '%2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- 'mt.ElemXor ; 'B:ElemXor <- '_*_['%1:ElemXor, '%2:ElemXor], 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '%2:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '%2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%2:ElemXor] ; 'B:ElemXor <- 'mt.ElemXor, 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '%2:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%2:ElemXor, '%4:ElemXor], '_*_['%3:ElemXor, '%5:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%1:ElemXor, '%4:ElemXor, '%5:ElemXor], 'X:`[ElemXor`] <- '_*_['%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:ElemXor, '%5:ElemXor], '%) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['_*_['%2:ElemXor, '%4:ElemXor], '%1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor, '%4:ElemXor] ; 'B:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor], 'X:`[ElemXor`] <- '_*_['%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '%1:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '_*_['%2:ElemXor, '%4:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor, '%4:ElemXor] ; 'B:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor], 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '_*_['%2:ElemXor, '%4:ElemXor], '%) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['_*_['%2:ElemXor, '%4:ElemXor], '%1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor, '%4:ElemXor], 'X:`[ElemXor`] <- '_*_['%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '%1:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '%2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor], 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '%2:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '_*_['%2:ElemXor, '%4:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor, '%4:ElemXor], 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '_*_['%2:ElemXor, '%4:ElemXor], '%) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['%2:ElemXor, '%1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor], 'X:`[ElemXor`] <- '%2:ElemXor ; 'Y:`[ElemXor`] <- '%1:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '%2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '%3:ElemXor, 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '%2:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '%2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '%3:ElemXor ; 'B:ElemXor <- '_*_['%1:ElemXor, '%2:ElemXor, '%3:ElemXor], 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '%2:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 49, 'f['@1:`[ElemXor`], '@1:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@2:ElemXor ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '@1:`[ElemXor`] ; 'Y:`[ElemXor`] <- '@1:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['mt.ElemXor, '_*_['@1:ElemXor, '@2:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- 'mt.ElemXor ; 'Y:`[ElemXor`] <- '_*_['@1:ElemXor, '@2:ElemXor], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['mt.ElemXor, '@1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor] ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- 'mt.ElemXor ; 'Y:`[ElemXor`] <- '@1:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['mt.ElemXor, '@1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '@2:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor], 'X:`[ElemXor`] <- 'mt.ElemXor ; 'Y:`[ElemXor`] <- '@1:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@1:ElemXor, '@2:ElemXor], 'mt.ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- '_*_['@1:ElemXor, '@2:ElemXor] ; 'Y:`[ElemXor`] <- 'mt.ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@1:ElemXor, 'mt.ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor] ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '@1:ElemXor ; 'Y:`[ElemXor`] <- 'mt.ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@1:ElemXor, 'mt.ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '@2:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor], 'X:`[ElemXor`] <- '@1:ElemXor ; 'Y:`[ElemXor`] <- 'mt.ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- 'mt.ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor] ; 'B:ElemXor <- 'mt.ElemXor, 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@1:`[ElemXor`], '@3:ElemXor, '@5:ElemXor], '_*_['@1:`[ElemXor`], '@4:ElemXor, '@6:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@2:ElemXor, '@3:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@5:ElemXor, '@6:ElemXor], 'X:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@3:ElemXor, '@5:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@4:ElemXor, '@6:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor], '_*_['@3:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor, '@5:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor, '@5:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor], '_*_['@3:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor, '@5:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor, '@5:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@2:ElemXor], '_*_['@3:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '@4:ElemXor, 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@4:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@2:`[ElemXor`], '@1:ElemXor], '@2:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- 'mt.ElemXor ; 'B:ElemXor <- '@1:ElemXor, 'X:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '@2:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['_*_['@2:`[ElemXor`], '@1:ElemXor], '@2:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@1:ElemXor ; 'B:ElemXor <- 'mt.ElemXor, 'X:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '@2:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor, '@2:ElemXor], '@3:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor, '@2:ElemXor] ; 'Y:`[ElemXor`] <- '@3:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['_*_['@2:`[ElemXor`], '@1:ElemXor], '@2:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '@3:ElemXor, 'X:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '@2:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['_*_['@2:`[ElemXor`], '@1:ElemXor], '@2:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@3:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '@2:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['@2:`[ElemXor`], '_*_['@2:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- 'mt.ElemXor ; 'B:ElemXor <- '@1:ElemXor, 'X:`[ElemXor`] <- '@2:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@2:`[ElemXor`], '_*_[ '@2:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@1:ElemXor ; 'B:ElemXor <- 'mt.ElemXor, 'X:`[ElemXor`] <- '@2:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@3:`[ElemXor`], '_*_[ '@3:`[ElemXor`], '@1:ElemXor, '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '@3:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor, '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@2:`[ElemXor`], '_*_[ '@2:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '@3:ElemXor, 'X:`[ElemXor`] <- '@2:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@2:`[ElemXor`], '_*_[ '@2:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@3:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- '@2:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor], '@)), start: ('_*_[ 'A:ElemXor, 'B:ElemXor]), irred: empty > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in NARROW-TEST2 : <> < me : User | start: ('_*_['A:ElemXor, 'B:ElemXor]), irred: empty > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 mb applications: 0 equational rewrites: 2 rule rewrites: 3 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 2, got: gotOneStepNarrowing(me, interpreter(0), 1832, 'f['_*_['%1:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '_*_['%1:`[ElemXor`], '%3:ElemXor, '%5:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%4:ElemXor, '%5:ElemXor], 'X:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:ElemXor, '%5:ElemXor], '%), start: ('_*_['A:ElemXor, 'B:ElemXor]), irred: empty > noSuchResult(me, interpreter(0), 0, true) Bye. Maude-Maude3.5.1/tests/Meta/metaProcNarrow0000775000175000017510000000036415036121435020004 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcNarrow.maude -no-banner -no-advise \ > metaProcNarrow.out 2>&1 diff $srcdir/metaProcNarrow.expected metaProcNarrow.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcMatch.maude0000664000175000017510000000757015036121435020665 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test matching in the meta-interpreter without and with extension. *** load metaInterpreter fmod MATCH is sort Foo . op f : Foo Foo -> Foo [assoc] . ops a b : -> Foo . endfm mod MATCH-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('MATCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS > getMatch(Y, X, 'MATCH, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'a.Foo], nil, N) . endm erew in MATCH-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, newProcess) . erew in MATCH-TEST : <> < me : User | soln: 1 > createInterpreter(interpreterManager, me, newProcess) . erew in MATCH-TEST : <> < me : User | soln: 2 > createInterpreter(interpreterManager, me, newProcess) . mod MATCH-CACHE-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . var S : Substitution . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('MATCH, true)) . rl < X : User | AS > insertedModule(X, Y) => < X : User | AS, soln: 1 > getMatch(Y, X, 'MATCH, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'a.Foo], nil, 0) . rl < X : User | soln: N, AS > gotMatch(X, Y, M, S) => < X : User | AS, soln: (N + 1), got: gotMatch(X, Y, M, S) > getMatch(Y, X, 'MATCH, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'a.Foo], nil, N) . endm erew in MATCH-CACHE-TEST : <> < me : User | none > createInterpreter(interpreterManager, me, newProcess) . fmod XMATCH is sorts Foo Bar . op f : Foo Foo -> Foo [assoc] . op g : Foo -> Bar . ops a b : -> Foo . endfm mod XMATCH-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XMATCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS > getXmatch(Y, X, 'XMATCH, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo, 'a.Foo]], nil, 0, unbounded, N) . endm erew in XMATCH-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, newProcess) . erew in XMATCH-TEST : <> < me : User | soln: 1 > createInterpreter(interpreterManager, me, newProcess) . erew in XMATCH-TEST : <> < me : User | soln: 2 > createInterpreter(interpreterManager, me, newProcess) . erew in XMATCH-TEST : <> < me : User | soln: 3 > createInterpreter(interpreterManager, me, newProcess) . erew in XMATCH-TEST : <> < me : User | soln: 4 > createInterpreter(interpreterManager, me, newProcess) . mod XMATCH-CACHE-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . var S : Substitution . var C : Context . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XMATCH, true)) . rl < X : User | AS > insertedModule(X, Y) => < X : User | AS, soln: 1 > getXmatch(Y, X, 'XMATCH, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo, 'a.Foo]], nil, 0, unbounded, 0) . rl < X : User | soln: N, AS > gotXmatch(X, Y, M, S, C) => < X : User | AS, soln: (N + 1), got: gotXmatch(X, Y, M, S, C) > getXmatch(Y, X, 'XMATCH, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo, 'a.Foo]], nil, 0, unbounded, N) . endm erew in XMATCH-CACHE-TEST : <> < me : User | none > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcMatch.expected0000664000175000017510000000662615036121435021374 0ustar nileshnilesh========================================== erewrite in MATCH-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotMatch(me, interpreter(0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'a.Foo]) ========================================== erewrite in MATCH-TEST : <> < me : User | soln: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotMatch(me, interpreter(0), 0, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'a.Foo) ========================================== erewrite in MATCH-TEST : <> < me : User | soln: 2 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in MATCH-CACHE-TEST : <> < me : User | none > createInterpreter( interpreterManager, me, newProcess) . rewrites: 7 result Configuration: <> < me : User | soln: 3, got: gotMatch(me, interpreter( 0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'a.Foo]), got: gotMatch(me, interpreter(0), 0, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'a.Foo) > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, 'g['f[[], 'a.Foo]]) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 1 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'a.Foo], 'g[[]]) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 2 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'a.Foo, 'g[[]]) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 3 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, 'g['f['a.Foo, []]]) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 4 > createInterpreter( interpreterManager, me, newProcess) . rewrites: 3 result Configuration: <> < me : User | none > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in XMATCH-CACHE-TEST : <> < me : User | none > createInterpreter( interpreterManager, me, newProcess) . rewrites: 11 result Configuration: <> < me : User | soln: 5, got: gotXmatch(me, interpreter( 0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, 'g['f[[], 'a.Foo]]), got: gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'a.Foo], 'g[[]]), got: gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, 'g['f['a.Foo, []]]), got: gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'a.Foo, 'g[[]]) > noSuchResult(me, interpreter(0), 0) Bye. Maude-Maude3.5.1/tests/Meta/metaProcMatch0000775000175000017510000000036015036121435017564 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcMatch.maude -no-banner -no-advise \ > metaProcMatch.out 2>&1 diff $srcdir/metaProcMatch.expected metaProcMatch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaProcApply.maude0000664000175000017510000000522615036121435020712 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test applyRule() in the meta-interpreter without and with extension. *** load metaInterpreter mod APPLY is sorts Foo . ops a b : -> Foo . op f : Foo Foo -> Foo [comm] . rl f(X:Foo, Y:Foo) => X:Foo [label k] . endm mod APPLY-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . op subst:_ : Substitution -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars IS S : Substitution . var T : Term . var TY : Type . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('APPLY, true)) . rl < X : User | AS, subst: IS > insertedModule(X, Y) => < X : User | AS, soln: 1, subst: IS > applyRule(Y, X, 'APPLY, 'f['a.Foo, 'b.Foo], 'k, IS, 0) . rl < X : User | AS, soln: N, subst: IS > appliedRule(X, Y, M, T, TY, S) => < X : User | AS, soln: (N + 1), subst: IS, got: appliedRule(X, Y, M, T, TY, S) > applyRule(Y, X, 'APPLY, 'f['a.Foo, 'b.Foo], 'k, IS, N) . endm set show breakdown on . erew in APPLY-TEST : <> < me : User | subst: none > createInterpreter(interpreterManager, me, newProcess) . erew in APPLY-TEST : <> < me : User | subst: ('Y:Foo <- 'b.Foo) > createInterpreter(interpreterManager, me, newProcess) . mod APPLY2 is sorts Foo . ops a b c : -> Foo . op f : Foo Foo -> Foo [assoc comm] . op g : Foo -> Foo . rl f(X:Foo, Y:Foo) => X:Foo [label k] . endm mod APPLY-TEST2 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . op subst:_ : Substitution -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars IS S : Substitution . var T : Term . var TY : Type . var C : Context . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('APPLY2, true)) . rl < X : User | AS, subst: IS > insertedModule(X, Y) => < X : User | AS, soln: 1, subst: IS > applyRule(Y, X, 'APPLY2, 'g['g['f['a.Foo, 'b.Foo, 'c.Foo]]], 'k, IS, 0, unbounded, 0) . rl < X : User | AS, soln: N, subst: IS > appliedRule(X, Y, M, T, TY, S, C) => < X : User | AS, soln: (N + 1), subst: IS, got: appliedRule(X, Y, M, T, TY, S, C) > applyRule(Y, X, 'APPLY2, 'g['g['f['a.Foo, 'b.Foo, 'c.Foo]]], 'k, IS, 0, unbounded, N) . endm erew in APPLY-TEST2 : <> < me : User | subst: none > createInterpreter(interpreterManager, me, newProcess) . erew in APPLY-TEST2 : <> < me : User | subst: ('X:Foo <- 'a.Foo) > createInterpreter(interpreterManager, me, newProcess) . Maude-Maude3.5.1/tests/Meta/metaProcApply.expected0000664000175000017510000000773615036121435021430 0ustar nileshnilesh========================================== erewrite in APPLY-TEST : <> < me : User | subst: none > createInterpreter( interpreterManager, me, newProcess) . rewrites: 7 mb applications: 0 equational rewrites: 3 rule rewrites: 4 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 3, got: appliedRule(me, interpreter(0), 1, 'a.Foo, 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo), got: appliedRule(me, interpreter(0), 1, 'b.Foo, 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo), subst: none > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in APPLY-TEST : <> < me : User | subst: ( 'Y:Foo <- 'b.Foo) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 5 mb applications: 0 equational rewrites: 2 rule rewrites: 3 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 2, got: appliedRule(me, interpreter(0), 1, 'a.Foo, 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo), subst: ( 'Y:Foo <- 'b.Foo) > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in APPLY-TEST2 : <> < me : User | subst: none > createInterpreter( interpreterManager, me, newProcess) . rewrites: 27 mb applications: 0 equational rewrites: 13 rule rewrites: 14 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 13, got: appliedRule(me, interpreter(0), 1, 'g['g['a.Foo]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'c.Foo], 'g['g[[]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['b.Foo]], 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'f['a.Foo, 'c.Foo], 'g['g[[]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['c.Foo]], 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'f['a.Foo, 'b.Foo], 'g['g[[]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'b.Foo]]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'c.Foo, 'g['g['f['b.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'b.Foo]]], 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'c.Foo, 'g['g['f['a.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'b.Foo]]], 'Foo, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'c.Foo, 'g['g[[]]]), got: appliedRule(me, interpreter(0), 1, 'g['g[ 'f['a.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, 'g['g['f['c.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'b.Foo, 'g['g['f['a.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'f['a.Foo, 'c.Foo] ; 'Y:Foo <- 'b.Foo, 'g['g[[]]]), got: appliedRule(me, interpreter(0), 1, 'g['g[ 'f['b.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, 'g['g['f['c.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['b.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'a.Foo, 'g['g['f['b.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['b.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'f['b.Foo, 'c.Foo] ; 'Y:Foo <- 'a.Foo, 'g['g[[]]]), subst: none > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in APPLY-TEST2 : <> < me : User | subst: ( 'X:Foo <- 'a.Foo) > createInterpreter(interpreterManager, me, newProcess) . rewrites: 9 mb applications: 0 equational rewrites: 4 rule rewrites: 5 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 4, got: appliedRule(me, interpreter(0), 1, 'g['g['a.Foo]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'c.Foo], 'g['g[[]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'b.Foo]]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'c.Foo, 'g['g['f['b.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, 'g['g['f['c.Foo, []]]]), subst: ( 'X:Foo <- 'a.Foo) > noSuchResult(me, interpreter(0), 0) Bye. Maude-Maude3.5.1/tests/Meta/metaProcApply0000775000175000017510000000036015036121435017615 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaProcApply.maude -no-banner -no-advise \ > metaProcApply.out 2>&1 diff $srcdir/metaProcApply.expected metaProcApply.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaPrintAttr.maude0000664000175000017510000000240015036121435020717 0ustar nileshnileshset show timing off . fmod COND is sort Foo . ops a b c d e : -> Foo . ops f g : Foo Foo -> Foo . op h : Foo -> Foo . var X Y Z : Foo . ceq f(X, Y) = g(X, Z) if Z := h(Y) [print "X = " X ", Z = " Z] . endfm red f(a, b) . red in META-LEVEL : upModule('COND, false) . set print attribute on . red in META-LEVEL : metaReduce( fmod 'COND is including 'BOOL . sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'd : nil -> 'Foo [none] . op 'e : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [none] . op 'g : 'Foo 'Foo -> 'Foo [none] . op 'h : 'Foo -> 'Foo [none] . none ceq 'f['X:Foo,'Y:Foo] = 'g['X:Foo,'Z:Foo] if 'Z:Foo := 'h['Y:Foo] [print('"X = " 'X:Foo '", Z = " 'Z:Foo)] . endfm, 'f['a.Foo, 'b.Foo]) . red in META-LEVEL : metaReduce( fmod 'COND is including 'BOOL . sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'd : nil -> 'Foo [none] . op 'e : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [none] . op 'g : 'Foo 'Foo -> 'Foo [none] . op 'h : 'Foo -> 'Foo [none] . none ceq 'f['X:Foo,'Y:Foo] = 'g['X:Foo,'Z:Foo] if 'Z:Foo := 'h['Y:Foo] [print(nil)] . endfm, 'f['a.Foo, 'b.Foo]) . Maude-Maude3.5.1/tests/Meta/metaPrintAttr.expected0000664000175000017510000000356615036121435021443 0ustar nileshnilesh========================================== reduce in COND : f(a, b) . rewrites: 1 result Foo: g(a, h(b)) ========================================== reduce in META-LEVEL : upModule('COND, false) . rewrites: 1 result FModule: fmod 'COND is including 'BOOL . sorts 'Foo . none op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'd : nil -> 'Foo [none] . op 'e : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [none] . op 'g : 'Foo 'Foo -> 'Foo [none] . op 'h : 'Foo -> 'Foo [none] . none ceq 'f['X:Foo, 'Y:Foo] = 'g['X:Foo, 'Z:Foo] if 'Z:Foo := 'h['Y:Foo] [print( '"X = " 'X:Foo '", Z = " 'Z:Foo)] . endfm ========================================== reduce in META-LEVEL : metaReduce(fmod 'COND is including 'BOOL . sorts 'Foo . none ((((((op 'g : 'Foo 'Foo -> 'Foo [none] . op 'h : 'Foo -> 'Foo [none] .) op 'f : 'Foo 'Foo -> 'Foo [none] .) op 'e : nil -> 'Foo [none] .) op 'd : nil -> 'Foo [none] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none ceq 'f['X:Foo, 'Y:Foo] = 'g['X:Foo, 'Z:Foo] if 'Z:Foo := 'h['Y:Foo] [print( '"X = " 'X:Foo '", Z = " 'Z:Foo)] . endfm, 'f['a.Foo, 'b.Foo]) . X = a, Z = h(b) rewrites: 2 result ResultPair: {'g['a.Foo, 'h['b.Foo]], 'Foo} ========================================== reduce in META-LEVEL : metaReduce(fmod 'COND is including 'BOOL . sorts 'Foo . none ((((((op 'g : 'Foo 'Foo -> 'Foo [none] . op 'h : 'Foo -> 'Foo [none] .) op 'f : 'Foo 'Foo -> 'Foo [none] .) op 'e : nil -> 'Foo [none] .) op 'd : nil -> 'Foo [none] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none ceq 'f['X:Foo, 'Y:Foo] = 'g['X:Foo, 'Z:Foo] if 'Z:Foo := 'h['Y:Foo] [print( nil)] . endfm, 'f['a.Foo, 'b.Foo]) . rewrites: 2 result ResultPair: {'g['a.Foo, 'h['b.Foo]], 'Foo} Bye. Maude-Maude3.5.1/tests/Meta/metaPrintAttr0000775000175000017510000000036015036121435017633 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaPrintAttr.maude -no-banner -no-advise \ > metaPrintAttr.out 2>&1 diff $srcdir/metaPrintAttr.expected metaPrintAttr.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaPrettyPrint.maude0000664000175000017510000000560115036121435021302 0ustar nileshnileshset show timing off . set show advisories off . select META-LEVEL . red metaPrettyPrint( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, '_+_['1.0.FiniteFloat,'1.0.FiniteFloat]) . red metaPrettyPrint( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float) . mod TEST is inc LOOP-MODE . inc META-LEVEL . op a : -> Module . eq a = (fmod 'FOO is nil sorts 'Foo . none op 'r : nil -> 'Foo [format('r 'o)] . op 'b : nil -> 'Foo [format('b 'o)] . op 'g : nil -> 'Foo [format('g 'o)] . op '__ : 'Foo 'Foo -> 'Foo [assoc] . none none endfm) . op null : -> State . op init : -> System . var QIL : QidList . rl init => [nil, null, nil] . crl [QIL, null, nil] => [nil, null, metaPrettyPrint(a, '__['r.Foo, 'g.Foo, 'b.Foo])] if QIL =/= nil . endm loop init . (a) red in META-LEVEL : metaPrettyPrint( fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, 's_['0.Zero]) . red in META-LEVEL : metaPrettyPrint( fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, 's_['s_['0.Zero]], mixfix flat format number rat) . red in META-LEVEL : metaPrettyPrint( fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, 's_['s_['0.Zero]], none) . red in META-LEVEL : metaPrettyPrint( fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '-_['s_['0.Zero]]) . red in META-LEVEL : metaPrettyPrint( fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '_/_['-_['s_['0.Zero]], 's_['0.Zero]]) . red in META-LEVEL : metaPrettyPrint( fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '-_['s_^22['0.Zero]]) . red in META-LEVEL : metaPrettyPrint( fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '_/_['-_['s_^6789['0.Zero]], 's_^12345['0.Zero]]) . red in META-LEVEL : metaPrettyPrint( fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '_/_['-_['s_^6789['0.Zero]], 's_^12345['0.Zero]], mixfix) . red in META-LEVEL : metaPrettyPrint( fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '_/_['-_['s_^6789['0.Zero]], 's_^12345['0.Zero]], mixfix number) . red in META-LEVEL : metaPrettyPrint( fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '_/_['-_['s_^6789['0.Zero]], 's_^12345['0.Zero]], mixfix rat) . red metaPrettyPrint( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float ; 'Y:Float, 'X:Float, mixfix) . red metaPrettyPrint( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float ; 'Y:Float, '_/_['X:Float,'Y:Float], mixfix) . Maude-Maude3.5.1/tests/Meta/metaPrettyPrint.expected0000664000175000017510000000662015036121435022012 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, '_+_['1.0.FiniteFloat, '1.0.FiniteFloat]) . rewrites: 2 result NeQidList: '1.0 '+ '1.0 ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float) . rewrites: 2 result Variable: 'X:Float r g b ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, 's_['0.Zero]) . rewrites: 2 result Sort: '1 ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, 's_['s_['0.Zero]], mixfix flat format number rat) . rewrites: 2 result NeTypeList: 's '1 ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, 's_['s_['0.Zero]], none) . rewrites: 2 result NeTypeList: 's_ '`( 's_ '`( '0 '`) '`) ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '-_['s_['0.Zero]]) . rewrites: 2 result Sort: '-1 ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '_/_['-_['s_['0.Zero]], 's_['0.Zero]]) . rewrites: 2 result Sort: '-1/1 ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '-_['s_^22['0.Zero]]) . rewrites: 2 result Sort: '-22 ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '_/_['-_['s_^6789['0.Zero]], 's_^12345['0.Zero]]) . rewrites: 2 result Sort: '-6789/12345 ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '_/_['-_['s_^6789['0.Zero]], 's_^12345['0.Zero]], mixfix) . rewrites: 2 result NeTypeList: '- 's_^6789 '`( '0 '`) '/ 's_^12345 '`( '0 '`) ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '_/_['-_['s_^6789['0.Zero]], 's_^12345['0.Zero]], mixfix number) . rewrites: 2 result NeTypeList: '-6789 '/ '12345 ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'RAT . sorts none . none none none none endfm, '_/_['-_['s_^6789['0.Zero]], 's_^12345['0.Zero]], mixfix rat) . rewrites: 2 result Sort: '-6789/12345 ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float ; 'Y:Float, 'X:Float, mixfix) . rewrites: 2 result Sort: 'X ========================================== reduce in META-LEVEL : metaPrettyPrint(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float ; 'Y:Float, '_/_['X:Float, 'Y:Float], mixfix) . rewrites: 2 result NeTypeList: 'X '/ 'Y Bye. Maude-Maude3.5.1/tests/Meta/metaPrettyPrint0000775000175000017510000000037015036121435020211 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaPrettyPrint.maude -no-banner -no-advise \ > metaPrettyPrint.out 2>&1 diff $srcdir/metaPrettyPrint.expected metaPrettyPrint.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaPolymorph.maude0000664000175000017510000000646615036121435021001 0ustar nileshnileshset show timing off . set show advisories off . *** EqualitySymbol red in META-LEVEL : metaReduce( (fmod 'FOO is including 'STRING . sorts 'Value . none op 'tt : nil -> 'Value [none] . op 'ff : nil -> 'Value [none] . op 'eq : 'Universal 'Universal -> 'Value [poly (1 2) special(id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'tt.Value) term-hook('notEqualTerm, 'ff.Value))] . none none endfm) , 'eq['"a".String, '"a".String]) . red in META-LEVEL : metaReduce( (fmod 'FOO is including 'STRING . sorts 'Value . none op 'tt : nil -> 'Value [none] . op 'ff : nil -> 'Value [none] . op 'eq : 'Universal 'Universal -> 'Value [poly (1 2) special(id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'tt.Value) term-hook('notEqualTerm, 'ff.Value))] . none none endfm) , 'eq['"a".String, '"b".String]) . red in META-LEVEL : metaReduce( (fmod 'FOO is including 'STRING . sorts 'Value . none op 'tt : nil -> 'Value [none] . op 'ff : nil -> 'Value [none] . op '? : 'Value 'Universal 'Universal -> 'Universal [poly (2 3 0) special(id-hook('BranchSymbol, nil) term-hook('1, 'tt.Value) term-hook('2, 'ff.Value))] . none none endfm) , '?['tt.Value, '"a".String, '"b".String]) . red in META-LEVEL : metaReduce( (fmod 'FOO is including 'STRING . sorts 'Value . none op 'tt : nil -> 'Value [none] . op 'ff : nil -> 'Value [none] . op '? : 'Value 'Universal 'Universal -> 'Universal [poly (2 3 0) special(id-hook('BranchSymbol, nil) term-hook('1, 'tt.Value) term-hook('2, 'ff.Value))] . none none endfm) , '?['ff.Value, '"a".String, '"b".String]) . red in META-LEVEL : metaReduce( (fmod 'FOO is including 'STRING . including 'META-LEVEL . sorts none . none op '^ : 'Universal -> 'Term [poly (1) special(id-hook('MetaLevelOpSymbol, 'metaUpTerm) op-hook('shareWith, 'metaReduce, 'Module 'Term, 'ResultPair))] . none none endfm) , '^['"a".String]) . red in META-LEVEL : metaReduce( (fmod 'FOO is including 'STRING . including 'META-LEVEL . sorts none . none op '! : 'Term 'Universal -> 'Universal [poly (2 0) special(id-hook('MetaLevelOpSymbol, 'metaDownTerm) op-hook('shareWith, 'metaReduce, 'Module 'Term, 'ResultPair))] . none none endfm) , '![''"a".String.Constant, '"b".String]) . red in META-LEVEL : metaReduce( (fmod 'POLY-ID3 is including 'BOOL . sorts 'Foo . none op '1 : nil -> 'Foo [none] . op 'f : 'Universal 'Foo -> 'Universal [poly (1 0) right-id('1.Foo)] . none none endfm) , 'f['true.Bool, '1.Foo]) . red in META-LEVEL : metaReduce( (fmod 'POLY-ID3 is including 'BOOL . sorts 'Foo . none op '1 : nil -> 'Foo [none] . op 'f : 'Universal 'Foo -> 'Universal [poly (1 0) right-id('1.Foo)] . op 'g : 'Univeral -> 'Universal [poly (1 0)] . none eq 'g['f['true.Bool, 'X:Foo]] = 'false.Bool [none] . endfm) , 'g['true.Bool]) . red in META-LEVEL : metaReduce( (fmod 'POLY-ID3 is including 'BOOL . sorts 'Foo . none op '1 : nil -> 'Universal [poly (0)] . none none endfm) , '1.Bool) . red in META-LEVEL : metaReduce( (fmod 'POLY-ID3 is including 'BOOL . sorts 'Foo . none op '1 : nil -> 'Universal [poly (0)] . none none endfm) , '1.Foo) . Maude-Maude3.5.1/tests/Meta/metaPolymorph.expected0000664000175000017510000001005315036121435021472 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'STRING . sorts 'Value . none (op 'eq : 'Universal 'Universal -> 'Value [poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'tt.Value) term-hook('notEqualTerm, 'ff.Value))] . op 'ff : nil -> 'Value [none] .) op 'tt : nil -> 'Value [none] . none none endfm, 'eq['"a".String, '"a".String]) . rewrites: 2 result ResultPair: {'tt.Value, 'Value} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'STRING . sorts 'Value . none (op 'eq : 'Universal 'Universal -> 'Value [poly(1 2) special( id-hook('EqualitySymbol, nil) term-hook('equalTerm, 'tt.Value) term-hook('notEqualTerm, 'ff.Value))] . op 'ff : nil -> 'Value [none] .) op 'tt : nil -> 'Value [none] . none none endfm, 'eq['"a".String, '"b".String]) . rewrites: 2 result ResultPair: {'ff.Value, 'Value} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'STRING . sorts 'Value . none (op '? : 'Value 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'tt.Value) term-hook('2, 'ff.Value))] . op 'ff : nil -> 'Value [none] .) op 'tt : nil -> 'Value [none] . none none endfm, '?['tt.Value, '"a".String, '"b".String]) . rewrites: 2 result ResultPair: {'"a".Char, 'Char} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'STRING . sorts 'Value . none (op '? : 'Value 'Universal 'Universal -> 'Universal [poly(2 3 0) special( id-hook('BranchSymbol, nil) term-hook('1, 'tt.Value) term-hook('2, 'ff.Value))] . op 'ff : nil -> 'Value [none] .) op 'tt : nil -> 'Value [none] . none none endfm, '?['ff.Value, '"a".String, '"b".String]) . rewrites: 2 result ResultPair: {'"b".Char, 'Char} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'STRING . including 'META-LEVEL . sorts none . none op '^ : 'Universal -> 'Term [poly(1) special( id-hook('MetaLevelOpSymbol, 'metaUpTerm) op-hook('shareWith, 'metaReduce, 'Module 'Term, 'ResultPair))] . none none endfm, '^['"a".String]) . rewrites: 2 result ResultPair: {''"a".Char.Constant, 'Constant} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'STRING . including 'META-LEVEL . sorts none . none op '! : 'Term 'Universal -> 'Universal [poly(2 0) special( id-hook('MetaLevelOpSymbol, 'metaDownTerm) op-hook('shareWith, 'metaReduce, 'Module 'Term, 'ResultPair))] . none none endfm, '![''"a".String.Constant, '"b".String]) . rewrites: 2 result ResultPair: {'"a".Char, 'Char} ========================================== reduce in META-LEVEL : metaReduce(fmod 'POLY-ID3 is including 'BOOL . sorts 'Foo . none op '1 : nil -> 'Foo [none] . op 'f : 'Universal 'Foo -> 'Universal [right-id('1.Foo) poly(1 0)] . none none endfm, 'f['true.Bool, '1.Foo]) . rewrites: 1 result ResultPair: {'true.Bool, 'Bool} ========================================== reduce in META-LEVEL : metaReduce(fmod 'POLY-ID3 is including 'BOOL . sorts 'Foo . none (op 'f : 'Universal 'Foo -> 'Universal [right-id('1.Foo) poly(1 0)] . op 'g : 'Univeral -> 'Universal [poly(1 0)] .) op '1 : nil -> 'Foo [none] . none eq 'g['f['true.Bool, 'X:Foo]] = 'false.Bool [none] . endfm, 'g['true.Bool]) . rewrites: 2 result ResultPair: {'false.Bool, 'Bool} ========================================== reduce in META-LEVEL : metaReduce(fmod 'POLY-ID3 is including 'BOOL . sorts 'Foo . none op '1 : nil -> 'Universal [poly(0)] . none none endfm, '1.Bool) . rewrites: 1 result ResultPair: {'1.`[Bool`], '`[Bool`]} ========================================== reduce in META-LEVEL : metaReduce(fmod 'POLY-ID3 is including 'BOOL . sorts 'Foo . none op '1 : nil -> 'Universal [poly(0)] . none none endfm, '1.Foo) . rewrites: 1 result ResultPair: {'1.`[Foo`], '`[Foo`]} Bye. Maude-Maude3.5.1/tests/Meta/metaPolymorph0000775000175000017510000000036015036121435017675 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaPolymorph.maude -no-banner -no-advise \ > metaPolymorph.out 2>&1 diff $srcdir/metaPolymorph.expected metaPolymorph.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaParse.maude0000664000175000017510000000317315036121435020052 0ustar nileshnileshset show timing off . set show advisories off . select META-LEVEL . red metaParse( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, '1.0 '+ '1.0, anyType) . red in META-LEVEL : metaParse( fmod 'FOO is including 'RAT . sorts 'Foo . none none none none endfm, '3 , anyType) . red in META-LEVEL : metaParse( fmod 'FOO is including 'RAT . sorts 'Foo . none none none none endfm, '-3 , anyType) . red in META-LEVEL : metaParse( fmod 'FOO is including 'RAT . sorts 'Foo . none none none none endfm, '-2/3 , anyType) . red in META-LEVEL : metaParse( fmod 'FOO is including 'RAT . sorts 'Foo . none none none none endfm, 's_^2 '`( '0 '`) , anyType) . red in META-LEVEL : metaParse( fmod 'FOO is including 'RAT . sorts 'Foo . none none none none endfm, '-256789/387654 , anyType) . red in META-LEVEL : metaParse( fmod 'FOO is including 'BOOL . sorts 'Foo . none op 's : 'Bool -> 'Bool [iter] . none none endfm, 's^1234 '`( 'true '`), anyType) . *** test new variable alias feature red metaParse( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float, 'X '+ '1.0, anyType) . red metaParse( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float ; 'Y:Float, 'X '+ '1.0, anyType) . red metaParse( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float ; 'Y:Float, 'X '+ 'Y, anyType) . *** should fail red metaParse( fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float, 'X '+ 'Y, anyType) . Maude-Maude3.5.1/tests/Meta/metaParse.expected0000664000175000017510000000544515036121435020564 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, '1.0 '+ '1.0, anyType) . rewrites: 2 result ResultPair: {'_+_['1.0.FiniteFloat, '1.0.FiniteFloat], 'Float} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is including 'RAT . sorts 'Foo . none none none none endfm, '3, anyType) . rewrites: 2 result ResultPair: {'s_^3['0.Zero], 'NzNat} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is including 'RAT . sorts 'Foo . none none none none endfm, '-3, anyType) . rewrites: 2 result ResultPair: {'-_['s_^3['0.Zero]], 'NzInt} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is including 'RAT . sorts 'Foo . none none none none endfm, '-2/3, anyType) . rewrites: 2 result ResultPair: {'_/_['-_['s_^2['0.Zero]], 's_^3['0.Zero]], 'NzRat} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is including 'RAT . sorts 'Foo . none none none none endfm, 's_^2 '`( '0 '`), anyType) . rewrites: 2 result ResultPair: {'s_^2['0.Zero], 'NzNat} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is including 'RAT . sorts 'Foo . none none none none endfm, '-256789/387654, anyType) . rewrites: 2 result ResultPair: {'_/_['-_['s_^256789['0.Zero]], 's_^387654['0.Zero]], 'NzRat} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is including 'BOOL . sorts 'Foo . none op 's : 'Bool -> 'Bool [iter] . none none endfm, 's^1234 '`( 'true '`), anyType) . rewrites: 2 result ResultPair: {'s^1234['true.Bool], 'Bool} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float, 'X '+ '1.0, anyType) . rewrites: 1 result ResultPair: {'_+_['X:Float, '1.0.FiniteFloat], 'Float} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float ; 'Y:Float, 'X '+ '1.0, anyType) . rewrites: 1 result ResultPair: {'_+_['X:Float, '1.0.FiniteFloat], 'Float} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float ; 'Y:Float, 'X '+ 'Y, anyType) . rewrites: 1 result ResultPair: {'_+_['X:Float, 'Y:Float], 'Float} ========================================== reduce in META-LEVEL : metaParse(fmod 'FOO is protecting 'FLOAT . sorts none . none none none none endfm, 'X:Float, 'X '+ 'Y, anyType) . rewrites: 1 result ResultPair?: noParse(2) Bye. Maude-Maude3.5.1/tests/Meta/metaParse0000775000175000017510000000034015036121435016754 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaParse.maude -no-banner -no-advise \ > metaParse.out 2>&1 diff $srcdir/metaParse.expected metaParse.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaNarrow.maude0000664000175000017510000003435615036121435020257 0ustar nileshnileshset show timing off . set show advisories off . *** *** Check handling of unification incompleteness. *** mod FOO is sort Foo . op f : Foo Foo -> Foo [assoc] . ops g h : Foo -> Foo . ops a b c d e : -> Foo . vars X Y Z W : Foo . rl g(f(X, X)) => h(X) [narrowing]. endm *** 4 unifiers + incompleteness unify f(X, X) =? f(Y, Z, Z) . *** metaNarrow() red in META-LEVEL : metaNarrow( ['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], 'W:Foo, '+, unbounded, 0) . red in META-LEVEL : metaNarrow( ['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], 'W:Foo, '+, unbounded, 1) . red in META-LEVEL : metaNarrow( ['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], 'W:Foo, '+, unbounded, 2) . red in META-LEVEL : metaNarrow( ['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], 'W:Foo, '+, unbounded, 3) . red in META-LEVEL : metaNarrow( ['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], 'W:Foo, '+, unbounded, 4) . *** metaNarrowingApply() red in META-LEVEL : metaNarrowingApply( ['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 0) . red in META-LEVEL : metaNarrowingApply( ['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 1) . red in META-LEVEL : metaNarrowingApply( ['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 2) . red in META-LEVEL : metaNarrowingApply( ['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 3) . red in META-LEVEL : metaNarrowingApply( ['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 4) . *** using # variables red in META-LEVEL : metaNarrowingApply( ['FOO], 'g['f['#22:Foo, '#23:Foo, '#23:Foo]], empty, '#, 0) . red in META-LEVEL : metaNarrowingApply( ['FOO], 'g['f['#22:Foo, '#23:Foo, '#23:Foo]], empty, '#, 1) . red in META-LEVEL : metaNarrowingApply( ['FOO], 'g['f['#22:Foo, '#23:Foo, '#23:Foo]], empty, '#, 2) . red in META-LEVEL : metaNarrowingApply( ['FOO], 'g['f['#22:Foo, '#23:Foo, '#23:Foo]], empty, '#, 3) . red in META-LEVEL : metaNarrowingApply( ['FOO], 'g['f['#22:Foo, '#23:Foo, '#23:Foo]], empty, '#, 4) . *** *** Now with the incompleteness arising from a variant equation. *** mod BAR is sort Foo . op f : Foo Foo -> Foo [assoc] . ops g h i : Foo -> Foo . ops a b c d e : -> Foo . vars X Y Z W : Foo . eq g(f(X, X)) = h(X) [variant]. rl h(X) => i(X) [narrowing] . endm variant unify h(X) =? g(f(Y, Z, Z)) . red in META-LEVEL : metaNarrowingApply( ['BAR], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 0) . red in META-LEVEL : metaNarrowingApply( ['BAR], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 1) . red in META-LEVEL : metaNarrowingApply( ['BAR], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 2) . red in META-LEVEL : metaNarrowingApply( ['BAR], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 3) . red in META-LEVEL : metaNarrowingApply( ['BAR], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 4) . *** *** Check irreducibility constraint and returned context. *** mod XOR is sorts Elt Expr . subsort Elt < Expr . ops a b c d e : -> Elt . op _+_ : Expr Expr -> Expr [assoc comm] . op 0 : -> Elt . vars W X Y Z : Expr . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endm mod XOR-TEST is inc XOR . ops g h : Expr -> Expr . op f : Expr Expr -> Expr . vars W X Y Z : Expr . rl g(Y + a) => h(Y) [narrowing] . endm red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, 0) . red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, 1) . red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, 2) . red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, 3) . *** *** Check delay and filter options. *** red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, delay filter, 0) . red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, delay filter, 1) . *** *** Now with unbound variable in irreducibility constraint; 'X:Expr should not be *** mentioned in any substitution. *** red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['X:Expr, 'b.Elt], '#, 0) . red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['X:Expr, 'b.Elt], '#, 11) . red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['X:Expr, 'b.Elt], '#, 12) . *** *** Without renaming. *** red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr], '_+_['#3:Expr, 'b.Elt], '#, 0) . red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr], '_+_['#3:Expr, 'b.Elt], '#, 11) . red in META-LEVEL : metaNarrowingApply( ['XOR-TEST], 'f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr], '_+_['#3:Expr, 'b.Elt], '#, 12) . *** metaNarrowingSearch() / metaNarrowingSearchPath() mod FOO is sort Foo . ops f g h : Foo -> Foo . ops i j k : Foo Foo -> Foo . vars X Y Z W A B C D : Foo . eq j(f(X), Y) = i(f(Y), X) [variant] . rl g(i(X, k(Y, Z))) => f(k(Z, X)) [narrowing] . endm reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 0) . reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 1) . reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 2) . reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 3) . reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 0) . reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 1) . reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 2) . reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 3) . --- reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 0) . reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 1) . reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 2) . reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 3) . reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 0) . reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 1) . reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 2) . reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 3) . mod BAR is sort Foo . op f : Foo Foo -> Foo [assoc] . ops g h : Foo -> Foo . ops a b c d e : -> Foo . vars X Y Z W : Foo . rl g(f(X, X)) => h(X) [narrowing]. endm reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 0) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 1) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 2) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 3) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 4) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 5) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 0) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 1) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 2) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 3) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 4) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 0) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 1) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 2) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 3) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 4) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 5) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 0) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 1) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 2) . reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 3) . --- reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 0) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 1) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 2) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 3) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 4) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 5) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 0) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 1) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 2) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 3) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 4) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 0) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 1) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 2) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 3) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 4) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 5) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 0) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 1) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 2) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 3) . mod BAZ is sort Foo . ops f g h : Foo -> Foo . ops i j k : Foo Foo -> Foo . vars X Y Z W A B C D : Foo . eq j(f(X), Y) = i(f(Y), X) [variant] . rl g(i(X, k(Y, Z))) => f(k(Z, X)) [narrowing] . rl f(k(X, X)) => h(X) [narrowing] . endm reduce in META-LEVEL : metaNarrowingSearch(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 0) . reduce in META-LEVEL : metaNarrowingSearch(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 1) . reduce in META-LEVEL : metaNarrowingSearch(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 2) . reduce in META-LEVEL : metaNarrowingSearch(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'match, 0) . reduce in META-LEVEL : metaNarrowingSearch(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'match, 1) . --- reduce in META-LEVEL : metaNarrowingSearchPath(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 0) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 1) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 2) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'match, 0) . reduce in META-LEVEL : metaNarrowingSearchPath(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'match, 1) . Maude-Maude3.5.1/tests/Meta/metaNarrow.expected0000664000175000017510000013347715036121435020771 0ustar nileshnilesh========================================== unify in FOO : f(X, X) =? f(Y, Z, Z) . Unifier 1 X --> f(#1:Foo, #2:Foo, #2:Foo, #1:Foo, #2:Foo) Y --> f(#1:Foo, #2:Foo, #2:Foo, #1:Foo) Z --> f(#2:Foo, #1:Foo, #2:Foo) Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. Unifier 2 X --> f(#1:Foo, #1:Foo, #1:Foo) Y --> f(#1:Foo, #1:Foo) Z --> f(#1:Foo, #1:Foo) Unifier 3 X --> f(#2:Foo, #1:Foo, #1:Foo) Y --> f(#2:Foo, #1:Foo, #1:Foo, #2:Foo) Z --> #1:Foo Unifier 4 X --> f(#1:Foo, #1:Foo) Y --> f(#1:Foo, #1:Foo) Z --> #1:Foo Warning: Some unifiers may have been missed due to incomplete unification algorithm(s). ========================================== reduce in META-LEVEL : metaNarrow(['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], 'W:Foo, '+, unbounded, 0) . rewrites: 3 result ResultTriple: {'h['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]], 'Foo, 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]]} ========================================== reduce in META-LEVEL : metaNarrow(['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], 'W:Foo, '+, unbounded, 1) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 3 result ResultTriple: {'h['f['%1:Foo, '%1:Foo, '%1:Foo]], 'Foo, 'W:Foo <- 'h['f['%1:Foo, '%1:Foo, '%1:Foo]]} ========================================== reduce in META-LEVEL : metaNarrow(['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], 'W:Foo, '+, unbounded, 2) . rewrites: 3 result ResultTriple: {'h['f['%2:Foo, '%1:Foo, '%1:Foo]], 'Foo, 'W:Foo <- 'h['f['%2:Foo, '%1:Foo, '%1:Foo]]} ========================================== reduce in META-LEVEL : metaNarrow(['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], 'W:Foo, '+, unbounded, 3) . rewrites: 3 result ResultTriple: {'h['f['%1:Foo, '%1:Foo]], 'Foo, 'W:Foo <- 'h['f['%1:Foo, '%1:Foo]]} ========================================== reduce in META-LEVEL : metaNarrow(['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], 'W:Foo, '+, unbounded, 4) . rewrites: 2 result ResultTriple?: (failureIncomplete).ResultTriple? ========================================== reduce in META-LEVEL : metaNarrowingApply(['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 0) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 4 result NarrowingApplyResult: { 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, [], ', 'Y:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; 'Z:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 1) . rewrites: 4 result NarrowingApplyResult: { 'h['f['@1:Foo, '@1:Foo, '@1:Foo]], 'Foo, [], ', 'Y:Foo <- 'f['@1:Foo, '@1:Foo] ; 'Z:Foo <- 'f['@1:Foo, '@1:Foo], 'X:Foo <- 'f['@1:Foo, '@1:Foo, '@1:Foo], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 2) . rewrites: 4 result NarrowingApplyResult: { 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, [], ', 'Y:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; 'Z:Foo <- '@1:Foo, 'X:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 3) . rewrites: 4 result NarrowingApplyResult: { 'h['f['@1:Foo, '@1:Foo]], 'Foo, [], ', 'Y:Foo <- 'f['@1:Foo, '@1:Foo] ; 'Z:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@1:Foo], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['FOO], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 4) . rewrites: 3 result NarrowingApplyResult?: (failureIncomplete).NarrowingApplyResult? ========================================== reduce in META-LEVEL : metaNarrowingApply(['FOO], 'g['f['#22:Foo, '#23:Foo, '#23:Foo]], empty, '#, 0) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 4 result NarrowingApplyResult: { 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; '#23:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['FOO], 'g['f['#22:Foo, '#23:Foo, '#23:Foo]], empty, '#, 1) . rewrites: 4 result NarrowingApplyResult: { 'h['f['@1:Foo, '@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@1:Foo, '@1:Foo] ; '#23:Foo <- 'f['@1:Foo, '@1:Foo], 'X:Foo <- 'f['@1:Foo, '@1:Foo, '@1:Foo], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['FOO], 'g['f['#22:Foo, '#23:Foo, '#23:Foo]], empty, '#, 2) . rewrites: 4 result NarrowingApplyResult: { 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['FOO], 'g['f['#22:Foo, '#23:Foo, '#23:Foo]], empty, '#, 3) . rewrites: 4 result NarrowingApplyResult: { 'h['f['@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@1:Foo, '@1:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@1:Foo], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['FOO], 'g['f['#22:Foo, '#23:Foo, '#23:Foo]], empty, '#, 4) . rewrites: 3 result NarrowingApplyResult?: (failureIncomplete).NarrowingApplyResult? ========================================== variant unify in BAR : h(X) =? g(f(Y, Z, Z)) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. Unifier 1 rewrites: 4 X --> f(#1:Foo, #2:Foo, #2:Foo, #1:Foo, #2:Foo) Y --> f(#1:Foo, #2:Foo, #2:Foo, #1:Foo) Z --> f(#2:Foo, #1:Foo, #2:Foo) Unifier 2 rewrites: 4 X --> f(#1:Foo, #1:Foo, #1:Foo) Y --> f(#1:Foo, #1:Foo) Z --> f(#1:Foo, #1:Foo) Unifier 3 rewrites: 4 X --> f(#1:Foo, #2:Foo, #2:Foo) Y --> f(#1:Foo, #2:Foo, #2:Foo, #1:Foo) Z --> #2:Foo Unifier 4 rewrites: 4 X --> f(#1:Foo, #1:Foo) Y --> f(#1:Foo, #1:Foo) Z --> #1:Foo No more unifiers. rewrites: 4 Warning: Some unifiers may have been missed due to incomplete unification algorithm(s). ========================================== reduce in META-LEVEL : metaNarrowingApply(['BAR], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 0) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 8 result NarrowingApplyResult: { 'i['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]], 'Foo, [], ', 'Y:Foo <- 'f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo] ; 'Z:Foo <- 'f['%2:Foo, '%1:Foo, '%2:Foo], 'X:Foo <- 'f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo], '% } ========================================== reduce in META-LEVEL : metaNarrowingApply(['BAR], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 1) . rewrites: 4 result NarrowingApplyResult: { 'i['f['%1:Foo, '%1:Foo, '%1:Foo]], 'Foo, [], ', 'Y:Foo <- 'f['%1:Foo, '%1:Foo] ; 'Z:Foo <- 'f['%1:Foo, '%1:Foo], 'X:Foo <- 'f['%1:Foo, '%1:Foo, '%1:Foo], '% } ========================================== reduce in META-LEVEL : metaNarrowingApply(['BAR], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 2) . rewrites: 4 result NarrowingApplyResult: { 'i['f['%1:Foo, '%2:Foo, '%2:Foo]], 'Foo, [], ', 'Y:Foo <- 'f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo] ; 'Z:Foo <- '%2:Foo, 'X:Foo <- 'f['%1:Foo, '%2:Foo, '%2:Foo], '% } ========================================== reduce in META-LEVEL : metaNarrowingApply(['BAR], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 3) . rewrites: 4 result NarrowingApplyResult: { 'i['f['%1:Foo, '%1:Foo]], 'Foo, [], ', 'Y:Foo <- 'f['%1:Foo, '%1:Foo] ; 'Z:Foo <- '%1:Foo, 'X:Foo <- 'f['%1:Foo, '%1:Foo], '% } ========================================== reduce in META-LEVEL : metaNarrowingApply(['BAR], 'g['f['Y:Foo, 'Z:Foo, 'Z:Foo]], empty, '#, 4) . rewrites: 3 result NarrowingApplyResult?: (failureIncomplete).NarrowingApplyResult? ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, 0) . rewrites: 10 result NarrowingApplyResult: { 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], ', 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, 1) . rewrites: 4 result NarrowingApplyResult: { 'f['h['b.Elt], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], ', 'W:Expr <- 'a.Elt ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- 'b.Elt, '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, 2) . rewrites: 4 result NarrowingApplyResult: { 'f['h['_+_['a.Elt, 'b.Elt, '%1:Expr]], '%2:Expr], 'Expr, 'f[[], 'Z:Expr], ', 'W:Expr <- '%1:Expr ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr], '% } ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, 3) . rewrites: 9 result NarrowingApplyResult?: (failure).NarrowingApplyResult? ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, delay filter, 0) . rewrites: 19 result NarrowingApplyResult: { 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], ', 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['W:Expr, 'b.Elt], '#, delay filter, 1) . rewrites: 8 result NarrowingApplyResult?: (failure).NarrowingApplyResult? ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['X:Expr, 'b.Elt], '#, 0) . rewrites: 34 result NarrowingApplyResult: { 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], ', 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['X:Expr, 'b.Elt], '#, 11) . rewrites: 46 result NarrowingApplyResult: { 'f['g['h['_+_['a.Elt, '@1:Expr]]], '@2:Expr], 'Expr, 'f['g[[]], 'Z:Expr], ', 'W:Expr <- '_+_['b.Elt, 'g['@1:Expr]] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['a.Elt, '@1:Expr], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr], '_+_['X:Expr, 'b.Elt], '#, 12) . rewrites: 6 result NarrowingApplyResult?: (failure).NarrowingApplyResult? ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr], '_+_['#3:Expr, 'b.Elt], '#, 0) . rewrites: 34 result NarrowingApplyResult: { 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], '#2:Expr], ', '#1:Expr <- '_+_['a.Elt, '@1:Expr] ; '#2:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr], '_+_['#3:Expr, 'b.Elt], '#, 11) . rewrites: 46 result NarrowingApplyResult: { 'f['g['h['_+_['a.Elt, '@1:Expr]]], '@2:Expr], 'Expr, 'f['g[[]], '#2:Expr], ', '#1:Expr <- '_+_['b.Elt, 'g['@1:Expr]] ; '#2:Expr <- '@2:Expr, 'Y:Expr <- '_+_['a.Elt, '@1:Expr], '@ } ========================================== reduce in META-LEVEL : metaNarrowingApply(['XOR-TEST], 'f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr], '_+_['#3:Expr, 'b.Elt], '#, 12) . rewrites: 6 result NarrowingApplyResult?: (failure).NarrowingApplyResult? ========================================== reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 0) . rewrites: 4 result NarrowingSearchResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 1) . rewrites: 3 result NarrowingSearchResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 2) . rewrites: 5 result NarrowingSearchResult: { 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo, '%, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 3) . rewrites: 4 result NarrowingSearchResult?: (failure).NarrowingSearchResult? ========================================== reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 0) . rewrites: 4 result NarrowingSearchResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 1) . rewrites: 3 result NarrowingSearchResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 2) . rewrites: 5 result NarrowingSearchResult: { 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo, '%, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 3) . rewrites: 4 result NarrowingSearchResult?: (failure).NarrowingSearchResult? ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 0) . rewrites: 4 result NarrowingSearchPathResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, (nil).NarrowingTrace, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 1) . rewrites: 3 result NarrowingSearchPathResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, (nil).NarrowingTrace, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 2) . rewrites: 5 result NarrowingSearchPathResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; '#2:Foo <- '%3:Foo ; 'X:Foo <- 'f['%3:Foo] ; 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%2:Foo, '%, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo }, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'none, 3) . rewrites: 4 result NarrowingSearchPathResult?: (failure).NarrowingSearchPathResult? ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 0) . rewrites: 4 result NarrowingSearchPathResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, (nil).NarrowingTrace, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 1) . rewrites: 3 result NarrowingSearchPathResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, (nil).NarrowingTrace, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 2) . rewrites: 5 result NarrowingSearchPathResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; '#2:Foo <- '%3:Foo ; 'X:Foo <- 'f['%3:Foo] ; 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%2:Foo, '%, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo }, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['FOO], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '*, unbounded, 'match, 3) . rewrites: 4 result NarrowingSearchPathResult?: (failure).NarrowingSearchPathResult? ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 0) . rewrites: 3 result NarrowingSearchResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'W:Foo <- 'g['f['@1:Foo, '@2:Foo, '@2:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 1) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 4 result NarrowingSearchResult: { 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; 'B:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo], '@, '@1:Foo <- '%1:Foo ; '@2:Foo <- '%2:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 2) . rewrites: 4 result NarrowingSearchResult: { 'h['f['@1:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- 'f['@1:Foo, '@1:Foo], '@, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 3) . rewrites: 4 result NarrowingSearchResult: { 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; 'B:Foo <- '@1:Foo, '@, '@1:Foo <- '%2:Foo ; '@2:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 4) . rewrites: 4 result NarrowingSearchResult: { 'h['f['@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- '@1:Foo, '@, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 5) . rewrites: 3 result NarrowingSearchResult?: (failureIncomplete).NarrowingSearchResult? ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 0) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 7 result NarrowingSearchResult: { 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; 'B:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo], '@, '@1:Foo <- '%1:Foo ; '@2:Foo <- '%2:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 1) . rewrites: 3 result NarrowingSearchResult: { 'h['f['@1:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- 'f['@1:Foo, '@1:Foo], '@, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 2) . rewrites: 3 result NarrowingSearchResult: { 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; 'B:Foo <- '@1:Foo, '@, '@1:Foo <- '%2:Foo ; '@2:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 3) . rewrites: 3 result NarrowingSearchResult: { 'h['f['@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- '@1:Foo, '@, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 4) . rewrites: 3 result NarrowingSearchResult?: (failureIncomplete).NarrowingSearchResult? ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 0) . rewrites: 3 result NarrowingSearchResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'W:Foo <- 'g['f['@1:Foo, '@2:Foo, '@2:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 1) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 4 result NarrowingSearchResult: { 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; 'B:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo], '@, '@1:Foo <- '%1:Foo ; '@2:Foo <- '%2:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 2) . rewrites: 4 result NarrowingSearchResult: { 'h['f['@1:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- 'f['@1:Foo, '@1:Foo], '@, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 3) . rewrites: 4 result NarrowingSearchResult: { 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; 'B:Foo <- '@1:Foo, '@, '@1:Foo <- '%2:Foo ; '@2:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 4) . rewrites: 4 result NarrowingSearchResult: { 'h['f['@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- '@1:Foo, '@, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 5) . rewrites: 3 result NarrowingSearchResult?: (failureIncomplete).NarrowingSearchResult? ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 0) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 7 result NarrowingSearchResult: { 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; 'B:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo], '@, '@1:Foo <- '%1:Foo ; '@2:Foo <- '%2:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 1) . rewrites: 3 result NarrowingSearchResult: { 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; 'B:Foo <- '@1:Foo, '@, '@1:Foo <- '%2:Foo ; '@2:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 2) . rewrites: 3 result NarrowingSearchResult: { 'h['f['@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- '@1:Foo, '@, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 3) . rewrites: 3 result NarrowingSearchResult?: (failureIncomplete).NarrowingSearchResult? ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 0) . rewrites: 3 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, (nil).NarrowingTrace, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'W:Foo <- 'g['f['@1:Foo, '@2:Foo, '@2:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 1) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 4 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; '#2:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo] ; 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo], '@, 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; 'B:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo] }, '@1:Foo <- '%1:Foo ; '@2:Foo <- '%2:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 2) . rewrites: 4 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@1:Foo] ; '#2:Foo <- 'f['@1:Foo, '@1:Foo] ; 'X:Foo <- 'f['@1:Foo, '@1:Foo, '@1:Foo], '@, 'h['f['@1:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- 'f['@1:Foo, '@1:Foo] }, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 3) . rewrites: 4 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; '#2:Foo <- '@1:Foo ; 'X:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo], '@, 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; 'B:Foo <- '@1:Foo }, '@1:Foo <- '%2:Foo ; '@2:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 4) . rewrites: 4 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@1:Foo] ; '#2:Foo <- '@1:Foo ; 'X:Foo <- 'f['@1:Foo, '@1:Foo], '@, 'h['f['@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- '@1:Foo }, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'none, 5) . rewrites: 3 result NarrowingSearchPathResult?: ( failureIncomplete).NarrowingSearchPathResult? ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 0) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 7 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; '#2:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo] ; 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo], '@, 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; 'B:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo] }, '@1:Foo <- '%1:Foo ; '@2:Foo <- '%2:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 1) . rewrites: 3 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@1:Foo] ; '#2:Foo <- 'f['@1:Foo, '@1:Foo] ; 'X:Foo <- 'f['@1:Foo, '@1:Foo, '@1:Foo], '@, 'h['f['@1:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- 'f['@1:Foo, '@1:Foo] }, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 2) . rewrites: 3 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; '#2:Foo <- '@1:Foo ; 'X:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo], '@, 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; 'B:Foo <- '@1:Foo }, '@1:Foo <- '%2:Foo ; '@2:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 3) . rewrites: 3 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@1:Foo] ; '#2:Foo <- '@1:Foo ; 'X:Foo <- 'f['@1:Foo, '@1:Foo], '@, 'h['f['@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- '@1:Foo }, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'none, 4) . rewrites: 3 result NarrowingSearchPathResult?: ( failureIncomplete).NarrowingSearchPathResult? ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 0) . rewrites: 3 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, (nil).NarrowingTrace, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'W:Foo <- 'g['f['@1:Foo, '@2:Foo, '@2:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 1) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 4 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; '#2:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo] ; 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo], '@, 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; 'B:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo] }, '@1:Foo <- '%1:Foo ; '@2:Foo <- '%2:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 2) . rewrites: 4 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@1:Foo] ; '#2:Foo <- 'f['@1:Foo, '@1:Foo] ; 'X:Foo <- 'f['@1:Foo, '@1:Foo, '@1:Foo], '@, 'h['f['@1:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- 'f['@1:Foo, '@1:Foo] }, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 3) . rewrites: 4 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; '#2:Foo <- '@1:Foo ; 'X:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo], '@, 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; 'B:Foo <- '@1:Foo }, '@1:Foo <- '%2:Foo ; '@2:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 4) . rewrites: 4 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@1:Foo] ; '#2:Foo <- '@1:Foo ; 'X:Foo <- 'f['@1:Foo, '@1:Foo], '@, 'h['f['@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- '@1:Foo }, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '*, unbounded, 'match, 5) . rewrites: 3 result NarrowingSearchPathResult?: ( failureIncomplete).NarrowingSearchPathResult? ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 0) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 7 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; '#2:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo] ; 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo], '@, 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; 'B:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo] }, '@1:Foo <- '%1:Foo ; '@2:Foo <- '%2:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo, '%1:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 1) . rewrites: 3 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; '#2:Foo <- '@1:Foo ; 'X:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo], '@, 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; 'B:Foo <- '@1:Foo }, '@1:Foo <- '%2:Foo ; '@2:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%2:Foo, '%2:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 2) . rewrites: 3 result NarrowingSearchPathResult: { 'g['f['#1:Foo, '#2:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['@1:Foo, '@1:Foo] ; '#2:Foo <- '@1:Foo ; 'X:Foo <- 'f['@1:Foo, '@1:Foo], '@, 'h['f['@1:Foo, '@1:Foo]], 'Foo, 'A:Foo <- 'f['@1:Foo, '@1:Foo] ; 'B:Foo <- '@1:Foo }, '@1:Foo <- '%1:Foo ; 'W:Foo <- 'h['f['%1:Foo, '%1:Foo]], '% } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAR], 'g['f['A:Foo, 'B:Foo, 'B:Foo]], 'W:Foo, '!, unbounded, 'match, 3) . rewrites: 3 result NarrowingSearchPathResult?: ( failureIncomplete).NarrowingSearchPathResult? ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 0) . rewrites: 12 result NarrowingSearchResult: { 'h['h['%1:Foo]], 'Foo, 'A:Foo <- 'f['k['%2:Foo, 'f['k['%1:Foo, '%1:Foo]]]] ; 'B:Foo <- 'k['%1:Foo, '%1:Foo], '%, '%1:Foo <- '@1:Foo ; 'C:Foo <- 'h['h['@1:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 1) . rewrites: 3 result NarrowingSearchResult: { 'h['h['%1:Foo]], 'Foo, 'A:Foo <- 'f['k['%2:Foo, 'h['%1:Foo]]] ; 'B:Foo <- 'k['%1:Foo, '%1:Foo], '%, '%1:Foo <- '@1:Foo ; 'C:Foo <- 'h['h['@1:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 2) . rewrites: 3 result NarrowingSearchResult?: (failure).NarrowingSearchResult? ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'match, 0) . rewrites: 12 result NarrowingSearchResult: { 'h['h['%1:Foo]], 'Foo, 'A:Foo <- 'f['k['%2:Foo, 'f['k['%1:Foo, '%1:Foo]]]] ; 'B:Foo <- 'k['%1:Foo, '%1:Foo], '%, '%1:Foo <- '@1:Foo ; 'C:Foo <- 'h['h['@1:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearch(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'match, 1) . rewrites: 3 result NarrowingSearchResult?: (failure).NarrowingSearchResult? ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 0) . rewrites: 12 result NarrowingSearchPathResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; '#2:Foo <- '%3:Foo ; 'X:Foo <- 'f['%3:Foo] ; 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%2:Foo, '%, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo } { [], ', '%1:Foo <- '@2:Foo ; '%2:Foo <- 'f['@1:Foo] ; '%3:Foo <- '@1:Foo ; 'X:Foo <- 'f['@1:Foo], '@, 'h['f['@1:Foo]], 'Foo, 'A:Foo <- 'f['k['@2:Foo, 'f['@1:Foo]]] ; 'B:Foo <- '@1:Foo } { 'h[[]], ', '@1:Foo <- 'k['%1:Foo, '%1:Foo] ; '@2:Foo <- '%2:Foo ; 'X:Foo <- '%1:Foo, '%, 'h['h['%1:Foo]], 'Foo, 'A:Foo <- 'f['k['%2:Foo, 'f['k['%1:Foo, '%1:Foo]]]] ; 'B:Foo <- 'k['%1:Foo, '%1:Foo] }, '%1:Foo <- '@1:Foo ; 'C:Foo <- 'h['h['@1:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 1) . rewrites: 3 result NarrowingSearchPathResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; '#2:Foo <- '%3:Foo ; 'X:Foo <- 'f['%3:Foo] ; 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%2:Foo, '%, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo } { 'f['k['%2:Foo, []]], ', '%1:Foo <- '@3:Foo ; '%2:Foo <- '@2:Foo ; '%3:Foo <- 'k['@1:Foo, '@1:Foo] ; 'X:Foo <- '@1:Foo, '@, 'f['k['@2:Foo, 'h['@1:Foo]]], 'Foo, 'A:Foo <- 'f['k['@3:Foo, '@2:Foo]] ; 'B:Foo <- 'k['@1:Foo, '@1:Foo] } { [], ', '@1:Foo <- '%1:Foo ; '@2:Foo <- 'h['%1:Foo] ; '@3:Foo <- '%2:Foo ; 'X:Foo <- 'h['%1:Foo], '%, 'h['h['%1:Foo]], 'Foo, 'A:Foo <- 'f['k['%2:Foo, 'h['%1:Foo]]] ; 'B:Foo <- 'k['%1:Foo, '%1:Foo] }, '%1:Foo <- '@1:Foo ; 'C:Foo <- 'h['h['@1:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'none, 2) . rewrites: 3 result NarrowingSearchPathResult?: (failure).NarrowingSearchPathResult? ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'match, 0) . rewrites: 12 result NarrowingSearchPathResult: { 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; '#2:Foo <- '%3:Foo ; 'X:Foo <- 'f['%3:Foo] ; 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%2:Foo, '%, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo } { [], ', '%1:Foo <- '@2:Foo ; '%2:Foo <- 'f['@1:Foo] ; '%3:Foo <- '@1:Foo ; 'X:Foo <- 'f['@1:Foo], '@, 'h['f['@1:Foo]], 'Foo, 'A:Foo <- 'f['k['@2:Foo, 'f['@1:Foo]]] ; 'B:Foo <- '@1:Foo } { 'h[[]], ', '@1:Foo <- 'k['%1:Foo, '%1:Foo] ; '@2:Foo <- '%2:Foo ; 'X:Foo <- '%1:Foo, '%, 'h['h['%1:Foo]], 'Foo, 'A:Foo <- 'f['k['%2:Foo, 'f['k['%1:Foo, '%1:Foo]]]] ; 'B:Foo <- 'k['%1:Foo, '%1:Foo] }, '%1:Foo <- '@1:Foo ; 'C:Foo <- 'h['h['@1:Foo]], '@ } ========================================== reduce in META-LEVEL : metaNarrowingSearchPath(['BAZ], 'g['j['A:Foo, 'B:Foo]], 'C:Foo, '!, unbounded, 'match, 1) . rewrites: 3 result NarrowingSearchPathResult?: (failure).NarrowingSearchPathResult? Bye. Maude-Maude3.5.1/tests/Meta/metaNarrow0000775000175000017510000000034415036121435017156 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaNarrow.maude -no-banner -no-advise \ > metaNarrow.out 2>&1 diff $srcdir/metaNarrow.expected metaNarrow.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaModule.maude0000664000175000017510000000150715036121435020224 0ustar nileshnileshset show timing off . set show advisories off . select META-MODULE . red (subsort 'Foo < 'Bar .) . red (op 'f : 'Foo -> 'Bar [none] .) . red (ceq 'f['X:Foo] = 'a.Bar if 'g['a.Foo,'Y:Foo] := 'X:Foo [none] .) . red 'g['a.Foo,'Y:Foo] := 'X:Foo . red (fmod 'FOO is including 'MACHINE-INT . sorts 'Foo ; 'Bar . subsort 'Foo < 'Bar . op 'f : 'Foo -> 'Bar [none] . op 'g : '`[Bar`] -> '`[Bar`] [none] . cmb 'X:Bar : 'Foo if 'f['Y:Bar] := 'f['X:Bar] /\ 'g['Y:Bar, 'a.Foo] = 'a.Foo [none] . eq 'f['X:Foo] = 'g['a.Foo,'X:Foo] [none] . ceq 'f['X:Foo] = 'a.Bar if 'g['a.Foo,'Y:Foo] := 'X:Foo [none] . endfm) . red (fmod 'FOO is including 'MACHINE-INT . sorts 'Foo ; 'Bar . subsort 'Foo < 'Bar . op 'f : 'Foo -> 'Bar[none]. op 'g : '`[Bar`] -> '`[Bar`][none]. none eq 'f['X:Foo] = 'g['a.Foo,'X:Foo] [none] . endfm). Maude-Maude3.5.1/tests/Meta/metaModule.expected0000664000175000017510000000402315036121435020726 0ustar nileshnilesh========================================== reduce in META-MODULE : subsort 'Foo < 'Bar . . rewrites: 0 result SubsortDecl: subsort 'Foo < 'Bar . ========================================== reduce in META-MODULE : op 'f : 'Foo -> 'Bar [none] . . rewrites: 0 result OpDecl: op 'f : 'Foo -> 'Bar [none] . ========================================== reduce in META-MODULE : ceq 'f['X:Foo] = 'a.Bar if 'g['a.Foo, 'Y:Foo] := 'X:Foo [none] . . rewrites: 0 result Equation: ceq 'f['X:Foo] = 'a.Bar if 'g['a.Foo, 'Y:Foo] := 'X:Foo [none] . ========================================== reduce in META-MODULE : 'g['a.Foo, 'Y:Foo] := 'X:Foo . rewrites: 0 result EqCondition: 'g['a.Foo, 'Y:Foo] := 'X:Foo ========================================== reduce in META-MODULE : fmod 'FOO is including 'MACHINE-INT . sorts 'Bar ; 'Foo . subsort 'Foo < 'Bar . op 'f : 'Foo -> 'Bar [none] . op 'g : '`[Bar`] -> '`[Bar`] [none] . cmb 'X:Bar : 'Foo if 'f['Y:Bar] := 'f['X:Bar] /\ 'g['Y:Bar, 'a.Foo] = 'a.Foo [none] . eq 'f['X:Foo] = 'g['a.Foo, 'X:Foo] [none] . ceq 'f['X:Foo] = 'a.Bar if 'g['a.Foo, 'Y:Foo] := 'X:Foo [none] . endfm . rewrites: 0 result FModule: fmod 'FOO is including 'MACHINE-INT . sorts 'Bar ; 'Foo . subsort 'Foo < 'Bar . op 'f : 'Foo -> 'Bar [none] . op 'g : '`[Bar`] -> '`[Bar`] [none] . cmb 'X:Bar : 'Foo if 'f['Y:Bar] := 'f['X:Bar] /\ 'g['Y:Bar, 'a.Foo] = 'a.Foo [none] . eq 'f['X:Foo] = 'g['a.Foo, 'X:Foo] [none] . ceq 'f['X:Foo] = 'a.Bar if 'g['a.Foo, 'Y:Foo] := 'X:Foo [none] . endfm ========================================== reduce in META-MODULE : fmod 'FOO is including 'MACHINE-INT . sorts 'Bar ; 'Foo . subsort 'Foo < 'Bar . op 'f : 'Foo -> 'Bar [none] . op 'g : '`[Bar`] -> '`[Bar`] [none] . none eq 'f['X:Foo] = 'g['a.Foo, 'X:Foo] [none] . endfm . rewrites: 0 result FModule: fmod 'FOO is including 'MACHINE-INT . sorts 'Bar ; 'Foo . subsort 'Foo < 'Bar . op 'f : 'Foo -> 'Bar [none] . op 'g : '`[Bar`] -> '`[Bar`] [none] . none eq 'f['X:Foo] = 'g['a.Foo, 'X:Foo] [none] . endfm Bye. Maude-Maude3.5.1/tests/Meta/metaModule0000775000175000017510000000034415036121435017133 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaModule.maude -no-banner -no-advise \ > metaModule.out 2>&1 diff $srcdir/metaModule.expected metaModule.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaModExp.maude0000664000175000017510000000336415036121435020176 0ustar nileshnileshset show timing off . set show advisories off . red in META-LEVEL : ( fmod 'FOO is including ('NAT + 'INT) * (sort 'Nat to 'Nat2, op 'foo to 'bar [none], op 'baz : 'Quux 'Quux -> 'Quux to 'quux [prec(10)], label 'foo to 'bar) . sorts 'Foo . none none none none endfm ) . select META-LEVEL . red metaReduce( fmod 'FOO is including 'NAT + 'INT . sorts 'Foo . none none none none endfm, '0.Nat) . red metaReduce( fmod 'FOO is including 'NAT * (sort 'Zero to 'ZZ) . sorts 'Foo . none none none none endfm, '0.Nat) . red in META-LEVEL : metaReduce( fmod 'FOO is including ('NAT + 'FLOAT) * (sort 'Zero to 'ZZ, op '_+_ to 'plus [none]) . sorts 'Foo . none none none none endfm, 'plus['s_^2['0.Nat],'s_^2['0.Nat]]) . red in META-LEVEL : metaReduce( fmod 'FOO is including 'NAT * (op '_+_ to 'plus [none]) . sorts 'Foo . none none none none endfm, 'plus['s_^2['0.Nat],'s_^2['0.Nat]]) . red in META-LEVEL : metaReduce( fmod 'FOO is including 'NAT . sorts 'Foo . none none none none endfm, '_+_['s_^2['0.Nat],'s_^2['0.Nat]]) . red in META-LEVEL : metaReduce( fmod 'FOO is including 'NAT * (op '_+_ to 'plus [none]) . sorts 'Foo . none none none none endfm, '_*_['s_^2['0.Nat],'s_^2['0.Nat]]) . red in META-LEVEL : metaReduce( fmod 'FOO is including 'NAT * (sort 'Zero to 'ZZ) . sorts 'Foo . none none none none endfm, '_*_['s_^2['0.Nat],'s_^2['0.Nat]]) . red in META-LEVEL : metaReduce( fmod 'FOO is including 'NAT * (sort 'Zero to 'ZZ) . sorts 'Foo . none none none none endfm, 'sd['s_^3['0.Nat],'s_^2['0.Nat]]) . red in META-LEVEL : metaReduce( fmod 'FOO is including 'NAT * (op '_+_ to 'plus [none]) . sorts 'Foo . none none none none endfm, '0.Nat) . Maude-Maude3.5.1/tests/Meta/metaModExp.expected0000664000175000017510000000566215036121435020707 0ustar nileshnilesh========================================== reduce in META-LEVEL : fmod 'FOO is including ('INT + 'NAT) * ( sort 'Nat to 'Nat2, (label 'foo to 'bar, op 'baz : 'Quux 'Quux -> 'Quux to 'quux [prec(10)]), op 'foo to 'bar [none] ) . sorts 'Foo . none none none none endfm . rewrites: 0 result FModule: fmod 'FOO is including ('INT + 'NAT) * ( sort 'Nat to 'Nat2, label 'foo to 'bar, op 'foo to 'bar [none], op 'baz : 'Quux 'Quux -> 'Quux to 'quux [prec(10)] ) . sorts 'Foo . none none none none endfm ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'INT + 'NAT . sorts 'Foo . none none none none endfm, '0.Nat) . rewrites: 1 result ResultPair: {'0.Zero, 'Zero} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'NAT * ( sort 'Zero to 'ZZ ) . sorts 'Foo . none none none none endfm, '0.Nat) . rewrites: 1 result ResultPair: {'0.ZZ, 'ZZ} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including ('FLOAT + 'NAT) * ( sort 'Zero to 'ZZ, op '_+_ to 'plus [none] ) . sorts 'Foo . none none none none endfm, 'plus['s_^2['0.Nat], 's_^2['0.Nat]]) . rewrites: 2 result ResultPair: {'s_^4['0.ZZ], 'NzNat} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'NAT * ( op '_+_ to 'plus [none] ) . sorts 'Foo . none none none none endfm, 'plus['s_^2['0.Nat], 's_^2['0.Nat]]) . rewrites: 2 result ResultPair: {'s_^4['0.Zero], 'NzNat} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'NAT . sorts 'Foo . none none none none endfm, '_+_['s_^2['0.Nat], 's_^2['0.Nat]]) . rewrites: 2 result ResultPair: {'s_^4['0.Zero], 'NzNat} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'NAT * ( op '_+_ to 'plus [none] ) . sorts 'Foo . none none none none endfm, '_*_['s_^2['0.Nat], 's_^2['0.Nat]]) . rewrites: 2 result ResultPair: {'s_^4['0.Zero], 'NzNat} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'NAT * ( sort 'Zero to 'ZZ ) . sorts 'Foo . none none none none endfm, '_*_['s_^2['0.Nat], 's_^2['0.Nat]]) . rewrites: 2 result ResultPair: {'s_^4['0.ZZ], 'NzNat} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'NAT * ( sort 'Zero to 'ZZ ) . sorts 'Foo . none none none none endfm, 'sd['s_^3['0.Nat], 's_^2['0.Nat]]) . rewrites: 2 result ResultPair: {'s_['0.ZZ], 'NzNat} ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is including 'NAT * ( op '_+_ to 'plus [none] ) . sorts 'Foo . none none none none endfm, '0.Nat) . rewrites: 1 result ResultPair: {'0.Zero, 'Zero} Bye. Maude-Maude3.5.1/tests/Meta/metaModExp0000775000175000017510000000034415036121435017102 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaModExp.maude -no-banner -no-advise \ > metaModExp.out 2>&1 diff $srcdir/metaModExp.expected metaModExp.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaMetadata.maude0000664000175000017510000000225615036121435020521 0ustar nileshnileshset show timing off . set show advisories off . set protect BOOL off . fmod FOO is sort Foo . ops a b : -> Foo [metadata "bla bla"] . eq a = b [metadata "hmm"] . endfm show mod . show all . red in META-LEVEL : upModule('FOO, false) . fmod FOO2 is sort Foo . ops a b : -> Foo [metadata bla] . eq a = b [metadata hmm] . endfm show mod . show all . red in META-LEVEL : upModule('FOO, false) . fmod FOO3 is inc FOO . endfm show all . red in META-LEVEL : upModule('FOO3, true) . fmod FOO4 is sort Foo . op f : ??? -> Foo [poly (1) metadata "bla bla"] . endfm show mod . show all . red in META-LEVEL : upModule('FOO4, false) . fmod FOO5 is inc FOO4 . endfm show all . red in META-LEVEL : upModule('FOO5, true) . red in META-LEVEL : metaReduce( fmod 'FOO is protecting 'BOOL . sorts 'Foo . none op 'a : nil -> 'Foo [metadata("bla bla")] . op 'b : nil -> 'Foo [metadata("bla bla")] . none eq 'a.Foo = 'b.Foo [metadata("hmm")] . endfm, 'a.Foo) . fmod BAR is sorts Foo Bar . subsort Foo < Bar . op f : Foo -> Foo [metadata "fooy"] . op f : Bar -> Bar [metadata "fubar"] . endfm show mod . show all . red in META-LEVEL : upModule('BAR, false) . Maude-Maude3.5.1/tests/Meta/metaMetadata.expected0000664000175000017510000000643315036121435021230 0ustar nileshnileshfmod FOO is sort Foo . ops a b : -> Foo [metadata "bla bla"] . eq a = b [metadata "hmm"] . endfm fmod FOO is sort Foo . op a : -> Foo [metadata "bla bla"] . op b : -> Foo [metadata "bla bla"] . eq a = b [metadata "hmm"] . endfm ========================================== reduce in META-LEVEL : upModule('FOO, false) . rewrites: 1 result FModule: fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [metadata("bla bla")] . op 'b : nil -> 'Foo [metadata("bla bla")] . none eq 'a.Foo = 'b.Foo [metadata("hmm")] . endfm Warning: , line 19 (fmod FOO2): bad value bla for metadata attribute. Warning: , line 20 (fmod FOO2): bad token hmm. Warning: , line 20 (fmod FOO2): no parse for statement eq a = b [metadata hmm] . fmod FOO2 is sort Foo . ops a b : -> Foo . eq a = b [metadata hmm] . endfm fmod FOO2 is sort Foo . op a : -> Foo . op b : -> Foo . endfm ========================================== reduce in META-LEVEL : upModule('FOO, false) . rewrites: 1 result FModule: fmod 'FOO is nil sorts 'Foo . none op 'a : nil -> 'Foo [metadata("bla bla")] . op 'b : nil -> 'Foo [metadata("bla bla")] . none eq 'a.Foo = 'b.Foo [metadata("hmm")] . endfm fmod FOO3 is sort Foo . op a : -> Foo [metadata "bla bla"] . op b : -> Foo [metadata "bla bla"] . eq a = b [metadata "hmm"] . endfm ========================================== reduce in META-LEVEL : upModule('FOO3, true) . rewrites: 1 result FModule: fmod 'FOO3 is nil sorts 'Foo . none op 'a : nil -> 'Foo [metadata("bla bla")] . op 'b : nil -> 'Foo [metadata("bla bla")] . none eq 'a.Foo = 'b.Foo [metadata("hmm")] . endfm fmod FOO4 is sort Foo . op f : ??? -> Foo [poly (1) metadata "bla bla"] . endfm fmod FOO4 is sort Foo . op f : Universal -> Foo [poly (1) metadata "bla bla"] . endfm ========================================== reduce in META-LEVEL : upModule('FOO4, false) . rewrites: 1 result FModule: fmod 'FOO4 is nil sorts 'Foo . none op 'f : 'Universal -> 'Foo [poly(1) metadata("bla bla")] . none none endfm fmod FOO5 is sort Foo . op f : Universal -> Foo [poly (1) metadata "bla bla"] . endfm ========================================== reduce in META-LEVEL : upModule('FOO5, true) . rewrites: 1 result FModule: fmod 'FOO5 is nil sorts 'Foo . none op 'f : 'Universal -> 'Foo [poly(1) metadata("bla bla")] . none none endfm ========================================== reduce in META-LEVEL : metaReduce(fmod 'FOO is protecting 'BOOL . sorts 'Foo . none op 'a : nil -> 'Foo [metadata("bla bla")] . op 'b : nil -> 'Foo [metadata("bla bla")] . none eq 'a.Foo = 'b.Foo [metadata("hmm")] . endfm, 'a.Foo) . rewrites: 2 result ResultPair: {'b.Foo, 'Foo} fmod BAR is sorts Foo Bar . subsort Foo < Bar . op f : Foo -> Foo [metadata "fooy"] . op f : Bar -> Bar [metadata "fubar"] . endfm fmod BAR is sorts Foo Bar . subsort Foo < Bar . op f : Foo -> Foo [metadata "fooy"] . op f : Bar -> Bar [metadata "fubar"] . endfm ========================================== reduce in META-LEVEL : upModule('BAR, false) . rewrites: 1 result FModule: fmod 'BAR is nil sorts 'Bar ; 'Foo . subsort 'Foo < 'Bar . op 'f : 'Bar -> 'Bar [metadata("fubar")] . op 'f : 'Foo -> 'Foo [metadata("fooy")] . none none endfm Bye. Maude-Maude3.5.1/tests/Meta/metaMetadata0000775000175000017510000000035415036121435017427 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaMetadata.maude -no-banner -no-advise \ > metaMetadata.out 2>&1 diff $srcdir/metaMetadata.expected metaMetadata.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaMeta.maude0000664000175000017510000000067515036121435017672 0ustar nileshnileshset show timing off . set show advisories off . mod FOO is sort Foo . ops a b : -> Foo . rl a => b . endm red in META-LEVEL : metaRewrite(['FOO], 'a.Foo, 10) . mod SELF-REFLECTION is pr META-LEVEL . sort Foo . ops a b : -> Foo . rl a => b . op r : Term -> Term . rl r(T:Term) => getTerm(metaRewrite(['SELF-REFLECTION], T:Term, 100)) . endm red in META-LEVEL : metaRewrite(['SELF-REFLECTION], 'r[''a.Foo.Constant], 10) . Maude-Maude3.5.1/tests/Meta/metaMeta.expected0000664000175000017510000000052615036121435020373 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaRewrite(['FOO], 'a.Foo, 10) . rewrites: 3 result ResultPair: {'b.Foo, 'Foo} ========================================== reduce in META-LEVEL : metaRewrite(['SELF-REFLECTION], 'r[''a.Foo.Constant], 10) . rewrites: 7 result ResultPair: {''b.Foo.Constant, 'Constant} Bye. Maude-Maude3.5.1/tests/Meta/metaMeta0000775000175000017510000000033415036121435016573 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaMeta.maude -no-banner -no-advise \ > metaMeta.out 2>&1 diff $srcdir/metaMeta.expected metaMeta.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaMatch.maude0000664000175000017510000000706715036121435020042 0ustar nileshnileshset show timing off . set show advisories off . mod SEARCH-TEST is sort Nat . op _+_ : Nat Nat -> Nat [assoc comm prec 5] . op _*_ : Nat Nat -> Nat [assoc comm prec 3] . ops a b c d e 0 1 : -> Nat . vars W X Y Z : Nat . eq 0 * X = 0 . eq 1 * X = X . eq 0 + X = X . rl X * (Y + Z) => X * Y + X * Z . rl X * Y + X * Z => X * (Y + Z) . endm select META-LEVEL . red metaMatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, 0) . red metaMatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, 1) . red metaMatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, 2) . red metaMatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_*_['Y:Nat, 'Z:Nat] := 'X:Nat /\ 'Y:Nat = 'a.Nat, 0) . red metaMatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]], '_*_['Y:Nat, 'Z:Nat] := 'X:Nat /\ 'Y:Nat = 'a.Nat, 1) . red in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . none none endfm, 'f['Y:Foo, 'Y:Foo], 'f['b.Foo, 'b.Foo], nil, 0) . red in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . none none endfm, 'f['Y:Foo, 'Y:Foo], 'f['b.Foo, 'b.Foo], nil, 1) . red in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo], nil, 0) . red in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo], nil, 1) . red in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo], nil, 2) . red in META-LEVEL : metaMatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0) . red in META-LEVEL : metaMatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 2) . red in META-LEVEL : metaMatch( fmod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 1) . Maude-Maude3.5.1/tests/Meta/metaMatch.expected0000664000175000017510000001174015036121435020541 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaMatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, 0) . rewrites: 2 result Substitution: 'X:Nat <- '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]] ; 'Y:Nat <- '_+_['b.Nat, 'c.Nat] ; 'Z:Nat <- 'a.Nat ========================================== reduce in META-LEVEL : metaMatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, 1) . rewrites: 2 result Substitution: 'X:Nat <- '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]] ; 'Y:Nat <- 'a.Nat ; 'Z:Nat <- '_+_['b.Nat, 'c.Nat] ========================================== reduce in META-LEVEL : metaMatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_*_['Y:Nat, 'Z:Nat] := 'X:Nat, 2) . rewrites: 2 result Substitution?: (noMatch).Substitution? ========================================== reduce in META-LEVEL : metaMatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_*_['Y:Nat, 'Z:Nat] := 'X:Nat /\ 'Y:Nat = 'a.Nat, 0) . rewrites: 2 result Substitution: 'X:Nat <- '_*_['a.Nat, '_+_['b.Nat, 'c.Nat]] ; 'Y:Nat <- 'a.Nat ; 'Z:Nat <- '_+_['b.Nat, 'c.Nat] ========================================== reduce in META-LEVEL : metaMatch(['SEARCH-TEST], 'X:Nat, '_*_['a.Nat, '_+_[ 'b.Nat, 'c.Nat]], '_*_['Y:Nat, 'Z:Nat] := 'X:Nat /\ 'Y:Nat = 'a.Nat, 1) . rewrites: 2 result Substitution?: (noMatch).Substitution? ========================================== reduce in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['Y:Foo, 'Y:Foo], 'f['b.Foo, 'b.Foo], nil, 0) . rewrites: 1 result Assignment: 'Y:Foo <- 'b.Foo ========================================== reduce in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['Y:Foo, 'Y:Foo], 'f['b.Foo, 'b.Foo], nil, 1) . rewrites: 1 result Substitution?: (noMatch).Substitution? ========================================== reduce in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo], nil, 0) . rewrites: 1 result Substitution: 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo ========================================== reduce in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo], nil, 1) . rewrites: 1 result Substitution: 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo ========================================== reduce in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] .) op 'a : nil -> 'Foo [none] . none none endfm, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo], nil, 2) . rewrites: 1 result Substitution?: (noMatch).Substitution? ========================================== reduce in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 0) . rewrites: 1 result Substitution: 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo ; 'Z:Foo <- 'f['c.Foo, 'c.Foo] ========================================== reduce in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 2) . rewrites: 1 result Substitution: 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'c.Foo ; 'Z:Foo <- 'f['a.Foo, 'b.Foo] ========================================== reduce in META-LEVEL : metaMatch(fmod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none endfm, 'g['f['X:Foo, 'Y:Foo], 'Z:Foo], 'g['f['a.Foo, 'b.Foo], 'f['c.Foo, 'c.Foo]], nil, 1) . rewrites: 1 result Substitution: 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo ; 'Z:Foo <- 'f['c.Foo, 'c.Foo] Bye. Maude-Maude3.5.1/tests/Meta/metaMatch0000775000175000017510000000034015036121435016736 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaMatch.maude -no-banner -no-advise \ > metaMatch.out 2>&1 diff $srcdir/metaMatch.expected metaMatch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntVariantUnify2.maude0000664000175000017510000001452215036121435022154 0ustar nileshnileshset show timing off . *** *** Test variant unification in the meta-interpreter, with new delay, filter semantics. *** load metaInterpreter fmod XOR is sort XOR . sort Elem . ops c1 c2 c3 c4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm mod VARIANT-UNIFY-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : UnificationProblem TermList -> Attribute . op options:_ : VariantOptionSet -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var V : Term . var TL : TermList . var S : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . var UP : UnificationProblem . var VO : VariantOptionSet . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(UP, TL), options: VO > insertedModule(X, Y) => < X : User | AS, problem:(UP, TL), options: VO, soln: 1, result(nil) > getVariantUnifier(Y, X, 'XOR, UP, TL, '#, VO, 0) . rl < X : User | AS, problem:(UP, TL), options: VO, soln: N, result(ML) > gotVariantUnifier(X, Y, R, S, Q) => < X : User | AS, problem:(UP, TL), options: VO, soln: (N + 1), result(ML, gotVariantUnifier(X, Y, R, S, Q)) > getVariantUnifier(Y, X, 'XOR, UP, TL, '#, VO, N) . endm erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: none > createInterpreter(interpreterManager, me, none) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: delay > createInterpreter(interpreterManager, me, none) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: filter > createInterpreter(interpreterManager, me, none) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: (delay filter) > createInterpreter(interpreterManager, me, none) . filtered variant unify in XOR : X:XOR + c1 =? Y:XOR + c2 . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: none > createInterpreter(interpreterManager, me, none) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: delay > createInterpreter(interpreterManager, me, none) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: filter > createInterpreter(interpreterManager, me, none) . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: (delay filter) > createInterpreter(interpreterManager, me, none) . filtered variant unify in XOR : X:XOR + c1 =? Y:XOR + c2 such that X:XOR + c1 irreducible . mod DISJOINT-VARIANT-UNIFY-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : UnificationProblem TermList -> Attribute . op options:_ : VariantOptionSet -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var V : Term . var TL : TermList . var S S' : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . var UP : UnificationProblem . var VO : VariantOptionSet . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(UP, TL), options: VO > insertedModule(X, Y) => < X : User | AS, problem:(UP, TL), options: VO, soln: 1, result(nil) > getDisjointVariantUnifier(Y, X, 'XOR, UP, TL, '#, VO, 0) . rl < X : User | AS, problem:(UP, TL), options: VO, soln: N, result(ML) > gotDisjointVariantUnifier(X, Y, R, S, S', Q) => < X : User | AS, problem:(UP, TL), options: VO, soln: (N + 1), result(ML, gotDisjointVariantUnifier(X, Y, R, S, S', Q)) > getDisjointVariantUnifier(Y, X, 'XOR, UP, TL, '#, VO, N) . endm erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: none > createInterpreter(interpreterManager, me, none) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: delay > createInterpreter(interpreterManager, me, none) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: filter > createInterpreter(interpreterManager, me, none) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty), options: (delay filter) > createInterpreter(interpreterManager, me, none) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: none > createInterpreter(interpreterManager, me, none) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: delay > createInterpreter(interpreterManager, me, none) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: filter > createInterpreter(interpreterManager, me, none) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]), options: (delay filter) > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntVariantUnify2.expected0000664000175000017510000003320415036121435022660 0ustar nileshnilesh========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: none, problem:('_+_[ 'X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter( interpreterManager, me, none) . rewrites: 43 result Configuration: <> < me : User | options: none, soln: 9, result( gotVariantUnifier(me, interpreter(0), 6, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 18, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotVariantUnifier(me, interpreter( 0), 0, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- 'c2.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem] ; 'Y:XOR <- '0.XOR, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: delay, problem:( '_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 43 result Configuration: <> < me : User | options: delay, soln: 9, result( gotVariantUnifier(me, interpreter(0), 24, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotVariantUnifier(me, interpreter( 0), 0, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- 'c2.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem] ; 'Y:XOR <- '0.XOR, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: filter, problem:( '_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 39 result Configuration: <> < me : User | options: filter, soln: 2, result( gotVariantUnifier(me, interpreter(0), 16, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 18, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: (delay filter), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 39 result Configuration: <> < me : User | options: (delay filter), soln: 2, result(gotVariantUnifier(me, interpreter(0), 34, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== filtered variant unify in XOR : X + c1 =? Y + c2 . rewrites: 34 Unifier 1 X --> c2 + %1:XOR Y --> c1 + %1:XOR No more unifiers. ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: none, problem:('_+_[ 'X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 12 result Configuration: <> < me : User | options: none, soln: 4, result( gotVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: delay, problem:( '_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 12 result Configuration: <> < me : User | options: delay, soln: 4, result( gotVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: filter, problem:( '_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 18 result Configuration: <> < me : User | options: filter, soln: 2, result( gotVariantUnifier(me, interpreter(0), 13, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | options: (delay filter), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 18 result Configuration: <> < me : User | options: (delay filter), soln: 2, result(gotVariantUnifier(me, interpreter(0), 13, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== filtered variant unify in XOR : X + c1 =? Y + c2 such that X + c1 irreducible . rewrites: 13 Unifier 1 X --> c2 + %1:XOR Y --> c1 + %1:XOR No more unifiers. ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: none, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 43 result Configuration: <> < me : User | options: none, soln: 9, result( gotDisjointVariantUnifier(me, interpreter(0), 6, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 18, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], 'Y:XOR <- '%1:XOR, '%), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotDisjointVariantUnifier( me, interpreter(0), 0, 'X:XOR <- '0.XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c1.Elem, 'Y:XOR <- 'c2.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem], 'Y:XOR <- '0.XOR, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: delay, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 43 result Configuration: <> < me : User | options: delay, soln: 9, result( gotDisjointVariantUnifier(me, interpreter(0), 24, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], 'Y:XOR <- '%1:XOR, '%), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotDisjointVariantUnifier( me, interpreter(0), 0, 'X:XOR <- '0.XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c1.Elem, 'Y:XOR <- 'c2.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem], 'Y:XOR <- '0.XOR, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: filter, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 39 result Configuration: <> < me : User | options: filter, soln: 2, result( gotDisjointVariantUnifier(me, interpreter(0), 16, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 18, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: (delay filter), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 39 result Configuration: <> < me : User | options: (delay filter), soln: 2, result(gotDisjointVariantUnifier(me, interpreter(0), 34, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: none, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 12 result Configuration: <> < me : User | options: none, soln: 4, result( gotDisjointVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: delay, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 12 result Configuration: <> < me : User | options: delay, soln: 4, result( gotDisjointVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: filter, problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 18 result Configuration: <> < me : User | options: filter, soln: 2, result( gotDisjointVariantUnifier(me, interpreter(0), 13, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | options: (delay filter), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_[ 'X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 18 result Configuration: <> < me : User | options: (delay filter), soln: 2, result(gotDisjointVariantUnifier(me, interpreter(0), 13, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) Bye. Maude-Maude3.5.1/tests/Meta/metaIntVariantUnify20000775000175000017510000000041415036121435021060 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntVariantUnify2.maude -no-banner -no-advise \ > metaIntVariantUnify2.out 2>&1 diff $srcdir/metaIntVariantUnify2.expected metaIntVariantUnify2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntVariantUnify.maude0000664000175000017510000000706015036121435022071 0ustar nileshnileshset show timing off . *** *** Test variant unification in the meta-interpreter. *** load metaInterpreter fmod XOR is sort XOR . sort Elem . ops c1 c2 c3 c4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm mod VARIANT-UNIFY-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : UnificationProblem TermList -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var V : Term . var TL : TermList . var S : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . var UP : UnificationProblem . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(UP, TL) > insertedModule(X, Y) => < X : User | AS, problem:(UP, TL), soln: 1, result(nil) > getVariantUnifier(Y, X, 'XOR, UP, TL, '#, 0) . rl < X : User | AS, problem:(UP, TL), soln: N, result(ML) > gotVariantUnifier(X, Y, R, S, Q) => < X : User | AS, problem:(UP, TL), soln: (N + 1), result(ML, gotVariantUnifier(X, Y, R, S, Q)) > getVariantUnifier(Y, X, 'XOR, UP, TL, '#, N) . endm erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . variant unify in XOR : X:XOR + c1 =? Y:XOR + c2 . erew in VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . variant unify in XOR : X:XOR + c1 =? Y:XOR + c2 such that X:XOR + c1 irreducible . mod DISJOINT-VARIANT-UNIFY-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : UnificationProblem TermList -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var V : Term . var TL : TermList . vars S S' : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . var UP : UnificationProblem . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(UP, TL) > insertedModule(X, Y) => < X : User | AS, problem:(UP, TL), soln: 1, result(nil) > getDisjointVariantUnifier(Y, X, 'XOR, UP, TL, '#, 0) . rl < X : User | AS, problem:(UP, TL), soln: N, result(ML) > gotDisjointVariantUnifier(X, Y, R, S, S', Q) => < X : User | AS, problem:(UP, TL), soln: (N + 1), result(ML, gotDisjointVariantUnifier(X, Y, R, S, S', Q)) > getDisjointVariantUnifier(Y, X, 'XOR, UP, TL, '#, N) . endm erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . erew in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntVariantUnify.expected0000664000175000017510000001175715036121435022607 0ustar nileshnilesh========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter( interpreterManager, me, none) . rewrites: 52 result Configuration: <> < me : User | soln: 9, result(gotVariantUnifier(me, interpreter(0), 6, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 18, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotVariantUnifier(me, interpreter( 0), 0, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- 'c2.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem] ; 'Y:XOR <- '0.XOR, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== variant unify in XOR : X + c1 =? Y + c2 . Unifier 1 rewrites: 6 X --> c2 + %1:XOR Y --> c1 + %1:XOR Unifier 2 rewrites: 6 X --> c2 Y --> c1 Unifier 3 rewrites: 24 X --> c1 + c2 + #1:XOR Y --> #1:XOR Unifier 4 rewrites: 24 X --> #1:XOR Y --> c1 + c2 + #1:XOR Unifier 5 rewrites: 24 X --> 0 Y --> c1 + c2 Unifier 6 rewrites: 24 X --> c1 Y --> c2 Unifier 7 rewrites: 24 X --> c1 + c2 Y --> 0 Unifier 8 rewrites: 24 X --> c1 + %1:XOR Y --> c2 + %1:XOR No more unifiers. rewrites: 24 ========================================== erewrite in VARIANT-UNIFY-TEST : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 16 result Configuration: <> < me : User | soln: 4, result(gotVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem, '@), gotVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== variant unify in XOR : X + c1 =? Y + c2 such that X + c1 irreducible . Unifier 1 rewrites: 3 X --> c2 + %1:XOR Y --> c1 + %1:XOR Unifier 2 rewrites: 3 X --> c2 Y --> c1 Unifier 3 rewrites: 3 X --> #1:XOR Y --> c1 + c2 + #1:XOR No more unifiers. rewrites: 3 ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem:('_+_[ 'X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter( interpreterManager, me, none) . rewrites: 52 result Configuration: <> < me : User | soln: 9, result( gotDisjointVariantUnifier(me, interpreter(0), 6, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 18, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], 'Y:XOR <- '%1:XOR, '%), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%), gotDisjointVariantUnifier( me, interpreter(0), 0, 'X:XOR <- '0.XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c1.Elem, 'Y:XOR <- 'c2.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem], 'Y:XOR <- '0.XOR, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], 'Y:XOR <- '_+_['c2.Elem, '@1:XOR], '@)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in DISJOINT-VARIANT-UNIFY-TEST : <> < me : User | problem:('_+_[ 'X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 16 result Configuration: <> < me : User | soln: 4, result( gotDisjointVariantUnifier(me, interpreter(0), 3, 'X:XOR <- '_+_['c2.Elem, '@1:XOR], 'Y:XOR <- '_+_['c1.Elem, '@1:XOR], '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem, 'Y:XOR <- 'c1.Elem, '@), gotDisjointVariantUnifier(me, interpreter(0), 0, 'X:XOR <- '%1:XOR, 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '%1:XOR], '%)), problem:('_+_['X:XOR, 'c1.Elem] =? '_+_['Y:XOR, 'c2.Elem], '_+_['X:XOR, 'c1.Elem]) > noSuchResult(me, interpreter(0), 0, true) Bye. Maude-Maude3.5.1/tests/Meta/metaIntVariantUnify0000775000175000017510000000041015036121435020772 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntVariantUnify.maude -no-banner -no-advise \ > metaIntVariantUnify.out 2>&1 diff $srcdir/metaIntVariantUnify.expected metaIntVariantUnify.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntVariantMatch.maude0000664000175000017510000000372115036121435022033 0ustar nileshnileshset show timing off . *** *** Test variant unification in the meta-interpreter. *** load metaInterpreter fmod XOR is sort XOR . sort Elem . ops c1 c2 c3 c4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm mod VARIANT-MATCH-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : MatchingProblem TermList -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var V : Term . var TL : TermList . var S : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . var MP : MatchingProblem . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(MP, TL) > insertedModule(X, Y) => < X : User | AS, problem:(MP, TL), soln: 1, result(nil) > getVariantMatcher(Y, X, 'XOR, MP, TL, '#, none, 0) . rl < X : User | AS, problem:(MP, TL), soln: N, result(ML) > gotVariantMatcher(X, Y, R, S) => < X : User | AS, problem:(MP, TL), soln: (N + 1), result(ML, gotVariantMatcher(X, Y, R, S)) > getVariantMatcher(Y, X, 'XOR, MP, TL, '#, none, N) . endm erew in VARIANT-MATCH-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem] <=? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . variant match in XOR : X:XOR + c1 <=? Y:XOR + c2 . erew in VARIANT-MATCH-TEST : <> < me : User | problem: ('_+_['X:XOR, 'Y:XOR] <=? '_+_['c1.Elem, 'c2.Elem], empty) > createInterpreter(interpreterManager, me, none) . variant match in XOR : X:XOR + Y:XOR <=? c1 + c2 . Maude-Maude3.5.1/tests/Meta/metaIntVariantMatch.expected0000664000175000017510000000445415036121435022545 0ustar nileshnilesh========================================== erewrite in VARIANT-MATCH-TEST : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem] <=? '_+_['Y:XOR, 'c2.Elem], empty) > createInterpreter( interpreterManager, me, none) . rewrites: 8 result Configuration: <> < me : User | soln: 2, result(gotVariantMatcher(me, interpreter(0), 3, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, 'Y:XOR])), problem:('_+_['X:XOR, 'c1.Elem] <=? '_+_['Y:XOR, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== variant match in XOR : X + c1 <=? Y + c2 . rewrites: 3 Matcher 1 X --> c1 + c2 + Y No more matchers. ========================================== erewrite in VARIANT-MATCH-TEST : <> < me : User | problem:('_+_['X:XOR, 'Y:XOR] <=? '_+_['c1.Elem, 'c2.Elem], empty) > createInterpreter( interpreterManager, me, none) . rewrites: 29 result Configuration: <> < me : User | soln: 9, result(gotVariantMatcher(me, interpreter(0), 10, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- 'c2.Elem), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- 'c2.Elem ; 'Y:XOR <- 'c1.Elem), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem]), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem] ; 'Y:XOR <- '0.XOR), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, '#1:XOR] ; 'Y:XOR <- '_+_['c2.Elem, '#1:XOR]), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '_+_['c2.Elem, '#1:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '#1:XOR]), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '_+_['c1.Elem, 'c2.Elem, '#1:XOR] ; 'Y:XOR <- '#1:XOR), gotVariantMatcher(me, interpreter(0), 0, 'X:XOR <- '#1:XOR ; 'Y:XOR <- '_+_['c1.Elem, 'c2.Elem, '#1:XOR])), problem:('_+_['X:XOR, 'Y:XOR] <=? '_+_['c1.Elem, 'c2.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== variant match in XOR : X + Y <=? c1 + c2 . rewrites: 10 Matcher 1 X --> c1 Y --> c2 Matcher 2 X --> c2 Y --> c1 Matcher 3 X --> 0 Y --> c1 + c2 Matcher 4 X --> c1 + c2 Y --> 0 Matcher 5 X --> c1 + #1:XOR Y --> c2 + #1:XOR Matcher 6 X --> c2 + #1:XOR Y --> c1 + #1:XOR Matcher 7 X --> c1 + c2 + #1:XOR Y --> #1:XOR Matcher 8 X --> #1:XOR Y --> c1 + c2 + #1:XOR No more matchers. Bye. Maude-Maude3.5.1/tests/Meta/metaIntVariantMatch0000775000175000017510000000041015036121435020734 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntVariantMatch.maude -no-banner -no-advise \ > metaIntVariantMatch.out 2>&1 diff $srcdir/metaIntVariantMatch.expected metaIntVariantMatch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntVariant.maude0000664000175000017510000001047015036121435021055 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test variant generation in the meta-interpreter. *** load metaInterpreter fmod XOR is sort XOR . sort Elem . ops c1 c2 c3 c4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm mod VARIANT-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : Term TermList -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . vars T V : Term . var TL : TermList . var S : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(T, TL) > insertedModule(X, Y) => < X : User | AS, problem:(T, TL), soln: 1, result(nil) > getVariant(Y, X, 'XOR, T, TL, false, '#, 0) . rl < X : User | AS, problem:(T, TL), soln: N, result(ML) > gotVariant(X, Y, R, V, S, Q, P, B) => < X : User | AS, problem:(T, TL), soln: (N + 1), result(ML, gotVariant(X, Y, R, V, S, Q, P, B)) > getVariant(Y, X, 'XOR, T, TL, false, '#, N) . endm erew in VARIANT-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, none) . get variants in XOR : X:XOR + c1 . erew in VARIANT-TEST : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > createInterpreter(interpreterManager, me, none) . get variants in XOR : X:XOR + c1 such that X:XOR + a irreducible . erew in VARIANT-TEST : <> < me : User | problem: ('_+_['X:XOR, 'Y:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, none) . get variants in XOR : X:XOR + Y:XOR + c1 . erew in VARIANT-TEST : <> < me : User | problem: ('_+_['X:XOR, 'Y:XOR, 'c1.Elem], ('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem])) > createInterpreter(interpreterManager, me, none) . get variants in XOR : X:XOR + Y:XOR + c1 such that X:XOR + c1, X:XOR + c2 irreducible . mod VARIANT-TEST2 is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op me : -> Oid . op User : -> Cid . op problem:(_,_) : Term TermList -> Attribute . op soln:_ : Nat -> Attribute . op result : MsgList -> Attribute . op _,_ : MsgList MsgList -> MsgList [assoc id: nil] . op nil : -> MsgList . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . vars T V : Term . var TL : TermList . var S : Substitution . var Q : Qid . var B : Bool . var P : Parent . var R : RewriteCount . var ML : MsgList . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XOR, true)) . rl < X : User | AS, problem:(T, TL) > insertedModule(X, Y) => < X : User | AS, problem:(T, TL), soln: 1, result(nil) > getVariant(Y, X, 'XOR, T, TL, true, '#, 0) . rl < X : User | AS, problem:(T, TL), soln: N, result(ML) > gotVariant(X, Y, R, V, S, Q, P, B) => < X : User | AS, problem:(T, TL), soln: (N + 1), result(ML, gotVariant(X, Y, R, V, S, Q, P, B)) > getVariant(Y, X, 'XOR, T, TL, true, '#, N) . endm erew in VARIANT-TEST2 : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, none) . get irredundant variants in XOR : X:XOR + c1 . erew in VARIANT-TEST2 : <> < me : User | problem: ('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > createInterpreter(interpreterManager, me, none) . get irredundant variants in XOR : X:XOR + c1 such that X:XOR + a irreducible . erew in VARIANT-TEST2 : <> < me : User | problem: ('_+_['X:XOR, 'Y:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, none) . get irredundant variants in XOR : X:XOR + Y:XOR + c1 . erew in VARIANT-TEST2 : <> < me : User | problem: ('_+_['X:XOR, 'Y:XOR, 'c1.Elem], ('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem])) > createInterpreter(interpreterManager, me, none) . get irredundant variants in XOR : X:XOR + Y:XOR + c1 such that X:XOR + c1, X:XOR + c2 irreducible . Maude-Maude3.5.1/tests/Meta/metaIntVariant.expected0000664000175000017510000004516415036121435021573 0ustar nileshnilesh========================================== erewrite in VARIANT-TEST : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 14 result Configuration: <> < me : User | soln: 5, result(gotVariant(me, interpreter(0), 0, '_+_['c1.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, none, false), gotVariant(me, interpreter(0), 3, 'c1.Elem, 'X:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], '@, 0, false)), problem:('_+_['X:XOR, 'c1.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== get variants in XOR : c1 + X . Variant 1 rewrites: 0 XOR: c1 + #1:XOR X --> #1:XOR Variant 2 rewrites: 3 Elem: c1 X --> 0 Variant 3 rewrites: 3 XOR: 0 X --> c1 Variant 4 rewrites: 3 XOR: %1:XOR X --> c1 + %1:XOR No more variants. rewrites: 3 ========================================== erewrite in VARIANT-TEST : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 11 result Configuration: <> < me : User | soln: 4, result(gotVariant(me, interpreter(0), 0, '_+_['c1.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, none, false), gotVariant(me, interpreter(0), 2, '0.XOR, 'X:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], '@, 0, false)), problem:('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== get variants in XOR : c1 + X such that X + a irreducible . Variant 1 rewrites: 0 XOR: c1 + #1:XOR X --> #1:XOR Variant 2 rewrites: 2 XOR: 0 X --> c1 Variant 3 rewrites: 2 XOR: %1:XOR X --> c1 + %1:XOR No more variants. rewrites: 2 ========================================== erewrite in VARIANT-TEST : <> < me : User | problem:('_+_['X:XOR, 'Y:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 91 result Configuration: <> < me : User | soln: 22, result(gotVariant(me, interpreter(0), 0, '_+_['c1.Elem, '%1:XOR, '%2:XOR], 'X:XOR <- '%1:XOR ; 'Y:XOR <- '%2:XOR, '%, none, false), gotVariant(me, interpreter(0), 10, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '0.XOR ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '_+_['c1.Elem, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '@1:XOR, 'X:XOR <- '@1:XOR ; 'Y:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR, '@3:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '_+_['@1:XOR, '@3:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '_+_['c1.Elem, '@2:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['@1:XOR, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, 'c1.Elem, 'X:XOR <- '@1:XOR ; 'Y:XOR <- '@1:XOR, '@, 0, false), gotVariant(me, interpreter(0), 28, '%1:XOR, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 1, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR] ; 'Y:XOR <- '0.XOR, '%, 2, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%, 3, true), gotVariant(me, interpreter(0), 0, '_+_[ '%2:XOR, '%3:XOR], 'X:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR] ; 'Y:XOR <- '_+_['%1:XOR, '%2:XOR], '%, 3, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%2:XOR] ; 'Y:XOR <- '_+_['%1:XOR, '%2:XOR], '%, 3, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR] ; 'Y:XOR <- '%2:XOR, '%, 3, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 5, true), gotVariant(me, interpreter( 0), 0, '_+_['%2:XOR, '%3:XOR], 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR], '%, 5, true), gotVariant(me, interpreter(0), 0, '%1:XOR, 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%2:XOR], '%, 5, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '%2:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR], '%, 5, false)), problem:('_+_[ 'X:XOR, 'Y:XOR, 'c1.Elem], empty) > noSuchResult(me, interpreter(0), 8, true) ========================================== get variants in XOR : X + c1 + Y . Variant 1 rewrites: 0 XOR: c1 + #1:XOR + #2:XOR X --> #1:XOR Y --> #2:XOR Variant 2 rewrites: 10 XOR: c1 + %1:XOR X --> 0 Y --> %1:XOR Variant 3 rewrites: 10 XOR: c1 + %1:XOR X --> %1:XOR Y --> 0 Variant 4 rewrites: 10 XOR: %1:XOR + %2:XOR X --> c1 + %2:XOR Y --> %1:XOR Variant 5 rewrites: 10 XOR: %1:XOR X --> c1 Y --> %1:XOR Variant 6 rewrites: 10 XOR: %1:XOR + %2:XOR X --> %1:XOR Y --> c1 + %2:XOR Variant 7 rewrites: 10 XOR: %1:XOR X --> %1:XOR Y --> c1 Variant 8 rewrites: 10 XOR: c1 + %2:XOR + %3:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR + %3:XOR Variant 9 rewrites: 10 XOR: c1 + %2:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR Variant 10 rewrites: 10 XOR: c1 + %2:XOR X --> %1:XOR Y --> %1:XOR + %2:XOR Variant 11 rewrites: 10 Elem: c1 X --> %1:XOR Y --> %1:XOR Variant 12 rewrites: 38 XOR: #1:XOR X --> 0 Y --> c1 + #1:XOR Variant 13 rewrites: 38 XOR: #1:XOR X --> c1 + #1:XOR Y --> 0 Variant 14 rewrites: 38 XOR: 0 X --> c1 + #1:XOR Y --> #1:XOR Variant 15 rewrites: 38 XOR: #2:XOR + #3:XOR X --> c1 + #1:XOR + #3:XOR Y --> #1:XOR + #2:XOR Variant 16 rewrites: 38 XOR: #1:XOR X --> c1 + #2:XOR Y --> #1:XOR + #2:XOR Variant 17 rewrites: 38 XOR: #1:XOR X --> c1 + #1:XOR + #2:XOR Y --> #2:XOR Variant 18 rewrites: 38 XOR: 0 X --> #1:XOR Y --> c1 + #1:XOR Variant 19 rewrites: 38 XOR: #2:XOR + #3:XOR X --> #1:XOR + #2:XOR Y --> c1 + #1:XOR + #3:XOR Variant 20 rewrites: 38 XOR: #1:XOR X --> #1:XOR + #2:XOR Y --> c1 + #2:XOR Variant 21 rewrites: 38 XOR: #1:XOR X --> #2:XOR Y --> c1 + #1:XOR + #2:XOR No more variants. rewrites: 46 ========================================== erewrite in VARIANT-TEST : <> < me : User | problem:('_+_['X:XOR, 'Y:XOR, 'c1.Elem], '_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 50 result Configuration: <> < me : User | soln: 13, result(gotVariant(me, interpreter(0), 0, '_+_['c1.Elem, '%1:XOR, '%2:XOR], 'X:XOR <- '%1:XOR ; 'Y:XOR <- '%2:XOR, '%, none, false), gotVariant(me, interpreter(0), 7, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '@1:XOR, 'X:XOR <- '@1:XOR ; 'Y:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR, '@3:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '_+_['@1:XOR, '@3:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '_+_['c1.Elem, '@2:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['@1:XOR, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, 'c1.Elem, 'X:XOR <- '@1:XOR ; 'Y:XOR <- '@1:XOR, '@, 0, false), gotVariant(me, interpreter(0), 12, '0.XOR, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 2, true), gotVariant(me, interpreter( 0), 0, '_+_['%2:XOR, '%3:XOR], 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR], '%, 2, true), gotVariant(me, interpreter(0), 0, '%1:XOR, 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%2:XOR], '%, 2, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '%2:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR], '%, 2, false)), problem:('_+_[ 'X:XOR, 'Y:XOR, 'c1.Elem], '_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem]) > noSuchResult(me, interpreter(0), 4, true) ========================================== get variants in XOR : X + c1 + Y such that X + c1, X + c2 irreducible . Variant 1 rewrites: 0 XOR: c1 + #1:XOR + #2:XOR X --> #1:XOR Y --> #2:XOR Variant 2 rewrites: 7 XOR: c1 + %1:XOR X --> %1:XOR Y --> 0 Variant 3 rewrites: 7 XOR: %1:XOR + %2:XOR X --> %1:XOR Y --> c1 + %2:XOR Variant 4 rewrites: 7 XOR: %1:XOR X --> %1:XOR Y --> c1 Variant 5 rewrites: 7 XOR: c1 + %2:XOR + %3:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR + %3:XOR Variant 6 rewrites: 7 XOR: c1 + %2:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR Variant 7 rewrites: 7 XOR: c1 + %2:XOR X --> %1:XOR Y --> %1:XOR + %2:XOR Variant 8 rewrites: 7 Elem: c1 X --> %1:XOR Y --> %1:XOR Variant 9 rewrites: 19 XOR: 0 X --> #1:XOR Y --> c1 + #1:XOR Variant 10 rewrites: 19 XOR: #2:XOR + #3:XOR X --> #1:XOR + #2:XOR Y --> c1 + #1:XOR + #3:XOR Variant 11 rewrites: 19 XOR: #1:XOR X --> #1:XOR + #2:XOR Y --> c1 + #2:XOR Variant 12 rewrites: 19 XOR: #1:XOR X --> #2:XOR Y --> c1 + #1:XOR + #2:XOR No more variants. rewrites: 23 ========================================== erewrite in VARIANT-TEST2 : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 14 result Configuration: <> < me : User | soln: 5, result(gotVariant(me, interpreter(0), 3, '_+_['c1.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, none, false), gotVariant(me, interpreter(0), 0, 'c1.Elem, 'X:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], '@, 0, false)), problem:('_+_['X:XOR, 'c1.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== get irredundant variants in XOR : c1 + X . rewrites: 3 Variant 1 XOR: c1 + #1:XOR X --> #1:XOR Variant 2 Elem: c1 X --> 0 Variant 3 XOR: 0 X --> c1 Variant 4 XOR: %1:XOR X --> c1 + %1:XOR No more variants. ========================================== erewrite in VARIANT-TEST2 : <> < me : User | problem:('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 11 result Configuration: <> < me : User | soln: 4, result(gotVariant(me, interpreter(0), 2, '_+_['c1.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, none, false), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- '_+_['c1.Elem, '@1:XOR], '@, 0, false)), problem:('_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'a.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== get irredundant variants in XOR : c1 + X such that X + a irreducible . rewrites: 2 Variant 1 XOR: c1 + #1:XOR X --> #1:XOR Variant 2 XOR: 0 X --> c1 Variant 3 XOR: %1:XOR X --> c1 + %1:XOR No more variants. ========================================== erewrite in VARIANT-TEST2 : <> < me : User | problem:('_+_['X:XOR, 'Y:XOR, 'c1.Elem], empty) > createInterpreter(interpreterManager, me, none) . rewrites: 91 result Configuration: <> < me : User | soln: 22, result(gotVariant(me, interpreter(0), 46, '_+_['c1.Elem, '%1:XOR, '%2:XOR], 'X:XOR <- '%1:XOR ; 'Y:XOR <- '%2:XOR, '%, none, false), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '0.XOR ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '_+_['c1.Elem, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '@1:XOR, 'X:XOR <- 'c1.Elem ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '@1:XOR, 'X:XOR <- '@1:XOR ; 'Y:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR, '@3:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '_+_['@1:XOR, '@3:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '_+_['c1.Elem, '@2:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['@1:XOR, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, 'c1.Elem, 'X:XOR <- '@1:XOR ; 'Y:XOR <- '@1:XOR, '@, 0, false), gotVariant(me, interpreter(0), 0, '%1:XOR, 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 1, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR] ; 'Y:XOR <- '0.XOR, '%, 2, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR] ; 'Y:XOR <- '%1:XOR, '%, 3, true), gotVariant(me, interpreter(0), 0, '_+_[ '%2:XOR, '%3:XOR], 'X:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR] ; 'Y:XOR <- '_+_['%1:XOR, '%2:XOR], '%, 3, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%2:XOR] ; 'Y:XOR <- '_+_['%1:XOR, '%2:XOR], '%, 3, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR] ; 'Y:XOR <- '%2:XOR, '%, 3, true), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 5, true), gotVariant(me, interpreter( 0), 0, '_+_['%2:XOR, '%3:XOR], 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR], '%, 5, true), gotVariant(me, interpreter(0), 0, '%1:XOR, 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%2:XOR], '%, 5, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '%2:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR], '%, 5, false)), problem:('_+_[ 'X:XOR, 'Y:XOR, 'c1.Elem], empty) > noSuchResult(me, interpreter(0), 0, true) ========================================== get irredundant variants in XOR : X + c1 + Y . rewrites: 46 Variant 1 XOR: c1 + #1:XOR + #2:XOR X --> #1:XOR Y --> #2:XOR Variant 2 XOR: c1 + %1:XOR X --> 0 Y --> %1:XOR Variant 3 XOR: c1 + %1:XOR X --> %1:XOR Y --> 0 Variant 4 XOR: %1:XOR + %2:XOR X --> c1 + %2:XOR Y --> %1:XOR Variant 5 XOR: %1:XOR X --> c1 Y --> %1:XOR Variant 6 XOR: %1:XOR + %2:XOR X --> %1:XOR Y --> c1 + %2:XOR Variant 7 XOR: %1:XOR X --> %1:XOR Y --> c1 Variant 8 XOR: c1 + %2:XOR + %3:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR + %3:XOR Variant 9 XOR: c1 + %2:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR Variant 10 XOR: c1 + %2:XOR X --> %1:XOR Y --> %1:XOR + %2:XOR Variant 11 Elem: c1 X --> %1:XOR Y --> %1:XOR Variant 12 XOR: #1:XOR X --> 0 Y --> c1 + #1:XOR Variant 13 XOR: #1:XOR X --> c1 + #1:XOR Y --> 0 Variant 14 XOR: 0 X --> c1 + #1:XOR Y --> #1:XOR Variant 15 XOR: #2:XOR + #3:XOR X --> c1 + #1:XOR + #3:XOR Y --> #1:XOR + #2:XOR Variant 16 XOR: #1:XOR X --> c1 + #2:XOR Y --> #1:XOR + #2:XOR Variant 17 XOR: #1:XOR X --> c1 + #1:XOR + #2:XOR Y --> #2:XOR Variant 18 XOR: 0 X --> #1:XOR Y --> c1 + #1:XOR Variant 19 XOR: #2:XOR + #3:XOR X --> #1:XOR + #2:XOR Y --> c1 + #1:XOR + #3:XOR Variant 20 XOR: #1:XOR X --> #1:XOR + #2:XOR Y --> c1 + #2:XOR Variant 21 XOR: #1:XOR X --> #2:XOR Y --> c1 + #1:XOR + #2:XOR No more variants. ========================================== erewrite in VARIANT-TEST2 : <> < me : User | problem:('_+_['X:XOR, 'Y:XOR, 'c1.Elem], '_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem]) > createInterpreter(interpreterManager, me, none) . rewrites: 50 result Configuration: <> < me : User | soln: 13, result(gotVariant(me, interpreter(0), 23, '_+_['c1.Elem, '%1:XOR, '%2:XOR], 'X:XOR <- '%1:XOR ; 'Y:XOR <- '%2:XOR, '%, none, false), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@1:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '0.XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ '@1:XOR, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '@1:XOR, 'X:XOR <- '@1:XOR ; 'Y:XOR <- 'c1.Elem, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR, '@3:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '_+_['@1:XOR, '@3:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, '_+_['c1.Elem, '@2:XOR], 'X:XOR <- '_+_['@1:XOR, '@2:XOR] ; 'Y:XOR <- '@1:XOR, '@, 0, true), gotVariant(me, interpreter(0), 0, '_+_[ 'c1.Elem, '@2:XOR], 'X:XOR <- '@1:XOR ; 'Y:XOR <- '_+_['@1:XOR, '@2:XOR], '@, 0, true), gotVariant(me, interpreter( 0), 0, 'c1.Elem, 'X:XOR <- '@1:XOR ; 'Y:XOR <- '@1:XOR, '@, 0, false), gotVariant(me, interpreter(0), 0, '0.XOR, 'X:XOR <- '%1:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR], '%, 2, true), gotVariant(me, interpreter( 0), 0, '_+_['%2:XOR, '%3:XOR], 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%3:XOR], '%, 2, true), gotVariant(me, interpreter(0), 0, '%1:XOR, 'X:XOR <- '_+_['%1:XOR, '%2:XOR] ; 'Y:XOR <- '_+_['c1.Elem, '%2:XOR], '%, 2, true), gotVariant(me, interpreter( 0), 0, '%1:XOR, 'X:XOR <- '%2:XOR ; 'Y:XOR <- '_+_['c1.Elem, '%1:XOR, '%2:XOR], '%, 2, false)), problem:('_+_[ 'X:XOR, 'Y:XOR, 'c1.Elem], '_+_['X:XOR, 'c1.Elem], '_+_['X:XOR, 'c2.Elem]) > noSuchResult(me, interpreter(0), 0, true) ========================================== get irredundant variants in XOR : X + c1 + Y such that X + c1, X + c2 irreducible . rewrites: 23 Variant 1 XOR: c1 + #1:XOR + #2:XOR X --> #1:XOR Y --> #2:XOR Variant 2 XOR: c1 + %1:XOR X --> %1:XOR Y --> 0 Variant 3 XOR: %1:XOR + %2:XOR X --> %1:XOR Y --> c1 + %2:XOR Variant 4 XOR: %1:XOR X --> %1:XOR Y --> c1 Variant 5 XOR: c1 + %2:XOR + %3:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR + %3:XOR Variant 6 XOR: c1 + %2:XOR X --> %1:XOR + %2:XOR Y --> %1:XOR Variant 7 XOR: c1 + %2:XOR X --> %1:XOR Y --> %1:XOR + %2:XOR Variant 8 Elem: c1 X --> %1:XOR Y --> %1:XOR Variant 9 XOR: 0 X --> #1:XOR Y --> c1 + #1:XOR Variant 10 XOR: #2:XOR + #3:XOR X --> #1:XOR + #2:XOR Y --> c1 + #1:XOR + #3:XOR Variant 11 XOR: #1:XOR X --> #1:XOR + #2:XOR Y --> c1 + #2:XOR Variant 12 XOR: #1:XOR X --> #2:XOR Y --> c1 + #1:XOR + #2:XOR No more variants. Bye. Maude-Maude3.5.1/tests/Meta/metaIntVariant0000775000175000017510000000036415036121435017767 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntVariant.maude -no-banner -no-advise \ > metaIntVariant.out 2>&1 diff $srcdir/metaIntVariant.expected metaIntVariant.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntUnify.maude0000664000175000017510000001626715036121435020555 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test unification and disjoint unification in the meta-interpreter. *** load metaInterpreter mod UNIFY-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getUnifier(Y, X, 'RAT, U, '#, 0) . rl < X : User | AS, problem: U, soln: N > gotUnifier(X, Y, S, Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotUnifier(X, Y, S, Q) > getUnifier(Y, X, 'RAT, U, '#, N) . endm erew in UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_['Z:Nat, 'W:Nat]) > createInterpreter(interpreterManager, me, none) . unify in RAT : X:Nat + Y:Nat =? W:Nat + Z:Nat . erew in UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_['Z:Nat, 'W:Nat]) > createInterpreter(interpreterManager, me, none) . unify in RAT : X:Nat + X:Nat =? W:Nat + Z:Nat . fmod FOO is sort Foo . op __ : Foo Foo -> Foo [assoc] . endfm mod UNIFY-TEST2 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('FOO, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getUnifier(Y, X, 'FOO, U, '%, 0) . rl < X : User | AS, problem: U, soln: N > gotUnifier(X, Y, S, Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotUnifier(X, Y, S, Q) > getUnifier(Y, X, 'FOO, U, '%, N) . endm erew in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['Z:Foo, 'W:Foo]) > createInterpreter(interpreterManager, me, none) . unify in FOO : X:Foo Y:Foo =? W:Foo Z:Foo . erew in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'X:Foo] =? '__['Z:Foo, 'W:Foo]) > createInterpreter(interpreterManager, me, none) . unify in FOO : X:Foo X:Foo =? W:Foo Z:Foo . erew in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['Z:Foo, 'X:Foo]) > createInterpreter(interpreterManager, me, none) . unify in FOO : X:Foo Y:Foo =? W:Foo X:Foo . mod DISJOINT-UNIFY-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S S' : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getDisjointUnifier(Y, X, 'RAT, U, '@, 0) . rl < X : User | AS, problem: U, soln: N > gotDisjointUnifier(X, Y, S, S', Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotDisjointUnifier(X, Y, S, S', Q) > getDisjointUnifier(Y, X, 'RAT, U, '@, N) . endm erew in DISJOINT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat]) > createInterpreter(interpreterManager, me, none) . erew in DISJOINT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_['X:Nat, 'Y:Nat]) > createInterpreter(interpreterManager, me, none) . mod DISJOINT-UNIFY-TEST2 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S S' : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('FOO, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getDisjointUnifier(Y, X, 'FOO, U, '#, 0) . rl < X : User | AS, problem: U, soln: N > gotDisjointUnifier(X, Y, S, S', Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotDisjointUnifier(X, Y, S, S', Q) > getDisjointUnifier(Y, X, 'FOO, U, '#, N) . endm erew in DISJOINT-UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['X:Foo, 'Y:Foo]) > createInterpreter(interpreterManager, me, none) . erew in DISJOINT-UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo, 'X:Foo] =? '__['X:Foo, 'X:Foo]) > createInterpreter(interpreterManager, me, none) . *** irredundant unifiers fmod BAG is sorts Elt Bag . subsort Elt < Bag . op empty : -> Bag . op __ : Bag Bag -> Bag [assoc comm id: empty] . endfm mod IRRED-UNIFY-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('BAG, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getIrredundantUnifier(Y, X, 'BAG, U, '#, 0) . rl < X : User | AS, problem: U, soln: N > gotIrredundantUnifier(X, Y, S, Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotIrredundantUnifier(X, Y, S, Q) > getIrredundantUnifier(Y, X, 'BAG, U, '#, N) . endm erew in IRRED-UNIFY-TEST : <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag]) > createInterpreter(interpreterManager, me, none) . mod IRRED-DISJOINT-UNIFY-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op problem:_ : UnificationProblem -> Attribute . op soln:_ : Nat -> Attribute . op result:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var U : UnificationProblem . var S S' : Substitution . var Q : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('BAG, true)) . rl < X : User | AS, problem: U > insertedModule(X, Y) => < X : User | AS, problem: U, soln: 1 > getIrredundantDisjointUnifier(Y, X, 'BAG, U, '@, 0) . rl < X : User | AS, problem: U, soln: N > gotIrredundantDisjointUnifier(X, Y, S, S', Q) => < X : User | AS, problem: U, soln: (N + 1), result: gotIrredundantDisjointUnifier(X, Y, S, S', Q) > getIrredundantDisjointUnifier(Y, X, 'BAG, U, '@, N) . endm erew in IRRED-DISJOINT-UNIFY-TEST : <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag]) > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntUnify.expected0000664000175000017510000003110315036121435021245 0ustar nileshnilesh========================================== erewrite in UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_['Z:Nat, 'W:Nat]) > createInterpreter(interpreterManager, me, none) . rewrites: 19 result Configuration: <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_[ 'Z:Nat, 'W:Nat]), soln: 8, result: gotUnifier(me, interpreter(0), 'W:Nat <- '%2:Nat ; 'X:Nat <- '%1:Nat ; 'Y:Nat <- '%2:Nat ; 'Z:Nat <- '%1:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '%2:Nat ; 'X:Nat <- '%1:Nat ; 'Y:Nat <- '_+_['%2:Nat, '%3:Nat] ; 'Z:Nat <- '_+_['%1:Nat, '%3:Nat], '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '%2:Nat ; 'X:Nat <- '%2:Nat ; 'Y:Nat <- '%1:Nat ; 'Z:Nat <- '%1:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '%2:Nat ; 'X:Nat <- '_+_['%2:Nat, '%3:Nat] ; 'Y:Nat <- '%1:Nat ; 'Z:Nat <- '_+_['%1:Nat, '%3:Nat], '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%1:Nat, '%3:Nat] ; 'X:Nat <- '%1:Nat ; 'Y:Nat <- '_+_['%2:Nat, '%3:Nat] ; 'Z:Nat <- '%2:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%1:Nat, '%3:Nat] ; 'X:Nat <- '_+_['%2:Nat, '%3:Nat] ; 'Y:Nat <- '%1:Nat ; 'Z:Nat <- '%2:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%3:Nat, '%4:Nat] ; 'X:Nat <- '_+_['%1:Nat, '%3:Nat] ; 'Y:Nat <- '_+_['%2:Nat, '%4:Nat] ; 'Z:Nat <- '_+_['%1:Nat, '%2:Nat], '%) > noSuchResult(me, interpreter(0), true) ========================================== unify in RAT : X:Nat + Y:Nat =? W:Nat + Z . Unifier 1 X:Nat --> #1:Nat + #3:Nat Y:Nat --> #2:Nat + #4:Nat Z --> #1:Nat + #2:Nat W:Nat --> #3:Nat + #4:Nat Unifier 2 X:Nat --> #2:Nat + #3:Nat Y:Nat --> #1:Nat Z --> #1:Nat + #3:Nat W:Nat --> #2:Nat Unifier 3 X:Nat --> #1:Nat Y:Nat --> #2:Nat + #3:Nat Z --> #1:Nat + #3:Nat W:Nat --> #2:Nat Unifier 4 X:Nat --> #2:Nat + #3:Nat Y:Nat --> #1:Nat Z --> #2:Nat W:Nat --> #1:Nat + #3:Nat Unifier 5 X:Nat --> #1:Nat Y:Nat --> #2:Nat Z --> #1:Nat W:Nat --> #2:Nat Unifier 6 X:Nat --> #1:Nat Y:Nat --> #2:Nat + #3:Nat Z --> #2:Nat W:Nat --> #1:Nat + #3:Nat Unifier 7 X:Nat --> #2:Nat Y:Nat --> #1:Nat Z --> #1:Nat W:Nat --> #2:Nat ========================================== erewrite in UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_['Z:Nat, 'W:Nat]) > createInterpreter(interpreterManager, me, none) . rewrites: 15 result Configuration: <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_[ 'Z:Nat, 'W:Nat]), soln: 6, result: gotUnifier(me, interpreter(0), 'W:Nat <- '%1:Nat ; 'X:Nat <- '%1:Nat ; 'Z:Nat <- '%1:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '%1:Nat ; 'X:Nat <- '_+_['%1:Nat, '%2:Nat] ; 'Z:Nat <- '_+_['%1:Nat, '%2:Nat, '%2:Nat], '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%2:Nat, '%2:Nat] ; 'X:Nat <- '_+_['%1:Nat, '%2:Nat] ; 'Z:Nat <- '_+_['%1:Nat, '%1:Nat], '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%1:Nat, '%2:Nat, '%2:Nat] ; 'X:Nat <- '_+_['%1:Nat, '%2:Nat] ; 'Z:Nat <- '%1:Nat, '%), result: gotUnifier(me, interpreter(0), 'W:Nat <- '_+_['%2:Nat, '%3:Nat, '%3:Nat] ; 'X:Nat <- '_+_['%1:Nat, '%2:Nat, '%3:Nat] ; 'Z:Nat <- '_+_['%1:Nat, '%1:Nat, '%2:Nat], '%) > noSuchResult(me, interpreter(0), true) ========================================== unify in RAT : X:Nat + X:Nat =? W:Nat + Z . Unifier 1 X:Nat --> #1:Nat + #2:Nat + #3:Nat Z --> #1:Nat + #1:Nat + #2:Nat W:Nat --> #2:Nat + #3:Nat + #3:Nat Unifier 2 X:Nat --> #1:Nat + #2:Nat Z --> #1:Nat + #2:Nat + #2:Nat W:Nat --> #1:Nat Unifier 3 X:Nat --> #1:Nat + #2:Nat Z --> #1:Nat + #1:Nat W:Nat --> #2:Nat + #2:Nat Unifier 4 X:Nat --> #1:Nat + #2:Nat Z --> #1:Nat W:Nat --> #1:Nat + #2:Nat + #2:Nat Unifier 5 X:Nat --> #1:Nat Z --> #1:Nat W:Nat --> #1:Nat ========================================== erewrite in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['Z:Foo, 'W:Foo]) > createInterpreter(interpreterManager, me, none) . rewrites: 9 result Configuration: <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__[ 'Z:Foo, 'W:Foo]), soln: 4, result: gotUnifier(me, interpreter(0), 'W:Foo <- '#2:Foo ; 'X:Foo <- '#1:Foo ; 'Y:Foo <- '#2:Foo ; 'Z:Foo <- '#1:Foo, '#), result: gotUnifier(me, interpreter(0), 'W:Foo <- '#2:Foo ; 'X:Foo <- '#1:Foo ; 'Y:Foo <- '__['#3:Foo, '#2:Foo] ; 'Z:Foo <- '__['#1:Foo, '#3:Foo], '#), result: gotUnifier(me, interpreter(0), 'W:Foo <- '__['#3:Foo, '#1:Foo] ; 'X:Foo <- '__['#2:Foo, '#3:Foo] ; 'Y:Foo <- '#1:Foo ; 'Z:Foo <- '#2:Foo, '#) > noSuchResult(me, interpreter(0), true) ========================================== unify in FOO : X:Foo Y:Foo =? W:Foo Z:Foo . Unifier 1 X:Foo --> #2:Foo #3:Foo Y:Foo --> #1:Foo W:Foo --> #2:Foo Z:Foo --> #3:Foo #1:Foo Unifier 2 X:Foo --> #1:Foo Y:Foo --> #3:Foo #2:Foo W:Foo --> #1:Foo #3:Foo Z:Foo --> #2:Foo Unifier 3 X:Foo --> #1:Foo Y:Foo --> #2:Foo W:Foo --> #1:Foo Z:Foo --> #2:Foo ========================================== erewrite in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'X:Foo] =? '__['Z:Foo, 'W:Foo]) > createInterpreter(interpreterManager, me, none) . rewrites: 9 result Configuration: <> < me : User | problem: ('__['X:Foo, 'X:Foo] =? '__[ 'Z:Foo, 'W:Foo]), soln: 4, result: gotUnifier(me, interpreter(0), 'W:Foo <- '#1:Foo ; 'X:Foo <- '#1:Foo ; 'Z:Foo <- '#1:Foo, '#), result: gotUnifier(me, interpreter(0), 'W:Foo <- '#1:Foo ; 'X:Foo <- '__['#2:Foo, '#1:Foo] ; 'Z:Foo <- '__['#2:Foo, '#1:Foo, '#2:Foo], '#), result: gotUnifier(me, interpreter(0), 'W:Foo <- '__['#2:Foo, '#1:Foo, '#2:Foo] ; 'X:Foo <- '__['#1:Foo, '#2:Foo] ; 'Z:Foo <- '#1:Foo, '#) > noSuchResult(me, interpreter(0), true) ========================================== unify in FOO : X:Foo X:Foo =? W:Foo Z:Foo . Unifier 1 X:Foo --> #2:Foo #1:Foo W:Foo --> #2:Foo #1:Foo #2:Foo Z:Foo --> #1:Foo Unifier 2 X:Foo --> #1:Foo #2:Foo W:Foo --> #1:Foo Z:Foo --> #2:Foo #1:Foo #2:Foo Unifier 3 X:Foo --> #1:Foo W:Foo --> #1:Foo Z:Foo --> #1:Foo ========================================== erewrite in UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['Z:Foo, 'X:Foo]) > createInterpreter(interpreterManager, me, none) . Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. rewrites: 7 result Configuration: <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__[ 'Z:Foo, 'X:Foo]), soln: 3, result: gotUnifier(me, interpreter(0), 'X:Foo <- '#1:Foo ; 'Y:Foo <- '#1:Foo ; 'Z:Foo <- '#1:Foo, '#), result: gotUnifier(me, interpreter(0), 'X:Foo <- '#1:Foo ; 'Y:Foo <- '__['#2:Foo, '#1:Foo] ; 'Z:Foo <- '__['#1:Foo, '#2:Foo], '#) > noSuchResult(me, interpreter(0), false) ========================================== unify in FOO : X:Foo Y:Foo =? W:Foo X:Foo . Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. Unifier 1 X:Foo --> #1:Foo Y:Foo --> #2:Foo #1:Foo W:Foo --> #1:Foo #2:Foo Unifier 2 X:Foo --> #1:Foo Y:Foo --> #1:Foo W:Foo --> #1:Foo Warning: Some unifiers may have been missed due to incomplete unification algorithm(s). ========================================== erewrite in DISJOINT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat]) > createInterpreter(interpreterManager, me, none) . rewrites: 19 result Configuration: <> < me : User | problem: ('_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat]), soln: 8, result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#2:Nat, 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#2:Nat, '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '#1:Nat ; 'Y:Nat <- '_+_['#2:Nat, '#3:Nat], 'X:Nat <- '#2:Nat ; 'Y:Nat <- '_+_['#1:Nat, '#3:Nat], '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '#1:Nat ; 'Y:Nat <- '_+_['#2:Nat, '#3:Nat], 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '#2:Nat, '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '#2:Nat ; 'Y:Nat <- '#1:Nat, 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#2:Nat, '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '_+_['#2:Nat, '#4:Nat], 'X:Nat <- '_+_['#1:Nat, '#2:Nat] ; 'Y:Nat <- '_+_['#3:Nat, '#4:Nat], '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#2:Nat, '#3:Nat] ; 'Y:Nat <- '#1:Nat, 'X:Nat <- '#2:Nat ; 'Y:Nat <- '_+_['#1:Nat, '#3:Nat], '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#2:Nat, '#3:Nat] ; 'Y:Nat <- '#1:Nat, 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '#2:Nat, '#) > noSuchResult(me, interpreter(0), true) ========================================== erewrite in DISJOINT-UNIFY-TEST : <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_['X:Nat, 'Y:Nat]) > createInterpreter(interpreterManager, me, none) . rewrites: 15 result Configuration: <> < me : User | problem: ('_+_['X:Nat, 'X:Nat] =? '_+_[ 'X:Nat, 'Y:Nat]), soln: 6, result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '#1:Nat, 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#1:Nat, '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#1:Nat, '#2:Nat], 'X:Nat <- '#1:Nat ; 'Y:Nat <- '_+_['#1:Nat, '#2:Nat, '#2:Nat], '#), result: gotDisjointUnifier( me, interpreter(0), 'X:Nat <- '_+_['#1:Nat, '#2:Nat], 'X:Nat <- '_+_['#1:Nat, '#1:Nat] ; 'Y:Nat <- '_+_['#2:Nat, '#2:Nat], '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#1:Nat, '#2:Nat], 'X:Nat <- '_+_['#1:Nat, '#2:Nat, '#2:Nat] ; 'Y:Nat <- '#1:Nat, '#), result: gotDisjointUnifier(me, interpreter(0), 'X:Nat <- '_+_['#1:Nat, '#2:Nat, '#3:Nat], 'X:Nat <- '_+_['#1:Nat, '#1:Nat, '#2:Nat] ; 'Y:Nat <- '_+_['#2:Nat, '#3:Nat, '#3:Nat], '#) > noSuchResult(me, interpreter(0), true) ========================================== erewrite in DISJOINT-UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__['X:Foo, 'Y:Foo]) > createInterpreter(interpreterManager, me, none) . rewrites: 9 result Configuration: <> < me : User | problem: ('__['X:Foo, 'Y:Foo] =? '__[ 'X:Foo, 'Y:Foo]), soln: 4, result: gotDisjointUnifier(me, interpreter(0), 'X:Foo <- '%1:Foo ; 'Y:Foo <- '%2:Foo, 'X:Foo <- '%1:Foo ; 'Y:Foo <- '%2:Foo, '%), result: gotDisjointUnifier(me, interpreter(0), 'X:Foo <- '%1:Foo ; 'Y:Foo <- '__['%3:Foo, '%2:Foo], 'X:Foo <- '__['%1:Foo, '%3:Foo] ; 'Y:Foo <- '%2:Foo, '%), result: gotDisjointUnifier(me, interpreter(0), 'X:Foo <- '__['%2:Foo, '%3:Foo] ; 'Y:Foo <- '%1:Foo, 'X:Foo <- '%2:Foo ; 'Y:Foo <- '__['%3:Foo, '%1:Foo], '%) > noSuchResult(me, interpreter(0), true) ========================================== erewrite in DISJOINT-UNIFY-TEST2 : <> < me : User | problem: ('__['X:Foo, 'Y:Foo, 'X:Foo] =? '__['X:Foo, 'X:Foo]) > createInterpreter( interpreterManager, me, none) . Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. rewrites: 7 result Configuration: <> < me : User | problem: ('__['X:Foo, 'Y:Foo, 'X:Foo] =? '__['X:Foo, 'X:Foo]), soln: 3, result: gotDisjointUnifier(me, interpreter( 0), 'X:Foo <- '%1:Foo ; 'Y:Foo <- '__['%1:Foo, '%1:Foo], 'X:Foo <- '__['%1:Foo, '%1:Foo], '%), result: gotDisjointUnifier(me, interpreter(0), 'X:Foo <- '%1:Foo ; 'Y:Foo <- '__['%2:Foo, '%1:Foo, '%1:Foo, '%2:Foo], 'X:Foo <- '__['%1:Foo, '%2:Foo, '%1:Foo], '%) > noSuchResult(me, interpreter( 0), false) ========================================== erewrite in IRRED-UNIFY-TEST : <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag]) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__[ 'P:Bag, 'Q:Bag]), soln: 2, result: gotIrredundantUnifier(me, interpreter( 0), 'L:Bag <- '__['%2:Bag, '%4:Bag] ; 'M:Bag <- '__['%1:Bag, '%3:Bag] ; 'P:Bag <- '__['%3:Bag, '%4:Bag] ; 'Q:Bag <- '__['%1:Bag, '%2:Bag], '%) > noSuchResult(me, interpreter(0), true) ========================================== erewrite in IRRED-DISJOINT-UNIFY-TEST : <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__['P:Bag, 'Q:Bag]) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | problem: ('__['L:Bag, 'M:Bag] =? '__[ 'P:Bag, 'Q:Bag]), soln: 2, result: gotIrredundantDisjointUnifier(me, interpreter(0), 'L:Bag <- '__['#2:Bag, '#4:Bag] ; 'M:Bag <- '__['#1:Bag, '#3:Bag], 'P:Bag <- '__['#3:Bag, '#4:Bag] ; 'Q:Bag <- '__['#1:Bag, '#2:Bag], '#) > noSuchResult(me, interpreter(0), true) Bye. Maude-Maude3.5.1/tests/Meta/metaIntUnify0000775000175000017510000000035415036121435017454 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntUnify.maude -no-banner -no-advise \ > metaIntUnify.out 2>&1 diff $srcdir/metaIntUnify.expected metaIntUnify.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntStrategy.maude0000664000175000017510000000605115036121435021253 0ustar nileshnileshset show timing off . set show advisories off . load metaInterpreter fmod ROMAN-NUMERALS is sort RomanSymbol GenRomanNumeral . subsort RomanSymbol < GenRomanNumeral . ops M D C L X V I : -> RomanSymbol . op __ : GenRomanNumeral GenRomanNumeral -> GenRomanNumeral [ctor assoc] . var S : RomanSymbol . op _>_ : RomanSymbol RomanSymbol -> Bool . eq M > S = S =/= M . eq D > S = S =/= M and S =/= D . eq C > S = S == L or L > S . eq L > S = S == X or X > S . eq X > S = S == V or S == I . eq V > S = S == I . eq I > S = false . endfm mod RN-SIMPL-RULES is protecting ROMAN-NUMERALS . vars S1 S2 : RomanSymbol . rl [simp] : I I I I I => V . rl [simp] : V V => X . rl [simp] : X X X X X => L . rl [simp] : L L => C . rl [simp] : C C C C C => D . rl [simp] : D D => M . rl [add] : I X => V I I I I . rl [add] : I V => I I I I . rl [add] : X L => X X X X . rl [add] : X C => L X X X X . rl [add] : C D => C C C C . rl [add] : C M => D X X X X . crl [sort] : S1 S2 => S2 S1 if S2 > S1 . endm smod RN-SIMP is protecting RN-SIMPL-RULES . strats simplify additive-normal-form @ GenRomanNumeral . sd simplify := simp ? simplify : idle . sd additive-normal-form := simplify ; add ! ; sort ! ; simplify . endsm mod RUN is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op option:_ : SrewriteOption -> Attribute . op input:_@_ : Term Strategy -> Attribute . op output:_ : TermList -> Attribute . op solcount:_ : Nat -> Attribute . op n1999 : -> Term . eq n1999 = '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol] . vars X Y Z : Oid . var C : RewriteCount . var O : SrewriteOption . vars T R : Term . var Ty : Type . var S : Strategy . var TL : TermList . var N : Nat . var Attrs : AttributeSet . rl < X : User | Attrs > createdInterpreter(X, Y, Z) => < X : User | Attrs > insertModule(Z, X, upModule('RN-SIMP, true)) . rl < X : User | option: O, (input: T @ S), Attrs > insertedModule(X, Y) => < X : User | option: O, (input: T @ S), solcount: 0, Attrs > srewriteTerm(Y, X, 'RN-SIMP, T, S, O, 0) . rl < X : User | option: O, (input: T @ S), solcount: N, output: TL, Attrs > srewroteTerm(X, Y, C, R, Ty) => < X : User | option: O, (input: T @ S), solcount: s(N), output: (TL , R), Attrs > srewriteTerm(Y, X, 'RN-SIMP, T, S, O, s(N)) . endm erew in RUN : <> < me : User | option: breadthFirst, output: empty, input: n1999 @ 'additive-normal-form[[empty]] > createInterpreter(interpreterManager, me, none) . erew in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'additive-normal-form[[empty]] > createInterpreter(interpreterManager, me, none) . erew in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'add[none]{empty} > createInterpreter(interpreterManager, me, none) . erew in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'sort[none]{empty} ; 'add[none]{empty} > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntStrategy.expected0000664000175000017510000000763015036121435021765 0ustar nileshnilesh========================================== erewrite in RUN : <> < me : User | option: breadthFirst, output: empty, input: n1999 @ 'additive-normal-form[[empty]] > createInterpreter( interpreterManager, me, none) . rewrites: 110 result Configuration: <> < me : User | option: breadthFirst, output: ('__[ 'M.RomanSymbol, 'D.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'V.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol]), solcount: 1, input: '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol] @ 'additive-normal-form[[empty]] > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'additive-normal-form[[empty]] > createInterpreter( interpreterManager, me, none) . rewrites: 110 result Configuration: <> < me : User | option: depthFirst, output: ('__[ 'M.RomanSymbol, 'D.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'V.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol]), solcount: 1, input: '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol] @ 'additive-normal-form[[empty]] > noSuchResult(me, interpreter(0), 11) ========================================== erewrite in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'add[none]{empty} > createInterpreter(interpreterManager, me, none) . rewrites: 10 result Configuration: <> < me : User | option: depthFirst, output: ('__[ 'M.RomanSymbol, 'D.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol], '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'V.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol], '__[ 'M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'L.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol]), solcount: 3, input: '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol] @ 'add[none]{empty} > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in RUN : <> < me : User | option: depthFirst, output: empty, input: n1999 @ 'sort[none]{empty} ; 'add[none]{empty} > createInterpreter( interpreterManager, me, none) . rewrites: 74 result Configuration: <> < me : User | option: depthFirst, output: ('__[ 'M.RomanSymbol, 'M.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'V.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol], '__['M.RomanSymbol, 'M.RomanSymbol, 'C.RomanSymbol, 'L.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol], '__[ 'M.RomanSymbol, 'D.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol], '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'V.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol, 'I.RomanSymbol], '__[ 'M.RomanSymbol, 'D.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'X.RomanSymbol, 'I.RomanSymbol], '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'L.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'X.RomanSymbol, 'I.RomanSymbol]), solcount: 6, input: '__['M.RomanSymbol, 'C.RomanSymbol, 'M.RomanSymbol, 'X.RomanSymbol, 'C.RomanSymbol, 'I.RomanSymbol, 'X.RomanSymbol] @ 'sort[ none]{empty} ; 'add[none]{empty} > noSuchResult(me, interpreter(0), 0) Bye. Maude-Maude3.5.1/tests/Meta/metaIntStrategy0000775000175000017510000000037015036121435020162 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntStrategy.maude -no-banner -no-advise \ > metaIntStrategy.out 2>&1 diff $srcdir/metaIntStrategy.expected metaIntStrategy.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntSort.maude0000664000175000017510000001676415036121435020414 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test sort calculations in the meta-interpreter. *** load metaInterpreter mod SORT-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op type:_ : Type -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var T : Type . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | type: T, AS > insertedModule(X, Y) => < X : User | AS > getLesserSorts(Y, X, 'RAT, T) . endm erew in SORT-TEST : <> < me : User | type: 'Int > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST : <> < me : User | type: 'Rat > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST : <> < me : User | type: '`[Rat`] > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST : <> < me : User | type: '`[Bool`] > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST : <> < me : User | type: 'Bool > createInterpreter(interpreterManager, me, none) . mod SORT-TEST2 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op kind:_ : Type -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var K : Kind . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | kind: K, AS > insertedModule(X, Y) => < X : User | AS > getMaximalSorts(Y, X, 'RAT, K) . endm erew in SORT-TEST2 : <> < me : User | kind: '`[Rat`] > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST2 : <> < me : User | kind: '`[Bool`] > createInterpreter(interpreterManager, me, none) . mod SORT-TEST3 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op kind:_ : Type -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var K : Kind . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | kind: K, AS > insertedModule(X, Y) => < X : User | AS > getMinimalSorts(Y, X, 'RAT, K) . endm erew in SORT-TEST3 : <> < me : User | kind: '`[Rat`] > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST3 : <> < me : User | kind: '`[Bool`] > createInterpreter(interpreterManager, me, none) . mod SORT-TEST4 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op typePair:_:_ : Type Type -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . vars T1 T2 : Type . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, typePair: T1 : T2 > insertedModule(X, Y) => < X : User | AS > compareTypes(Y, X, 'RAT, T1, T2) . endm erew in SORT-TEST4 : <> < me : User | typePair: 'Nat : 'Bool > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST4 : <> < me : User | typePair: 'Nat : 'Rat > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST4 : <> < me : User | typePair: 'Rat : 'Rat > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST4 : <> < me : User | typePair: 'Rat : 'Int > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST4 : <> < me : User | typePair: 'NzRat : 'Int > createInterpreter(interpreterManager, me, none) . mod SORT-TEST5 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op type:_ : Type -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var T : Type . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, type: T > insertedModule(X, Y) => < X : User | AS > getKind(Y, X, 'RAT, T) . endm erew in SORT-TEST5 : <> < me : User | type: 'Nat > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST5 : <> < me : User | type: 'Bool > createInterpreter(interpreterManager, me, none) . mod SORT-TEST6 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op module:_ : Qid -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var Q : Qid . rl < X : User | AS, module: Q > createdInterpreter(X, Y, Z) => < X : User | AS, module: Q > insertModule(Z, X, upModule(Q, true)) . rl < X : User | AS, module: Q > insertedModule(X, Y) => < X : User | AS > getKinds(Y, X, Q) . endm erew in SORT-TEST6 : <> < me : User | module: 'RAT > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST6 : <> < me : User | module: 'META-LEVEL > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST6 : <> < me : User | module: 'META-INTERPRETER > createInterpreter(interpreterManager, me, none) . mod SORT-TEST7 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op types:_ : TypeSet -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var T : TypeSet . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, types: T > insertedModule(X, Y) => < X : User | AS > getGlbTypes(Y, X, 'RAT, T) . endm erew in SORT-TEST7 : <> < me : User | types: ('Nat ; 'NzRat) > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST7 : <> < me : User | types: none > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST7 : <> < me : User | types: '`[Nat`] > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST7 : <> < me : User | types: ('Nat ; 'NzRat ; 'Zero) > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST7 : <> < me : User | types: ('Nat ; 'NzRat ; 'Int) > createInterpreter(interpreterManager, me, none) . mod SORT-TEST8 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op op:(_:_->_) : Qid TypeList Sort -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var Q : Qid . var TL : TypeList . var S : Sort . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, op:(Q : TL -> S) > insertedModule(X, Y) => < X : User | AS > getMaximalAritySet(Y, X, 'RAT, Q, TL, S) . endm erew in SORT-TEST8 : <> < me : User | op: ('_+_ : 'Nat 'Nat -> 'Nat) > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST8 : <> < me : User | op: ('_+_ : 'Nat 'Nat -> 'NzNat) > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST8 : <> < me : User | op: ('_+_ : 'Nat 'Nat -> 'NzRat) > createInterpreter(interpreterManager, me, none) . mod SORT-TEST9 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op term:_ : Term -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . var T : Term . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, term: T > insertedModule(X, Y) => < X : User | AS > normalizeTerm(Y, X, 'RAT, T) . endm erew in SORT-TEST9 : <> < me : User | term: ('_+_['X:Nat, '_+_['Y:Rat, 'X:Nat]]) > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST9 : <> < me : User | term: ('_+_['_+_['X:Nat, 'Y:Rat], '_+_['Y:Rat, 'X:Nat]]) > createInterpreter(interpreterManager, me, none) . erew in SORT-TEST9 : <> < me : User | term: ('_+_['_+_['X:NzNat, 'Y:PosRat], '_+_['Y:PosRat, 'X:NzNat]]) > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntSort.expected0000664000175000017510000002460515036121435021113 0ustar nileshnilesh========================================== erewrite in SORT-TEST : <> < me : User | type: 'Int > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotLesserSorts(me, interpreter( 0), 'Nat ; 'NzInt ; 'NzNat ; 'Zero) ========================================== erewrite in SORT-TEST : <> < me : User | type: 'Rat > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotLesserSorts(me, interpreter( 0), 'Int ; 'Nat ; 'NzInt ; 'NzNat ; 'NzRat ; 'PosRat ; 'Zero) ========================================== erewrite in SORT-TEST : <> < me : User | type: '`[Rat`] > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotLesserSorts(me, interpreter( 0), 'Int ; 'Nat ; 'NzInt ; 'NzNat ; 'NzRat ; 'PosRat ; 'Rat ; 'Zero) ========================================== erewrite in SORT-TEST : <> < me : User | type: '`[Bool`] > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotLesserSorts(me, interpreter( 0), 'Bool) ========================================== erewrite in SORT-TEST : <> < me : User | type: 'Bool > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotLesserSorts(me, interpreter( 0), none) ========================================== erewrite in SORT-TEST2 : <> < me : User | kind: '`[Rat`] > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotMaximalSorts(me, interpreter( 0), 'Rat) ========================================== erewrite in SORT-TEST2 : <> < me : User | kind: '`[Bool`] > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotMaximalSorts(me, interpreter( 0), 'Bool) ========================================== erewrite in SORT-TEST3 : <> < me : User | kind: '`[Rat`] > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotMinimalSorts(me, interpreter( 0), 'NzNat ; 'Zero) ========================================== erewrite in SORT-TEST3 : <> < me : User | kind: '`[Bool`] > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotMinimalSorts(me, interpreter( 0), 'Bool) ========================================== erewrite in SORT-TEST4 : <> < me : User | typePair: 'Nat : 'Bool > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > comparedTypes(me, interpreter(0), false, false, false) ========================================== erewrite in SORT-TEST4 : <> < me : User | typePair: 'Nat : 'Rat > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > comparedTypes(me, interpreter(0), true, true, false) ========================================== erewrite in SORT-TEST4 : <> < me : User | typePair: 'Rat : 'Rat > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > comparedTypes(me, interpreter(0), true, true, true) ========================================== erewrite in SORT-TEST4 : <> < me : User | typePair: 'Rat : 'Int > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > comparedTypes(me, interpreter(0), true, false, true) ========================================== erewrite in SORT-TEST4 : <> < me : User | typePair: 'NzRat : 'Int > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > comparedTypes(me, interpreter(0), true, false, false) ========================================== erewrite in SORT-TEST5 : <> < me : User | type: 'Nat > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotKind(me, interpreter(0), '`[Rat`]) ========================================== erewrite in SORT-TEST5 : <> < me : User | type: 'Bool > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotKind(me, interpreter(0), '`[Bool`]) ========================================== erewrite in SORT-TEST6 : <> < me : User | module: 'RAT > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotKinds(me, interpreter(0), '`[Bool`] ; '`[Rat`]) ========================================== erewrite in SORT-TEST6 : <> < me : User | module: 'META-LEVEL > createInterpreter(interpreterManager, me, none) . rewrites: 4 result Configuration: <> < me : User | none > gotKinds(me, interpreter(0), '`[AttrSet`] ; '`[Bool`] ; '`[Condition`] ; '`[EquationSet`] ; '`[FindResult`,NatList`,Parent`,Bound`] ; '`[HookList`] ; '`[ImportList`] ; '`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`] ; '`[MatchingProblem`] ; '`[MembAxSet`] ; '`[Module`] ; '`[NarrowingApplyResult?`] ; '`[NarrowingSearchPathResult?`] ; '`[NarrowingSearchResult?`] ; '`[NarrowingTrace`] ; '`[OpDeclSet`] ; '`[OpMappingSet`] ; '`[ParameterDeclList`] ; '`[PrintOptionSet`] ; '`[QidList`,TypeListSet`,QidSet`,GTermList`,Header`,Type?`,ModuleExpression`,ParameterList`] ; '`[RenamingSet`] ; '`[Result4Tuple?`] ; '`[ResultPair?`] ; '`[ResultTriple?`] ; '`[RuleSet`] ; '`[SmtResult?`] ; '`[SortMappingSet`] ; '`[SrewriteOption`] ; '`[StratDeclSet`] ; '`[StratDefSet`] ; '`[StratMappingSet`] ; '`[Strategy?`,StrategyList`] ; '`[String`] ; '`[SubsortDeclSet`] ; '`[Substitution?`] ; '`[Trace?`] ; '`[UnificationProblem`] ; '`[UnificationTriple?`] ; '`[UsingPairSet`] ; '`[Variant?`] ; '`[VariantOptionSet`] ; '`[View`]) ========================================== erewrite in SORT-TEST6 : <> < me : User | module: 'META-INTERPRETER > createInterpreter(interpreterManager, me, none) . rewrites: 4 result Configuration: <> < me : User | none > gotKinds(me, interpreter(0), '`[AttrSet`] ; '`[AttributeSet`] ; '`[Bool`] ; '`[Cid`] ; '`[Condition`] ; '`[Configuration`] ; '`[EquationSet`] ; '`[FindResult`,NatList`,Parent`,RewriteCount`,Bound`] ; '`[HookList`] ; '`[ImportList`] ; '`[InterpreterOptionSet`] ; '`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`] ; '`[MatchingProblem`] ; '`[MembAxSet`] ; '`[Module`] ; '`[NarrowingApplyResult?`] ; '`[NarrowingSearchPathResult?`] ; '`[NarrowingSearchResult?`] ; '`[NarrowingTrace`] ; '`[Oid`] ; '`[OpDeclSet`] ; '`[OpMappingSet`] ; '`[ParameterDeclList`] ; '`[PrintOptionSet`] ; '`[QidList`,TypeListSet`,QidSet`,GTermList`,Header`,Type?`,ModuleExpression`,ParameterList`] ; '`[RenamingSet`] ; '`[Result4Tuple?`] ; '`[ResultPair?`] ; '`[ResultTriple?`] ; '`[RuleSet`] ; '`[SmtResult?`] ; '`[SortMappingSet`] ; '`[SrewriteOption`] ; '`[StratDeclSet`] ; '`[StratDefSet`] ; '`[StratMappingSet`] ; '`[Strategy?`,StrategyList`] ; '`[String`] ; '`[SubsortDeclSet`] ; '`[Substitution?`] ; '`[Trace?`] ; '`[UnificationProblem`] ; '`[UnificationTriple?`] ; '`[UsingPairSet`] ; '`[Variant?`] ; '`[VariantOptionSet`] ; '`[View`]) ========================================== erewrite in SORT-TEST7 : <> < me : User | types: ('Nat ; 'NzRat) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotGlbTypes(me, interpreter(0), 'NzNat) ========================================== erewrite in SORT-TEST7 : <> < me : User | types: none > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotGlbTypes(me, interpreter(0), none) ========================================== erewrite in SORT-TEST7 : <> < me : User | types: '`[Nat`] > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotGlbTypes(me, interpreter(0), '`[Rat`]) ========================================== erewrite in SORT-TEST7 : <> < me : User | types: ('Nat ; 'NzRat ; 'Zero) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotGlbTypes(me, interpreter(0), none) ========================================== erewrite in SORT-TEST7 : <> < me : User | types: ('Nat ; 'Int ; 'NzRat) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotGlbTypes(me, interpreter(0), 'NzNat) ========================================== erewrite in SORT-TEST8 : <> < me : User | op:('_+_ : 'Nat 'Nat -> 'Nat) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotMaximalAritySet(me, interpreter(0), 'Nat 'Nat) ========================================== erewrite in SORT-TEST8 : <> < me : User | op:('_+_ : 'Nat 'Nat -> 'NzNat) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotMaximalAritySet(me, interpreter(0), 'Nat 'NzNat ; 'NzNat 'Nat) ========================================== erewrite in SORT-TEST8 : <> < me : User | op:('_+_ : 'Nat 'Nat -> 'NzRat) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotMaximalAritySet(me, interpreter(0), 'Nat 'PosRat ; 'PosRat 'Nat ; 'PosRat 'PosRat) ========================================== erewrite in SORT-TEST9 : <> < me : User | term: ('_+_['X:Nat, '_+_['Y:Rat, 'X:Nat]]) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > normalizedTerm(me, interpreter( 0), '_+_['X:Nat, 'X:Nat, 'Y:Rat], 'Rat) ========================================== erewrite in SORT-TEST9 : <> < me : User | term: ('_+_['_+_['X:Nat, 'Y:Rat], '_+_['Y:Rat, 'X:Nat]]) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > normalizedTerm(me, interpreter( 0), '_+_['X:Nat, 'X:Nat, 'Y:Rat, 'Y:Rat], 'Rat) ========================================== erewrite in SORT-TEST9 : <> < me : User | term: ('_+_['_+_['X:NzNat, 'Y:PosRat], '_+_['Y:PosRat, 'X:NzNat]]) > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > normalizedTerm(me, interpreter( 0), '_+_['X:NzNat, 'X:NzNat, 'Y:PosRat, 'Y:PosRat], 'PosRat) Bye. Maude-Maude3.5.1/tests/Meta/metaIntSort0000775000175000017510000000035015036121435017305 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntSort.maude -no-banner -no-advise \ > metaIntSort.out 2>&1 diff $srcdir/metaIntSort.expected metaIntSort.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntSearch.maude0000664000175000017510000001041715036121435020657 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test search in the meta-interpreter without and with path. *** load metaInterpreter mod SEARCH is sort State . ops a b c d e : -> State . rl [a-move1] : a => b . rl [a-move2] : a => c . rl [b-move] : b => d . rl [c-move] : c => e . endm mod SEARCH-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('SEARCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS > getSearchResult(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, N) . endm erew in SEARCH-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, none) . erew in SEARCH-TEST : <> < me : User | soln: 1 > createInterpreter(interpreterManager, me, none) . erew in SEARCH-TEST : <> < me : User | soln: 2 > createInterpreter(interpreterManager, me, none) . erew in SEARCH-TEST : <> < me : User | soln: 3 > createInterpreter(interpreterManager, me, none) . erew in SEARCH-TEST : <> < me : User | soln: 4 > createInterpreter(interpreterManager, me, none) . erew in SEARCH-TEST : <> < me : User | soln: 5 > createInterpreter(interpreterManager, me, none) . mod SEARCH-CACHE-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . var S : Substitution . var T : Term . var TY : Type . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('SEARCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS, soln: 1 > getSearchResult(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, 0) . rl < X : User | soln: N, AS > gotSearchResult(X, Y, M, T, TY, S) => < X : User | AS, soln: (N + 1), got: gotSearchResult(X, Y, M, T, TY, S) > getSearchResult(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, N) . endm erew in SEARCH-CACHE-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, none) . mod SEARCH-PATH-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('SEARCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS > getSearchResultAndPath(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, N) . endm erew in SEARCH-PATH-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, none) . erew in SEARCH-PATH-TEST : <> < me : User | soln: 1 > createInterpreter(interpreterManager, me, none) . erew in SEARCH-PATH-TEST : <> < me : User | soln: 2 > createInterpreter(interpreterManager, me, none) . erew in SEARCH-PATH-TEST : <> < me : User | soln: 3 > createInterpreter(interpreterManager, me, none) . erew in SEARCH-PATH-TEST : <> < me : User | soln: 4 > createInterpreter(interpreterManager, me, none) . erew in SEARCH-PATH-TEST : <> < me : User | soln: 5 > createInterpreter(interpreterManager, me, none) . mod SEARCH-PATH-CACHE-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . var S : Substitution . var T : Term . var TY : Type . var TR : Trace . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('SEARCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS, soln: 1 > getSearchResultAndPath(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, 0) . rl < X : User | soln: N, AS > gotSearchResultAndPath(X, Y, M, T, TY, S, TR) => < X : User | AS, soln: (N + 1), got: gotSearchResultAndPath(X, Y, M, T, TY, S, TR) > getSearchResultAndPath(Y, X, 'SEARCH, 'a.State, 'X:State, nil, '*, 20, N) . endm erew in SEARCH-PATH-CACHE-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntSearch.expected0000664000175000017510000001327315036121435021370 0ustar nileshnilesh========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, none) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResult(me, interpreter( 0), 0, 'a.State, 'State, 'X:State <- 'a.State) ========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 4 result Configuration: <> < me : User | none > gotSearchResult(me, interpreter( 0), 1, 'b.State, 'State, 'X:State <- 'b.State) ========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 2 > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotSearchResult(me, interpreter( 0), 2, 'c.State, 'State, 'X:State <- 'c.State) ========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 3 > createInterpreter( interpreterManager, me, none) . rewrites: 6 result Configuration: <> < me : User | none > gotSearchResult(me, interpreter( 0), 3, 'd.State, 'State, 'X:State <- 'd.State) ========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 4 > createInterpreter( interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > gotSearchResult(me, interpreter( 0), 4, 'e.State, 'State, 'X:State <- 'e.State) ========================================== erewrite in SEARCH-TEST : <> < me : User | soln: 5 > createInterpreter( interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > noSuchResult(me, interpreter(0), 4) ========================================== erewrite in SEARCH-CACHE-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, none) . rewrites: 17 result Configuration: <> < me : User | soln: 6, got: gotSearchResult(me, interpreter(0), 0, 'a.State, 'State, 'X:State <- 'a.State), got: gotSearchResult(me, interpreter(0), 1, 'b.State, 'State, 'X:State <- 'b.State), got: gotSearchResult(me, interpreter(0), 1, 'c.State, 'State, 'X:State <- 'c.State), got: gotSearchResult(me, interpreter(0), 1, 'd.State, 'State, 'X:State <- 'd.State), got: gotSearchResult(me, interpreter(0), 1, 'e.State, 'State, 'X:State <- 'e.State) > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, none) . rewrites: 3 result Configuration: <> < me : User | none > gotSearchResultAndPath(me, interpreter(0), 0, 'a.State, 'State, 'X:State <- 'a.State, nil) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 4 result Configuration: <> < me : User | none > gotSearchResultAndPath(me, interpreter(0), 1, 'b.State, 'State, 'X:State <- 'b.State, {'a.State, 'State, rl 'a.State => 'b.State [label( 'a-move1)] .}) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 2 > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > gotSearchResultAndPath(me, interpreter(0), 2, 'c.State, 'State, 'X:State <- 'c.State, {'a.State, 'State, rl 'a.State => 'c.State [label( 'a-move2)] .}) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 3 > createInterpreter( interpreterManager, me, none) . rewrites: 6 result Configuration: <> < me : User | none > gotSearchResultAndPath(me, interpreter(0), 3, 'd.State, 'State, 'X:State <- 'd.State, {'a.State, 'State, rl 'a.State => 'b.State [label( 'a-move1)] .} {'b.State, 'State, rl 'b.State => 'd.State [label('b-move)] .}) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 4 > createInterpreter( interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > gotSearchResultAndPath(me, interpreter(0), 4, 'e.State, 'State, 'X:State <- 'e.State, {'a.State, 'State, rl 'a.State => 'c.State [label( 'a-move2)] .} {'c.State, 'State, rl 'c.State => 'e.State [label('c-move)] .}) ========================================== erewrite in SEARCH-PATH-TEST : <> < me : User | soln: 5 > createInterpreter( interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > noSuchResult(me, interpreter(0), 4) ========================================== erewrite in SEARCH-PATH-CACHE-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, none) . rewrites: 17 result Configuration: <> < me : User | soln: 6, got: gotSearchResultAndPath(me, interpreter(0), 0, 'a.State, 'State, 'X:State <- 'a.State, nil), got: gotSearchResultAndPath(me, interpreter(0), 1, 'b.State, 'State, 'X:State <- 'b.State, {'a.State, 'State, rl 'a.State => 'b.State [label( 'a-move1)] .}), got: gotSearchResultAndPath(me, interpreter(0), 1, 'c.State, 'State, 'X:State <- 'c.State, {'a.State, 'State, rl 'a.State => 'c.State [label( 'a-move2)] .}), got: gotSearchResultAndPath(me, interpreter(0), 1, 'd.State, 'State, 'X:State <- 'd.State, {'a.State, 'State, rl 'a.State => 'b.State [label( 'a-move1)] .} {'b.State, 'State, rl 'b.State => 'd.State [label('b-move)] .}), got: gotSearchResultAndPath(me, interpreter(0), 1, 'e.State, 'State, 'X:State <- 'e.State, {'a.State, 'State, rl 'a.State => 'c.State [label( 'a-move2)] .} {'c.State, 'State, rl 'c.State => 'e.State [label('c-move)] .}) > noSuchResult( me, interpreter(0), 0) Bye. Maude-Maude3.5.1/tests/Meta/metaIntSearch0000775000175000017510000000036015036121435017564 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntSearch.maude -no-banner -no-advise \ > metaIntSearch.out 2>&1 diff $srcdir/metaIntSearch.expected metaIntSearch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntReplace2.maude0000664000175000017510000001453115036121435021110 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test replacing modules and views in meta-interpreter with op->term mappings. *** load metaInterpreter set include BOOL off . fth T is sort Elt . op f : Elt -> Elt . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = f(f(X)) . endfm fmod FOO is sort Foo . op h : Foo Foo -> Foo . op c : -> Foo . endfm view V from T to FOO is sort Elt to Foo . var X : Elt . op f(X) to term h(X, c) . endv fmod TEST is inc M{V} . endfm red g(X:Foo) . mod META1 is pr META-INTERPRETER . op T : -> Module . eq T = upModule('T, false) . op M : -> Module . eq M = upModule('M, false) . op FOO : -> Module . eq FOO = upModule('FOO, false) . op V : -> View . eq V = upView('V) . op TEST : -> Module . eq TEST = upModule('TEST, false) . endm red T . red M . red FOO . red V . red TEST . mod META2 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META2 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, none) . mod META3 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op M2 : -> Module . eq M2 = ( fmod 'M{'X :: 'T} is nil sorts none . none op 'g : 'X$Elt -> 'X$Elt [none] . none eq 'g['X:X$Elt] = 'f['f['f['X:X$Elt]]] [none] . endfm ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, M2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META3 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, none) . mod META4 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op FOO2 : -> Module . eq FOO2 = ( fmod 'FOO is nil sorts 'Foo . none op 'c : nil -> 'Foo [none] . op 'h : 'Foo 'Foo -> 'Foo [comm] . none none endfm ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, FOO2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META4 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, none) . mod META5 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 10 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op FOO2 : -> Module . eq FOO2 = ( fmod 'FOO is nil sorts 'Foo . none op 'd : nil -> 'Foo [none] . op 'k : 'Foo 'Foo -> 'Foo [none] . none none endfm ) . op V2 : -> View . eq V2 = ( view 'V from 'T to 'FOO is sort 'Elt to 'Foo . op 'f['X:Elt] to term 'k['X:Foo,'d.Foo] . none endv ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, FOO2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > insertView(Y, X, V2) . rl < X : User | state: 9 > insertedView(X, Y) => < X : User | state: 10 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META5 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntReplace2.expected0000664000175000017510000000437415036121435021622 0ustar nileshnilesh========================================== reduce in TEST : g(X:Foo) . rewrites: 1 result Foo: h(h(X:Foo, c), c) ========================================== reduce in META1 : T . rewrites: 2 result FTheory: fth 'T is nil sorts 'Elt . none op 'f : 'Elt -> 'Elt [none] . none none endfth ========================================== reduce in META1 : M . rewrites: 2 result FModule: fmod 'M{'X :: 'T} is nil sorts none . none op 'g : 'X$Elt -> 'X$Elt [none] . none eq 'g['X:X$Elt] = 'f['f['X:X$Elt]] [none] . endfm ========================================== reduce in META1 : FOO . rewrites: 2 result FModule: fmod 'FOO is nil sorts 'Foo . none op 'c : nil -> 'Foo [none] . op 'h : 'Foo 'Foo -> 'Foo [none] . none none endfm ========================================== reduce in META1 : V . rewrites: 2 result View: view 'V from 'T to 'FOO is sort 'Elt to 'Foo . op 'f['X:Elt] to term 'h['X:Foo, 'c.Foo] . none endv ========================================== reduce in META1 : TEST . rewrites: 2 result FModule: fmod 'TEST is including 'M{'V} . sorts none . none none none none endfm ========================================== erewrite in META2 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 17 result Configuration: <> < me : User | state: 7 > reducedTerm(me, interpreter( 0), 1, 'h['h['X:Foo, 'c.Foo], 'c.Foo], 'Foo) ========================================== erewrite in META3 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 21 result Configuration: <> < me : User | state: 9 > reducedTerm(me, interpreter( 0), 1, 'h['h['h['X:Foo, 'c.Foo], 'c.Foo], 'c.Foo], 'Foo) ========================================== erewrite in META4 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 21 result Configuration: <> < me : User | state: 9 > reducedTerm(me, interpreter( 0), 1, 'h['c.Foo, 'h['c.Foo, 'X:Foo]], 'Foo) ========================================== erewrite in META5 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 23 result Configuration: <> < me : User | state: 10 > reducedTerm(me, interpreter( 0), 1, 'k['k['X:Foo, 'd.Foo], 'd.Foo], 'Foo) Bye. Maude-Maude3.5.1/tests/Meta/metaIntReplace20000775000175000017510000000037015036121435020015 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntReplace2.maude -no-banner -no-advise \ > metaIntReplace2.out 2>&1 diff $srcdir/metaIntReplace2.expected metaIntReplace2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntReplace.maude0000664000175000017510000001427215036121435021030 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test replacing modules and views in meta-interpreter. *** load metaInterpreter set include BOOL off . fth T is sort Elt . op f : Elt -> Elt . endfth fmod M{X :: T} is op g : X$Elt -> X$Elt . var X : X$Elt . eq g(X) = f(f(X)) . endfm fmod FOO is sort Foo . op h : Foo -> Foo . endfm view V from T to FOO is sort Elt to Foo . var X : Elt . op f to h . endv fmod TEST is inc M{V} . endfm red g(X:Foo) . mod META1 is pr META-INTERPRETER . op T : -> Module . eq T = upModule('T, false) . op M : -> Module . eq M = upModule('M, false) . op FOO : -> Module . eq FOO = upModule('FOO, false) . op V : -> View . eq V = upView('V) . op TEST : -> Module . eq TEST = upModule('TEST, false) . endm red T . red M . red FOO . red V . red TEST . mod META2 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META2 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, none) . mod META3 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op M2 : -> Module . eq M2 = ( fmod 'M{'X :: 'T} is nil sorts none . none op 'g : 'X$Elt -> 'X$Elt [none] . none eq 'g['X:X$Elt] = 'f['f['f['X:X$Elt]]] [none] . endfm ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, M2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META3 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, none) . mod META4 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op FOO2 : -> Module . eq FOO2 = ( fmod 'FOO is nil sorts 'Foo . none op 'h : 'Foo -> 'Foo [none] . none none endfm ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, FOO2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . endm erew in META4 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, none) . mod META5 is inc META1 . op me : -> Oid . op User : -> Cid . var X Y Z : Oid . var N : Nat . var T : Term . var S : Sort . sort State . ops 1 2 3 4 5 6 7 8 9 10 : -> State [ctor] . op state:_ : State -> Attribute [ctor] . op FOO2 : -> Module . eq FOO2 = ( fmod 'FOO is nil sorts 'Bar . none op 'k : 'Bar -> 'Bar [none] . none none endfm ) . op V2 : -> View . eq V2 = ( view 'V from 'T to 'FOO is sort 'Elt to 'Bar . op 'f to 'k . none endv ) . rl < X : User | state: 1 > createdInterpreter(X, Y, Z) => < X : User | state: 2 > insertModule(Z, X, T) . rl < X : User | state: 2 > insertedModule(X, Y) => < X : User | state: 3 > insertModule(Y, X, M) . rl < X : User | state: 3 > insertedModule(X, Y) => < X : User | state: 4 > insertModule(Y, X, FOO) . rl < X : User | state: 4 > insertedModule(X, Y) => < X : User | state: 5 > insertView(Y, X, V) . rl < X : User | state: 5 > insertedView(X, Y) => < X : User | state: 6 > insertModule(Y, X, TEST) . rl < X : User | state: 6 > insertedModule(X, Y) => < X : User | state: 7 > reduceTerm(Y, X, 'TEST, 'g['X:Foo]) . rl < X : User | state: 7 > reducedTerm(X, Y, N, T, S) => < X : User | state: 8 > insertModule(Y, X, FOO2) . rl < X : User | state: 8 > insertedModule(X, Y) => < X : User | state: 9 > insertView(Y, X, V2) . rl < X : User | state: 9 > insertedView(X, Y) => < X : User | state: 10 > reduceTerm(Y, X, 'TEST, 'g['X:Bar]) . endm erew in META5 : <> < me : User | state: 1 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntReplace.expected0000664000175000017510000000415515036121435021535 0ustar nileshnilesh========================================== reduce in TEST : g(X:Foo) . rewrites: 1 result Foo: h(h(X:Foo)) ========================================== reduce in META1 : T . rewrites: 2 result FTheory: fth 'T is nil sorts 'Elt . none op 'f : 'Elt -> 'Elt [none] . none none endfth ========================================== reduce in META1 : M . rewrites: 2 result FModule: fmod 'M{'X :: 'T} is nil sorts none . none op 'g : 'X$Elt -> 'X$Elt [none] . none eq 'g['X:X$Elt] = 'f['f['X:X$Elt]] [none] . endfm ========================================== reduce in META1 : FOO . rewrites: 2 result FModule: fmod 'FOO is nil sorts 'Foo . none op 'h : 'Foo -> 'Foo [none] . none none endfm ========================================== reduce in META1 : V . rewrites: 2 result View: view 'V from 'T to 'FOO is sort 'Elt to 'Foo . op 'f to 'h . none endv ========================================== reduce in META1 : TEST . rewrites: 2 result FModule: fmod 'TEST is including 'M{'V} . sorts none . none none none none endfm ========================================== erewrite in META2 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 17 result Configuration: <> < me : User | state: 7 > reducedTerm(me, interpreter( 0), 1, 'h['h['X:Foo]], 'Foo) ========================================== erewrite in META3 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 21 result Configuration: <> < me : User | state: 9 > reducedTerm(me, interpreter( 0), 1, 'h['h['h['X:Foo]]], 'Foo) ========================================== erewrite in META4 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 21 result Configuration: <> < me : User | state: 9 > reducedTerm(me, interpreter( 0), 1, 'h['h['X:Foo]], 'Foo) ========================================== erewrite in META5 : <> < me : User | state: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 23 result Configuration: <> < me : User | state: 10 > reducedTerm(me, interpreter( 0), 1, 'k['k['X:Bar]], 'Bar) Bye. Maude-Maude3.5.1/tests/Meta/metaIntReplace0000775000175000017510000000036415036121435017736 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntReplace.maude -no-banner -no-advise \ > metaIntReplace.out 2>&1 diff $srcdir/metaIntReplace.expected metaIntReplace.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntPrint.maude0000664000175000017510000000304615036121435020546 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test pretty printing in the meta-interpreter. *** load metaInterpreter mod PRINT-TEST is pr META-INTERPRETER . pr RAT . op me : -> Oid . op User : -> Cid . op term:_ : Term -> Attribute . op flags:_ : PrintOptionSet -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var T : Term . var F : PrintOptionSet . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('RAT, true)) . rl < X : User | AS, term: T, flags: F > insertedModule(X, Y) => < X : User | AS > printTerm(Y, X, 'RAT, 'X:Rat, T, F) . endm erew in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: mixfix > createInterpreter(interpreterManager, me, none) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: number > createInterpreter(interpreterManager, me, none) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: rat > createInterpreter(interpreterManager, me, none) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2 + X:Rat), flags: rat > createInterpreter(interpreterManager, me, none) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2 + X:Rat), flags: (rat mixfix) > createInterpreter(interpreterManager, me, none) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2 + X:Rat), flags: (number mixfix) > createInterpreter(interpreterManager, me, none) . erew in PRINT-TEST : <> < me : User | term: upTerm(1/2 + X:Rat), flags: mixfix > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntPrint.expected0000664000175000017510000000402415036121435021251 0ustar nileshnilesh========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: mixfix > createInterpreter(interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), 's '0 '/ 's_^2 '`( '0 '`)) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: number > createInterpreter(interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), '_/_ '`( '1 '`, '2 '`)) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(1/2), flags: rat > createInterpreter(interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), '1/2) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(X:Rat + 1/2), flags: rat > createInterpreter(interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), '_+_ '`( 'X '`, '1/2 '`)) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(X:Rat + 1/2), flags: ( mixfix rat) > createInterpreter(interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), 'X '+ '1/2) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(X:Rat + 1/2), flags: ( mixfix number) > createInterpreter(interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), 'X '+ '1 '/ '2) ========================================== erewrite in PRINT-TEST : <> < me : User | term: upTerm(X:Rat + 1/2), flags: mixfix > createInterpreter(interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | none > printedTerm(me, interpreter(0), 'X '+ 's '0 '/ 's_^2 '`( '0 '`)) Bye. Maude-Maude3.5.1/tests/Meta/metaIntPrint0000775000175000017510000000035415036121435017456 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntPrint.maude -no-banner -no-advise \ > metaIntPrint.out 2>&1 diff $srcdir/metaIntPrint.expected metaIntPrint.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntPrelude.maude0000664000175000017510000001230215036121435021045 0ustar nileshnileshset show timing off . set show advisories off . *** *** We suck the prelude modules and views out of the object level interpreter into *** an interpreter object. *** load metaInterpreter fmod SEQUENCE is pr QID . sort ViewCmd ModuleCmd Seq . subsort ViewCmd ModuleCmd < Seq . op v : Qid -> ViewCmd . op m : Qid -> ModuleCmd . op __ : Seq Seq -> Seq [assoc id: nil] . op nil : -> Seq . op prelude : -> Seq . eq prelude = m('TRUTH-VALUE) m('BOOL-OPS) m('TRUTH) m('BOOL) m('EXT-BOOL) m('NAT) m('INT) m('RAT) m('FLOAT) m('STRING) m('CONVERSION) m('RANDOM) m('BOUND) m('QID) m('TRIV) v('Bool) v('Nat) v('Int) v('Rat) v('Float) v('String) v('Qid) m('STRICT-WEAK-ORDER) v('STRICT-WEAK-ORDER) m('STRICT-TOTAL-ORDER) v('STRICT-TOTAL-ORDER) v('Nat<) v('Int<) v('Rat<) v('Float<) v('String<) m('TOTAL-PREORDER) v('TOTAL-PREORDER) m('TOTAL-ORDER) v('TOTAL-ORDER) v('Nat<=) v('Int<=) v('Rat<=) v('Float<=) v('String<=) m('DEFAULT) v('DEFAULT) v('Nat0) v('Int0) v('Rat0) v('Float0) v('String0) v('Qid0) m('LIST) m('WEAKLY-SORTABLE-LIST) m('SORTABLE-LIST) m('WEAKLY-SORTABLE-LIST') m('SORTABLE-LIST') m('SET) m('LIST-AND-SET) m('SORTABLE-LIST-AND-SET) m('SORTABLE-LIST-AND-SET') m('LIST*) m('SET*) m('MAP) m('ARRAY) m('NAT-LIST) m('QID-LIST) m('QID-SET) m('META-TERM) m('META-CONDITION) m('META-STRATEGY) m('META-MODULE) m('META-VIEW) m('META-LEVEL) m('LEXICAL) m('COUNTER) m('LOOP-MODE) m('CONFIGURATION) . endfm mod RUN is pr META-INTERPRETER . pr SEQUENCE . op me : -> Oid . op User : -> Cid . op pending : Seq -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . rl < X : User | pending(m(Q) Rest) > createdInterpreter(X, Y, Z) => < X : User | pending(Rest) > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(v(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(v(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(nil) > insertedModule(X, Y) => < X : User | pending(nil) > reduceTerm(Y, X, 'NAT, '_+_['s_^2['0.Nat], 's_^3['0.Nat]]) . endm erew in RUN : <> < me : User | pending(prelude) > createInterpreter(interpreterManager, me, none) . mod RUN2 is pr META-INTERPRETER . pr SEQUENCE . op me : -> Oid . op User : -> Cid . op pending : Seq -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . op run : -> Term . eq run = 'metaReduce['`[_`][''NAT.Sort],'_`[_`][''_+_.Sort, '_`,_['_`[_`][''s_^2.Sort,''0.Nat.Constant],'_`[_`][ ''s_^3.Sort,''0.Nat.Constant]]]] . rl < X : User | pending(m(Q) Rest) > createdInterpreter(X, Y, Z) => < X : User | pending(Rest) > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(v(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(v(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(nil) > insertedModule(X, Y) => < X : User | pending(nil) > reduceTerm(Y, X, 'META-LEVEL, run) . endm erew in RUN2 : <> < me : User | pending(prelude) > createInterpreter(interpreterManager, me, none) . mod RUN3 is pr META-INTERPRETER . pr SEQUENCE . op me : -> Oid . op User : -> Cid . op pending : Seq -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . op run : -> Term . eq run = 'upModule[''META-LEVEL.Qid, 'false.Bool] . rl < X : User | pending(m(Q) Rest) > createdInterpreter(X, Y, Z) => < X : User | pending(Rest) > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(m(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending(v(Q) Rest) > insertedModule(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(v(Q) Rest) > insertedView(X, Y) => < X : User | pending(Rest) > insertView(Y, X, upView(Q)) . rl < X : User | pending(nil) > insertedModule(X, Y) => < X : User | pending(nil) > reduceTerm(Y, X, 'META-LEVEL, run) . endm erew in RUN3 : <> < me : User | pending(prelude) > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntPrelude.expected0000664000175000017510000027015515036121435021567 0ustar nileshnilesh========================================== erewrite in RUN : <> < me : User | pending(prelude) > createInterpreter( interpreterManager, me, none) . rewrites: 152 result Configuration: <> < me : User | pending(nil) > reducedTerm(me, interpreter(0), 1, 's_^5['0.Zero], 'NzNat) ========================================== erewrite in RUN2 : <> < me : User | pending(prelude) > createInterpreter( interpreterManager, me, none) . rewrites: 155 result Configuration: <> < me : User | pending(nil) > reducedTerm(me, interpreter(0), 3, '`{_`,_`}['_`[_`][''s_^5.Sort, ''0.Zero.Constant], ''NzNat.Sort], 'ResultPair) ========================================== erewrite in RUN3 : <> < me : User | pending(prelude) > createInterpreter( interpreterManager, me, none) . rewrites: 153 result Configuration: <> < me : User | pending(nil) > reducedTerm(me, interpreter(0), 1, 'fmod_is_sorts_.____endfm[''META-LEVEL.Sort, '__[ 'protecting_.[''META-VIEW.Sort], 'protecting_.[''BOUND.Sort]], '_;_[ ''MatchOrUnificationPair.Sort, ''MatchPair.Sort, ''MatchPair?.Sort, ''MatchingProblem.Sort, ''NarrowingApplyResult.Sort, ''NarrowingApplyResult?.Sort, ''NarrowingSearchPathResult.Sort, ''NarrowingSearchPathResult?.Sort, ''NarrowingSearchResult.Sort, ''NarrowingSearchResult?.Sort, ''NarrowingStep.Sort, ''NarrowingTrace.Sort, ''NeVariableSet.Sort, ''Parent.Sort, ''PatternSubjectPair.Sort, ''PrintOption.Sort, ''PrintOptionSet.Sort, ''Result4Tuple.Sort, ''Result4Tuple?.Sort, ''ResultPair.Sort, ''ResultPair?.Sort, ''ResultTriple.Sort, ''ResultTriple?.Sort, ''SmtResult.Sort, ''SmtResult?.Sort, ''SrewriteOption.Sort, ''Strategy?.Sort, ''Substitution?.Sort, ''Trace.Sort, ''Trace?.Sort, ''TraceStep.Sort, ''Type?.Sort, ''UnificandPair.Sort, ''UnificationPair.Sort, ''UnificationPair?.Sort, ''UnificationProblem.Sort, ''UnificationTriple.Sort, ''UnificationTriple?.Sort, ''VariableSet.Sort, ''Variant.Sort, ''Variant?.Sort, ''VariantOption.Sort, ''VariantOptionSet.Sort], '__['subsort_<_.[''EmptyQidSet.Sort, ''VariableSet.Sort], 'subsort_<_.[''MatchPair.Sort, ''MatchOrUnificationPair.Sort], 'subsort_<_.[''MatchPair.Sort, ''MatchPair?.Sort], 'subsort_<_.[''NarrowingApplyResult.Sort, ''NarrowingApplyResult?.Sort], 'subsort_<_.[ ''NarrowingSearchPathResult.Sort, ''NarrowingSearchPathResult?.Sort], 'subsort_<_.[''NarrowingSearchResult.Sort, ''NarrowingSearchResult?.Sort], 'subsort_<_.[''NarrowingStep.Sort, ''NarrowingTrace.Sort], 'subsort_<_.[ ''Nat.Sort, ''Parent.Sort], 'subsort_<_.[''NeVariableSet.Sort, ''NeQidSet.Sort], 'subsort_<_.[''NeVariableSet.Sort, ''VariableSet.Sort], 'subsort_<_.[''PatternSubjectPair.Sort, ''MatchingProblem.Sort], 'subsort_<_.[''PrintOption.Sort, ''PrintOptionSet.Sort], 'subsort_<_.[ ''Result4Tuple.Sort, ''Result4Tuple?.Sort], 'subsort_<_.[''ResultPair.Sort, ''ResultPair?.Sort], 'subsort_<_.[''ResultTriple.Sort, ''ResultTriple?.Sort], 'subsort_<_.[''SmtResult.Sort, ''SmtResult?.Sort], 'subsort_<_.[''Strategy.Sort, ''Strategy?.Sort], 'subsort_<_.[ ''Substitution.Sort, ''Substitution?.Sort], 'subsort_<_.[''Trace.Sort, ''Trace?.Sort], 'subsort_<_.[''TraceStep.Sort, ''Trace.Sort], 'subsort_<_.[ ''Type.Sort, ''Type?.Sort], 'subsort_<_.[''UnificandPair.Sort, ''UnificationProblem.Sort], 'subsort_<_.[''UnificationPair.Sort, ''MatchOrUnificationPair.Sort], 'subsort_<_.[''UnificationPair.Sort, ''UnificationPair?.Sort], 'subsort_<_.[''UnificationTriple.Sort, ''UnificationTriple?.Sort], 'subsort_<_.[''Variable.Sort, ''NeVariableSet.Sort], 'subsort_<_.[''VariableSet.Sort, ''QidSet.Sort], 'subsort_<_.[''Variant.Sort, ''Variant?.Sort], 'subsort_<_.[ ''VariantOption.Sort, ''VariantOptionSet.Sort]], '__['op_:_->_`[_`].[ ''$applySubstitution.Sort, '__[''NeTermList.Sort, ''Substitution.Sort], ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''_/\_.Sort, '__[ ''MatchingProblem.Sort, ''MatchingProblem.Sort], ''MatchingProblem.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec['s_^73['0.Zero]]]], 'op_:_->_`[_`].[''_/\_.Sort, '__[''UnificationProblem.Sort, ''UnificationProblem.Sort], ''UnificationProblem.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'prec['s_^73['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''NeVariableSet.Sort, ''VariableSet.Sort], ''NeVariableSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_;_.Sort, '__[''VariableSet.Sort, ''VariableSet.Sort], ''VariableSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.EmptyQidSet.Constant], 'prec['s_^43['0.Zero]]]], 'op_:_->_`[_`].[ ''_<=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''PatternSubjectPair.Sort, '__['ctor.Attr, 'prec['s_^71['0.Zero]]]], 'op_:_->_`[_`].[''_=?_.Sort, '__[ ''Term.Sort, ''Term.Sort], ''UnificandPair.Sort, '__['ctor.Attr, 'prec[ 's_^71['0.Zero]]]], 'op_:_->_`[_`].[''__.Sort, '__[''NarrowingTrace.Sort, ''NarrowingTrace.Sort], ''NarrowingTrace.Sort, '__['assoc.Attr, 'ctor.Attr, 'id[''nil.NarrowingTrace.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''PrintOptionSet.Sort, ''PrintOptionSet.Sort], ''PrintOptionSet.Sort, '__[ 'assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[''none.PrintOptionSet.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[''Trace.Sort, ''Trace.Sort], ''Trace.Sort, '__['assoc.Attr, 'ctor.Attr, 'format['__[''d.Sort, ''n.Sort, ''d.Sort]], 'id[''nil.Trace.Constant]]], 'op_:_->_`[_`].[''__.Sort, '__[ ''VariantOptionSet.Sort, ''VariantOptionSet.Sort], ''VariantOptionSet.Sort, '__['assoc.Attr, 'comm.Attr, 'ctor.Attr, 'id[ ''none.VariantOptionSet.Constant]]], 'op_:_->_`[_`].[ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort, ''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''NarrowingStep.Sort, '__['ctor.Attr, 'format['__[ ''ni.Sort, ''n++i.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingApplyResult.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''NarrowingTrace.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchPathResult.Sort, '__[ 'ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[ ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchResult.Sort, '__['ctor.Attr, 'format['__[''d.Sort, ''n++i.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''d.Sort, ''s.Sort, ''d.Sort, ''ni.Sort, ''n--i.Sort, ''d.Sort]]]], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Nat.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Substitution.Sort, ''Qid.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Substitution.Sort, ''Term.Sort, ''Nat.Sort], ''SmtResult.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Context.Sort], ''Result4Tuple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[ ''Substitution.Sort, ''Substitution.Sort, ''Nat.Sort], ''UnificationTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''UnificationTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Rule.Sort], ''TraceStep.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''ResultTriple.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Context.Sort], ''MatchPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Nat.Sort], ''UnificationPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Qid.Sort], ''UnificationPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''`{_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort], ''ResultPair.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''ambiguity.Sort, '__[''ResultPair.Sort, ''ResultPair.Sort], ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''ambiguity.Sort, '__[ ''Strategy.Sort, ''Strategy.Sort], ''Strategy?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''anyType.Sort, 'nil.TypeList, ''Type?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''applySubstitution.Sort, '__[''Module.Sort, ''Term.Sort, ''Substitution.Sort], ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''breadthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''completeName.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaCompleteName.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''delay.Sort, 'nil.TypeList, ''VariantOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''depthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''downTerm.Sort, '__[ ''Term.Sort, ''Universal.Sort], ''Universal.Sort, '__['poly['__['s_^2[ '0.Zero], '0.Zero]], 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaDownTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]]], 'op_:_->_`[_`].[ ''failure.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failure.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''Result4Tuple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''ResultTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failure.Sort, 'nil.TypeList, ''SmtResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failure.Sort, 'nil.TypeList, ''Trace?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''failureIncomplete.Sort, 'nil.TypeList, ''ResultTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''filter.Sort, 'nil.TypeList, ''VariantOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''flat.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''format.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''getAccumulatedSubstitution.Sort, ''NarrowingSearchResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getAccumulatedSubstitution.Sort, ''NarrowingStep.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''MatchPair.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getContext.Sort, ''NarrowingApplyResult.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''NarrowingStep.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getContext.Sort, ''Result4Tuple.Sort, ''Context.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getInitialSubstitution.Sort, ''NarrowingSearchPathResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getInitialTerm.Sort, ''NarrowingSearchPathResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getInitialType.Sort, ''NarrowingSearchPathResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getKind.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaGetKind.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''getKinds.Sort, ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetKinds.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''getLabel.Sort, ''NarrowingApplyResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getLabel.Sort, ''NarrowingStep.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getLhsSubstitution.Sort, ''UnificationTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getMoreVariantsInLayerFlag.Sort, ''Variant.Sort, ''Bool.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getParent.Sort, ''Variant.Sort, ''Parent.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getRhsSubstitution.Sort, ''UnificationTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRule.Sort, ''TraceStep.Sort, ''Rule.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getRuleSubstitution.Sort, ''NarrowingApplyResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getStateVariableFamily.Sort, ''NarrowingSearchResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSubstitution.Sort, ''MatchPair.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''Result4Tuple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getSubstitution.Sort, ''ResultTriple.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''UnificationPair.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getSubstitution.Sort, ''Variant.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''NarrowingApplyResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getTerm.Sort, ''NarrowingSearchResult.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''NarrowingStep.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''Result4Tuple.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''ResultPair.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getTerm.Sort, ''ResultTriple.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''TraceStep.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTerm.Sort, ''Variant.Sort, ''Term.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTermSubstitution.Sort, ''NarrowingApplyResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getTrace.Sort, ''NarrowingSearchPathResult.Sort, ''NarrowingTrace.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''NarrowingApplyResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getType.Sort, ''NarrowingSearchResult.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''NarrowingStep.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''Result4Tuple.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''ResultPair.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getType.Sort, ''ResultTriple.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getType.Sort, ''TraceStep.Sort, ''Type.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingSearchPathResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingSearchResult.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifier.Sort, ''NarrowingStep.Sort, ''Substitution.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getUnifierVariableFamily.Sort, ''NarrowingSearchPathResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getUnifierVariableFamily.Sort, ''NarrowingSearchResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getUnifierVariableFamily.Sort, ''NarrowingStep.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getVariableFamily.Sort, ''NarrowingApplyResult.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getVariableFamily.Sort, ''UnificationPair.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[ ''getVariableFamily.Sort, ''UnificationTriple.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''getVariableFamily.Sort, ''Variant.Sort, ''Qid.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''glbSorts.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGlbSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''leastSort.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaLeastSort.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''lesserSorts.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaLesserSorts.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''maximalAritySet.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMaximalAritySet.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''maximalSorts.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMaximalSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaApply.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Substitution?`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaApply.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaCheck.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[Bool`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaCheck.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaDisjointUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''legacyMetaDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaDisjointUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaFrewrite.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaFrewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaGetIrredundantVariant.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaGetIrredundantVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetIrredundantVariant.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetIrredundantVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetVariant.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaGetVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaGetVariant.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Variant?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaGetVariant.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaIrredundantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaIrredundantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaIrredundantUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaIrredundantUnify.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaMatch.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Condition`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Substitution?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaMatch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrow.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[Bool`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrow2.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrow.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrow.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaNarrowingApply.Sort, '__[''Module.Sort, ''Term.Sort, ''TermList.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingApplyResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''metaNarrowingApply.Sort, '__[''Module.Sort, ''Term.Sort, ''TermList.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingApplyResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingApply.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrowingSearch.Sort, '__[ ''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingSearchResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''metaNarrowingSearch.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingSearchResult?.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaNarrowingSearch.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNarrowingSearchPath.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''Nat.Sort], ''NarrowingSearchPathResult?.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''metaNarrowingSearchPath.Sort, '__[''Module.Sort, ''Term.Sort, ''Term.Sort, ''Qid.Sort, ''Bound.Sort, ''Qid.Sort, ''VariantOptionSet.Sort, ''Nat.Sort], ''NarrowingSearchPathResult?.Sort, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNarrowingSearchPath.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaNormalize.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[ResultPair?`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaNormalize.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaParse.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[ResultPair?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaParse.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaParse.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaParseStrategy.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[StrategyList`,Strategy?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaParseStrategy.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[PrintOptionSet`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[PrintOptionSet`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaPrettyPrint.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[PrintOptionSet`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrettyPrint.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaPrettyPrintStrategy.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[StrategyList`,Strategy?`].Kind, ''`[PrintOptionSet`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrettyPrintStrategy.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaPrintToString.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[PrintOptionSet`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[String`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaPrintToString.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaReduce.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaReduce.Sort], 'op-hook[''qidSymbol.Sort, ''.Sort, 'nil.TypeList, ''Qid.Sort], 'op-hook[''metaTermSymbol.Sort, ''_`[_`].Qid, '__[''Qid.Sort, ''NeCTermList.Sort], ''Context.Sort], 'op-hook[''metaArgSymbol.Sort, ''_`,_.Qid, '__[''GTermList.Sort, ''GTermList.Sort], ''GTermList.Sort], 'op-hook[''emptyTermListSymbol.Sort, ''empty.Sort, 'nil.TypeList, ''GroundTermList.Sort], 'op-hook[''assignmentSymbol.Sort, ''_<-_.Sort, '__[ ''Variable.Sort, ''Term.Sort], ''Assignment.Sort], 'op-hook[ ''emptySubstitutionSymbol.Sort, ''none.Sort, 'nil.TypeList, ''Substitution.Sort], 'op-hook[''substitutionSymbol.Sort, ''_;_.Sort, '__[ ''Substitution.Sort, ''Substitution.Sort], ''Substitution.Sort], 'op-hook[ ''holeSymbol.Sort, ''`[`].Kind, 'nil.TypeList, ''Context.Sort], 'op-hook[ ''noConditionSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''EqCondition.Sort], 'op-hook[''equalityConditionSymbol.Sort, ''_=_.Sort, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort], 'op-hook[''sortTestConditionSymbol.Sort, ''_:_.Variable, '__[''Term.Sort, ''Sort.Sort], ''EqCondition.Sort], 'op-hook[''matchConditionSymbol.Sort, ''_:=_.Variable, '__[''Term.Sort, ''Term.Sort], ''EqCondition.Sort], 'op-hook[''rewriteConditionSymbol.Sort, ''_=>_.Sort, '__[''Term.Sort, ''Term.Sort], ''Condition.Sort], 'op-hook[ ''conjunctionSymbol.Sort, ''_/\_.Sort, '__[''Condition.Sort, ''Condition.Sort], ''Condition.Sort], 'op-hook[''failStratSymbol.Sort, ''fail.Sort, 'nil.TypeList, ''Strategy.Sort], 'op-hook[ ''idleStratSymbol.Sort, ''idle.Sort, 'nil.TypeList, ''Strategy.Sort], 'op-hook[''allStratSymbol.Sort, ''all.Sort, 'nil.TypeList, ''RuleApplication.Sort], 'op-hook[''applicationStratSymbol.Sort, ''_`[_`]`{_`}.Qid, '__[''Qid.Sort, ''Substitution.Sort, ''StrategyList.Sort], ''RuleApplication.Sort], 'op-hook[ ''topStratSymbol.Sort, ''top.Sort, ''RuleApplication.Sort, ''Strategy.Sort], 'op-hook[''matchStratSymbol.Sort, ''match_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[ ''xmatchStratSymbol.Sort, ''xmatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[''amatchStratSymbol.Sort, ''amatch_s.t._.Constant, '__[''Term.Sort, ''EqCondition.Sort], ''Strategy.Sort], 'op-hook[''unionStratSymbol.Sort, ''_|_.Sort, '__[ ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[ ''concatStratSymbol.Sort, ''_;_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''orelseStratSymbol.Sort, ''_or-else_.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''plusStratSymbol.Sort, ''_+.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''conditionalStratSymbol.Sort, ''_?_:_.Variable, '__[''Strategy.Sort, ''Strategy.Sort, ''Strategy.Sort], ''Strategy.Sort], 'op-hook[''matchrewStratSymbol.Sort, ''matchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''xmatchrewStratSymbol.Sort, ''xmatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''amatchrewStratSymbol.Sort, ''amatchrew_s.t._by_.Constant, '__[ ''Term.Sort, ''EqCondition.Sort, ''UsingPairSet.Sort], ''Strategy.Sort], 'op-hook[''callStratSymbol.Sort, ''_`[`[_`]`].Qid, '__[''Qid.Sort, ''TermList.Sort], ''CallStrategy.Sort], 'op-hook[''oneStratSymbol.Sort, ''one.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[ ''starStratSymbol.Sort, ''_*.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''normalizationStratSymbol.Sort, ''_!.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''notStratSymbol.Sort, ''not.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''testStratSymbol.Sort, ''test.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[ ''tryStratSymbol.Sort, ''try.Sort, ''Strategy.Sort, ''Strategy.Sort], 'op-hook[''usingStratSymbol.Sort, ''_using_.Sort, '__[''Variable.Sort, ''Strategy.Sort], ''UsingPair.Sort], 'op-hook[''usingListStratSymbol.Sort, ''_`,_.Qid, '__[''UsingPairSet.Sort, ''UsingPairSet.Sort], ''UsingPairSet.Sort], 'op-hook[''emptyStratListSymbol.Sort, ''empty.Sort, 'nil.TypeList, ''StrategyList.Sort], 'op-hook[''stratListSymbol.Sort, ''_`,_.Qid, '__[''StrategyList.Sort, ''StrategyList.Sort], ''StrategyList.Sort], 'op-hook[''headerSymbol.Sort, ''_`{_`}.Sort, '__[ ''Qid.Sort, ''ParameterDeclList.Sort], ''Header.Sort], 'op-hook[ ''parameterDeclSymbol.Sort, ''_::_.Variable, '__[''Sort.Sort, ''ModuleExpression.Sort], ''ParameterDecl.Sort], 'op-hook[ ''parameterDeclListSymbol.Sort, ''_`,_.Qid, '__[''NeParameterDeclList.Sort, ''ParameterDeclList.Sort], ''NeParameterDeclList.Sort], 'op-hook[ ''protectingSymbol.Sort, ''protecting_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''extendingSymbol.Sort, ''extending_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''includingSymbol.Sort, ''including_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[ ''generatedBySymbol.Sort, ''generated-by_..Qid, ''ModuleExpression.Sort, ''Import.Sort], 'op-hook[''nilImportListSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''ImportList.Sort], 'op-hook[''importListSymbol.Sort, ''__.Sort, '__[''ImportList.Sort, ''ImportList.Sort], ''ImportList.Sort], 'op-hook[''emptySortSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''QidSet.Sort], 'op-hook[''sortSetSymbol.Sort, ''_;_.Sort, '__[ ''NeQidSet.Sort, ''QidSet.Sort], ''NeQidSet.Sort], 'op-hook[ ''subsortSymbol.Sort, ''subsort_<_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SubsortDecl.Sort], 'op-hook[''emptySubsortDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''SubsortDeclSet.Sort], 'op-hook[ ''subsortDeclSetSymbol.Sort, ''__.Sort, '__[''SubsortDeclSet.Sort, ''SubsortDeclSet.Sort], ''SubsortDeclSet.Sort], 'op-hook[ ''nilQidListSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''QidList.Sort], 'op-hook[''qidListSymbol.Sort, ''__.Sort, '__[''QidList.Sort, ''QidList.Sort], ''QidList.Sort], 'op-hook[''emptyQidSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''QidSet.Sort], 'op-hook[''qidSetSymbol.Sort, ''_;_.Sort, '__[''NeQidSet.Sort, ''QidSet.Sort], ''NeQidSet.Sort], 'op-hook[''succSymbol.Sort, ''s_.Sort, ''Nat.Sort, ''NzNat.Sort], 'op-hook[ ''natListSymbol.Sort, ''__.Sort, '__[''NatList.Sort, ''NatList.Sort], ''NatList.Sort], 'op-hook[''unboundedSymbol.Sort, ''unbounded.Sort, 'nil.TypeList, ''Bound.Sort], 'op-hook[''noParentSymbol.Sort, ''none.Sort, 'nil.TypeList, ''Parent.Sort], 'op-hook[''stringSymbol.Sort, ''.Sort, 'nil.TypeList, ''Char.Sort], 'op-hook[ ''sortRenamingSymbol.Sort, ''sort_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''opRenamingSymbol.Sort, ''op_to_`[_`].Qid, '__[ ''Qid.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort], 'op-hook[ ''opRenamingSymbol2.Sort, ''op_:_->_to_`[_`].Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort, ''AttrSet.Sort], ''Renaming.Sort], 'op-hook[''labelRenamingSymbol.Sort, ''label_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[ ''stratRenamingSymbol.Sort, ''strat_to_.Sort, '__[''Qid.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''stratRenamingSymbol2.Sort, ''strat_:_@_to_.Variable, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''Renaming.Sort], 'op-hook[''renamingSetSymbol.Sort, ''_`,_.Qid, '__[''RenamingSet.Sort, ''RenamingSet.Sort], ''RenamingSet.Sort], 'op-hook[''sumSymbol.Sort, ''_+_.Sort, '__[ ''ModuleExpression.Sort, ''ModuleExpression.Sort], ''ModuleExpression.Sort], 'op-hook[''renamingSymbol.Sort, ''_*`(_`).Sort, '__[''ModuleExpression.Sort, ''RenamingSet.Sort], ''ModuleExpression.Sort], 'op-hook[''instantiationSymbol.Sort, ''_`{_`}.Sort, '__[''Expression.Sort, ''NeParameterList.Sort], ''Expression.Sort], 'op-hook[ ''termHookSymbol.Sort, ''term-hook.Sort, '__[''Qid.Sort, ''Term.Sort], ''Hook.Sort], 'op-hook[''hookListSymbol.Sort, ''__.Sort, '__[ ''HookList.Sort, ''HookList.Sort], ''HookList.Sort], 'op-hook[ ''idHookSymbol.Sort, ''id-hook.Sort, '__[''Qid.Sort, ''QidList.Sort], ''Hook.Sort], 'op-hook[''opHookSymbol.Sort, ''op-hook.Sort, '__[''Qid.Sort, ''Qid.Sort, ''QidList.Sort, ''Qid.Sort], ''Hook.Sort], 'op-hook[ ''assocSymbol.Sort, ''assoc.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''commSymbol.Sort, ''comm.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''idemSymbol.Sort, ''idem.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''iterSymbol.Sort, ''iter.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''idSymbol.Sort, ''id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''leftIdSymbol.Sort, ''left-id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''rightIdSymbol.Sort, ''right-id.Sort, ''Term.Sort, ''Attr.Sort], 'op-hook[ ''stratSymbol.Sort, ''strat.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[ ''memoSymbol.Sort, ''memo.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''precSymbol.Sort, ''prec.Sort, ''Nat.Sort, ''Attr.Sort], 'op-hook[ ''gatherSymbol.Sort, ''gather.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[ ''formatSymbol.Sort, ''format.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[ ''latexSymbol.Sort, ''latex.Sort, ''String.Sort, ''Attr.Sort], 'op-hook[ ''ctorSymbol.Sort, ''ctor.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''frozenSymbol.Sort, ''frozen.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[''polySymbol.Sort, ''poly.Sort, ''NeNatList.Sort, ''Attr.Sort], 'op-hook[''configSymbol.Sort, ''config.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''objectSymbol.Sort, ''object.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''msgSymbol.Sort, ''msg.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''portalSymbol.Sort, ''portal.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''pconstSymbol.Sort, ''pconst.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''specialSymbol.Sort, ''special.Sort, ''NeHookList.Sort, ''Attr.Sort], 'op-hook[''labelSymbol.Sort, ''label.Sort, ''Qid.Sort, ''Attr.Sort], 'op-hook[''metadataSymbol.Sort, ''metadata.Sort, ''String.Sort, ''Attr.Sort], 'op-hook[''owiseSymbol.Sort, ''owise.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''variantAttrSymbol.Sort, ''variant.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[ ''narrowingSymbol.Sort, ''narrowing.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''nonexecSymbol.Sort, ''nonexec.Sort, 'nil.TypeList, ''Attr.Sort], 'op-hook[''printSymbol.Sort, ''print.Sort, ''QidList.Sort, ''Attr.Sort], 'op-hook[''emptyAttrSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''AttrSet.Sort], 'op-hook[''attrSetSymbol.Sort, ''__.Sort, '__[ ''AttrSet.Sort, ''AttrSet.Sort], ''AttrSet.Sort], 'op-hook[ ''opDeclSymbol.Sort, ''op_:_->_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''OpDecl.Sort], 'op-hook[ ''opDeclSetSymbol.Sort, ''__.Sort, '__[''OpDeclSet.Sort, ''OpDeclSet.Sort], ''OpDeclSet.Sort], 'op-hook[''emptyOpDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''OpDeclSet.Sort], 'op-hook[''mbSymbol.Sort, ''mb_:_`[_`]..Qid, '__[''Term.Sort, ''Sort.Sort, ''AttrSet.Sort], ''MembAx.Sort], 'op-hook[''cmbSymbol.Sort, ''cmb_:_if_`[_`]..Qid, '__[ ''Term.Sort, ''Sort.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''MembAx.Sort], 'op-hook[''emptyMembAxSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''MembAxSet.Sort], 'op-hook[''membAxSetSymbol.Sort, ''__.Sort, '__[''MembAxSet.Sort, ''MembAxSet.Sort], ''MembAxSet.Sort], 'op-hook[''eqSymbol.Sort, ''eq_=_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Equation.Sort], 'op-hook[''ceqSymbol.Sort, ''ceq_=_if_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''Equation.Sort], 'op-hook[''emptyEquationSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''EquationSet.Sort], 'op-hook[ ''equationSetSymbol.Sort, ''__.Sort, '__[''EquationSet.Sort, ''EquationSet.Sort], ''EquationSet.Sort], 'op-hook[''rlSymbol.Sort, ''rl_=>_`[_`]..Qid, '__[''Term.Sort, ''Term.Sort, ''AttrSet.Sort], ''Rule.Sort], 'op-hook[''crlSymbol.Sort, ''crl_=>_if_`[_`]..Qid, '__[ ''Term.Sort, ''Term.Sort, ''Condition.Sort, ''AttrSet.Sort], ''Rule.Sort], 'op-hook[''emptyRuleSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''RuleSet.Sort], 'op-hook[''ruleSetSymbol.Sort, ''__.Sort, '__[ ''RuleSet.Sort, ''RuleSet.Sort], ''RuleSet.Sort], 'op-hook[ ''stratDeclSymbol.Sort, ''strat_:_@_`[_`]..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''AttrSet.Sort], ''StratDecl.Sort], 'op-hook[ ''emptyStratDeclSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratDeclSet.Sort], 'op-hook[''stratDeclSetSymbol.Sort, ''__.Sort, '__[ ''StratDeclSet.Sort, ''StratDeclSet.Sort], ''StratDeclSet.Sort], 'op-hook[ ''sdSymbol.Sort, ''sd_:=_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''AttrSet.Sort], ''StratDefinition.Sort], 'op-hook[ ''csdSymbol.Sort, ''csd_:=_if_`[_`]..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort, ''EqCondition.Sort, ''AttrSet.Sort], ''StratDefinition.Sort], 'op-hook[''emptyStratDefSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratDefSet.Sort], 'op-hook[ ''stratDefSetSymbol.Sort, ''__.Sort, '__[''StratDefSet.Sort, ''StratDefSet.Sort], ''StratDefSet.Sort], 'op-hook[''fmodSymbol.Sort, ''fmod_is_sorts_.____endfm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FModule.Sort], 'op-hook[''fthSymbol.Sort, ''fth_is_sorts_.____endfth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort], ''FTheory.Sort], 'op-hook[''modSymbol.Sort, ''mod_is_sorts_._____endm.Constant, '__[''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''SModule.Sort], 'op-hook[ ''thSymbol.Sort, ''th_is_sorts_._____endth.Constant, '__[''Qid.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort], ''STheory.Sort], 'op-hook[''smodSymbol.Sort, ''smod_is_sorts_._______endsm.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratModule.Sort], 'op-hook[ ''sthSymbol.Sort, ''sth_is_sorts_._______endsth.Constant, '__[ ''Header.Sort, ''ImportList.Sort, ''SortSet.Sort, ''SubsortDeclSet.Sort, ''OpDeclSet.Sort, ''MembAxSet.Sort, ''EquationSet.Sort, ''RuleSet.Sort, ''StratDeclSet.Sort, ''StratDefSet.Sort], ''StratTheory.Sort], 'op-hook[ ''sortMappingSymbol.Sort, ''sort_to_..Qid, '__[''Sort.Sort, ''Sort.Sort], ''SortMapping.Sort], 'op-hook[''emptySortMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''SortMappingSet.Sort], 'op-hook[ ''sortMappingSetSymbol.Sort, ''__.Sort, '__[''SortMappingSet.Sort, ''SortMappingSet.Sort], ''SortMappingSet.Sort], 'op-hook[ ''opMappingSymbol.Sort, ''op_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''OpMapping.Sort], 'op-hook[''opSpecificMappingSymbol.Sort, ''op_:_->_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''OpMapping.Sort], 'op-hook[''opTermMappingSymbol.Sort, ''op_to`term_..Qid, '__[''Term.Sort, ''Term.Sort], ''OpMapping.Sort], 'op-hook[''emptyOpMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''OpMappingSet.Sort], 'op-hook[''opMappingSetSymbol.Sort, ''__.Sort, '__[ ''OpMappingSet.Sort, ''OpMappingSet.Sort], ''OpMappingSet.Sort], 'op-hook[ ''stratMappingSymbol.Sort, ''strat_to_..Qid, '__[''Qid.Sort, ''Qid.Sort], ''StratMapping.Sort], 'op-hook[''stratSpecificMappingSymbol.Sort, ''strat_:_@_to_..Qid, '__[''Qid.Sort, ''TypeList.Sort, ''Type.Sort, ''Qid.Sort], ''StratMapping.Sort], 'op-hook[''stratExprMappingSymbol.Sort, ''strat_to`expr_..Qid, '__[''CallStrategy.Sort, ''Strategy.Sort], ''StratMapping.Sort], 'op-hook[''emptyStratMappingSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''StratMappingSet.Sort], 'op-hook[ ''stratMappingSetSymbol.Sort, ''__.Sort, '__[''StratMappingSet.Sort, ''StratMappingSet.Sort], ''StratMappingSet.Sort], 'op-hook[ ''viewSymbol.Sort, ''view_from_to_is___endv.Sort, '__[''Header.Sort, ''ModuleExpression.Sort, ''ModuleExpression.Sort, ''SortMappingSet.Sort, ''OpMappingSet.Sort, ''StratMappingSet.Sort], ''View.Sort], 'op-hook[ ''anyTypeSymbol.Sort, ''anyType.Sort, 'nil.TypeList, ''Type?.Sort], 'op-hook[''unificandPairSymbol.Sort, ''_=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''UnificandPair.Sort], 'op-hook[ ''unificationConjunctionSymbol.Sort, ''_/\_.Sort, '__[ ''UnificationProblem.Sort, ''UnificationProblem.Sort], ''UnificationProblem.Sort], 'op-hook[''patternSubjectPairSymbol.Sort, ''_<=?_.Sort, '__[''Term.Sort, ''Term.Sort], ''PatternSubjectPair.Sort], 'op-hook[''matchingConjunctionSymbol.Sort, ''_/\_.Sort, '__[ ''MatchingProblem.Sort, ''MatchingProblem.Sort], ''MatchingProblem.Sort], 'op-hook[''resultPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort], ''ResultPair.Sort], 'op-hook[''resultTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''ResultTriple.Sort], 'op-hook[''result4TupleSymbol.Sort, ''`{_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Context.Sort], ''Result4Tuple.Sort], 'op-hook[''matchPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Context.Sort], ''MatchPair.Sort], 'op-hook[''unificationTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''UnificationTriple.Sort], 'op-hook[''variantSymbol.Sort, ''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Qid.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort], 'op-hook[ ''narrowingApplyResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingApplyResult.Sort], 'op-hook[ ''narrowingSearchResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchResult.Sort], 'op-hook[ ''traceStepSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Rule.Sort], ''TraceStep.Sort], 'op-hook[''nilTraceSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''Trace.Sort], 'op-hook[''traceSymbol.Sort, ''__.Sort, '__[''Trace.Sort, ''Trace.Sort], ''Trace.Sort], 'op-hook[ ''narrowingStepSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '__[ ''Context.Sort, ''Qid.Sort, ''Substitution.Sort, ''Qid.Sort, ''Term.Sort, ''Type.Sort, ''Substitution.Sort], ''NarrowingStep.Sort], 'op-hook[ ''nilNarrowingTraceSymbol.Sort, ''nil.Sort, 'nil.TypeList, ''NarrowingTrace.Sort], 'op-hook[''narrowingTraceSymbol.Sort, ''__.Sort, '__[''NarrowingTrace.Sort, ''NarrowingTrace.Sort], ''NarrowingTrace.Sort], 'op-hook[''narrowingSearchPathResultSymbol.Sort, ''`{_`,_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Type.Sort, ''Substitution.Sort, ''NarrowingTrace.Sort, ''Substitution.Sort, ''Qid.Sort], ''NarrowingSearchPathResult.Sort], 'op-hook[ ''smtResultSymbol.Sort, ''`{_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Term.Sort, ''Nat.Sort], ''SmtResult.Sort], 'op-hook[ ''noParseSymbol.Sort, ''noParse.Sort, ''Nat.Sort, ''ResultPair?.Sort], 'op-hook[''ambiguitySymbol.Sort, ''ambiguity.Sort, '__[''ResultPair.Sort, ''ResultPair.Sort], ''ResultPair?.Sort], 'op-hook[''failure2Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''ResultPair?.Sort], 'op-hook[ ''failure3Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''ResultTriple?.Sort], 'op-hook[''failureIncomplete3Symbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''ResultTriple?.Sort], 'op-hook[ ''failure4Symbol.Sort, ''failure.Sort, 'nil.TypeList, ''Result4Tuple?.Sort], 'op-hook[''noUnifierPairSymbol.Sort, ''noUnifier.Sort, 'nil.TypeList, ''UnificationPair?.Sort], 'op-hook[ ''noUnifierTripleSymbol.Sort, ''noUnifier.Sort, 'nil.TypeList, ''UnificationTriple?.Sort], 'op-hook[''noUnifierIncompletePairSymbol.Sort, ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationPair?.Sort], 'op-hook[''noUnifierIncompleteTripleSymbol.Sort, ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationTriple?.Sort], 'op-hook[''noVariantSymbol.Sort, ''noVariant.Sort, 'nil.TypeList, ''Variant?.Sort], 'op-hook[''noVariantIncompleteSymbol.Sort, ''noVariantIncomplete.Sort, 'nil.TypeList, ''Variant?.Sort], 'op-hook[ ''narrowingApplyFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort], 'op-hook[ ''narrowingApplyFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingApplyResult?.Sort], 'op-hook[ ''narrowingSearchFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort], 'op-hook[ ''narrowingSearchFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchResult?.Sort], 'op-hook[ ''narrowingSearchPathFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort], 'op-hook[ ''narrowingSearchPathFailureIncompleteSymbol.Sort, ''failureIncomplete.Sort, 'nil.TypeList, ''NarrowingSearchPathResult?.Sort], 'op-hook[''noMatchSubstSymbol.Sort, ''noMatch.Sort, 'nil.TypeList, ''Substitution?.Sort], 'op-hook[ ''noMatchIncompleteSubstSymbol.Sort, ''noMatchIncomplete.Sort, 'nil.TypeList, ''Substitution?.Sort], 'op-hook[''noMatchPairSymbol.Sort, ''noMatch.Sort, 'nil.TypeList, ''MatchPair?.Sort], 'op-hook[ ''failureTraceSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''Trace?.Sort], 'op-hook[''smtFailureSymbol.Sort, ''failure.Sort, 'nil.TypeList, ''SmtResult?.Sort], 'op-hook[''noStratParseSymbol.Sort, ''noStratParse.Sort, ''Nat.Sort, ''Strategy?.Sort], 'op-hook[ ''stratAmbiguitySymbol.Sort, ''ambiguity.Sort, '__[''Strategy.Sort, ''Strategy.Sort], ''Strategy?.Sort], 'op-hook[''mixfixSymbol.Sort, ''mixfix.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''withParensSymbol.Sort, ''with-parens.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''withSortsSymbol.Sort, ''with-sorts.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''flatSymbol.Sort, ''flat.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''formatPrintOptionSymbol.Sort, ''format.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''numberSymbol.Sort, ''number.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[''ratSymbol.Sort, ''rat.Sort, 'nil.TypeList, ''PrintOption.Sort], 'op-hook[ ''emptyPrintOptionSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''PrintOptionSet.Sort], 'op-hook[''printOptionSetSymbol.Sort, ''__.Sort, '__[''PrintOptionSet.Sort, ''PrintOptionSet.Sort], ''PrintOptionSet.Sort], 'op-hook[''delaySymbol.Sort, ''delay.Sort, 'nil.TypeList, ''VariantOption.Sort], 'op-hook[''filterSymbol.Sort, ''filter.Sort, 'nil.TypeList, ''VariantOption.Sort], 'op-hook[ ''emptyVariantOptionSetSymbol.Sort, ''none.Sort, 'nil.TypeList, ''VariantOptionSet.Sort], 'op-hook[''variantOptionSetSymbol.Sort, ''__.Sort, '__[''VariantOptionSet.Sort, ''VariantOptionSet.Sort], ''VariantOptionSet.Sort], 'op-hook[''breadthFirstSymbol.Sort, ''breadthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort], 'op-hook[ ''depthFirstSymbol.Sort, ''depthFirst.Sort, 'nil.TypeList, ''SrewriteOption.Sort], 'op-hook[''legacyUnificationPairSymbol.Sort, ''`{_`,_`}.Qid, '__[''Substitution.Sort, ''Nat.Sort], ''UnificationPair.Sort], 'op-hook[''legacyUnificationTripleSymbol.Sort, ''`{_`,_`,_`}.Qid, '__[''Substitution.Sort, ''Substitution.Sort, ''Nat.Sort], ''UnificationTriple.Sort], 'op-hook[ ''legacyVariantSymbol.Sort, ''`{_`,_`,_`,_`,_`}.Qid, '__[''Term.Sort, ''Substitution.Sort, ''Nat.Sort, ''Parent.Sort, ''Bool.Sort], ''Variant.Sort], 'term-hook[''trueTerm.Sort, ''true.Bool.Constant], 'term-hook[''falseTerm.Sort, ''false.Bool.Constant]]]], 'op_:_->_`[_`].[ ''metaRewrite.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaRewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaSearch.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Condition`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultTriple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSearch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSearchPath.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Condition`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Trace?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSearchPath.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSmtSearch.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Condition`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[SmtResult?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSmtSearch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaSrewrite.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[StrategyList`,Strategy?`].Kind, ''`[SrewriteOption`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[ResultPair?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSrewrite.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''legacyMetaVariantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[ ''metaVariantDisjointUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[UnificationTriple?`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaVariantDisjointUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaVariantMatch.Sort, '__[ ''`[Module`].Kind, ''`[MatchingProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Substitution?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaVariantMatch.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''legacyMetaVariantUnify.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''metaVariantUnify.Sort, '__[''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'none.AttrSet], 'op_:_->_`[_`].[''metaVariantUnify.Sort, '__[ ''`[Module`].Kind, ''`[UnificationProblem`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[VariantOptionSet`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaVariantUnify.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaXapply.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Substitution?`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[Result4Tuple?`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaXapply.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''metaXmatch.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Condition`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind, ''`[FindResult`,NatList`,Bound`,Parent`].Kind], ''`[MatchPair?`,UnificationPair?`,MatchOrUnificationPair`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaXmatch.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''minimalSorts.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaMinimalSorts.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''mixfix.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''NarrowingTrace.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''nil.Sort, 'nil.TypeList, ''Trace.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noMatch.Sort, 'nil.TypeList, ''MatchPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noMatch.Sort, 'nil.TypeList, ''Substitution?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noMatchIncomplete.Sort, 'nil.TypeList, ''Substitution?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noParse.Sort, ''Nat.Sort, ''ResultPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noStratParse.Sort, ''Nat.Sort, ''Strategy?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifier.Sort, 'nil.TypeList, ''UnificationPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifier.Sort, 'nil.TypeList, ''UnificationTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationPair?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noUnifierIncomplete.Sort, 'nil.TypeList, ''UnificationTriple?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''noVariant.Sort, 'nil.TypeList, ''Variant?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''noVariantIncomplete.Sort, 'nil.TypeList, ''Variant?.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''Parent.Sort, 'none.AttrSet], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''PrintOptionSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''none.Sort, 'nil.TypeList, ''VariantOptionSet.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''number.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''rat.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[ ''sameKind.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSameKind.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''sortLeq.Sort, '__[''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[Bool`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaSortLeq.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''upEqs.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[EquationSet`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpEqs.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''upImports.Sort, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[ImportList`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaUpImports.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upMbs.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[MembAxSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpMbs.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upModule.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[Module`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpModule.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upOpDecls.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[OpDeclSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpOpDecls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upRls.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[RuleSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpRls.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSds.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[StratDefSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpSds.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSorts.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpSorts.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upStratDecls.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[StratDeclSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpStratDecls.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upSubsortDecls.Sort, '__[''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[Bool`].Kind], ''`[SubsortDeclSet`].Kind, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpSubsortDecls.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''upTerm.Sort, ''Universal.Sort, ''Term.Sort, '__['poly['s_['0.Zero]], 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaUpTerm.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]]], 'op_:_->_`[_`].[''upView.Sort, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind, ''`[View`].Kind, 'special['__['id-hook[''MetaLevelOpSymbol.Sort, ''metaUpView.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[ ''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''wellFormed.Sort, ''Module.Sort, ''Bool.Sort, 'special['__['id-hook[ ''MetaLevelOpSymbol.Sort, ''metaWellFormedModule.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''wellFormed.Sort, '__[ ''`[Module`].Kind, ''`[QidList`,TypeListSet`,QidSet`,Type?`,ModuleExpression`,ParameterList`,GTermList`,Header`].Kind], ''`[Bool`].Kind, 'special['__[ 'id-hook[''MetaLevelOpSymbol.Sort, ''metaWellFormedTerm.Sort], 'op-hook[ ''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[''wellFormed.Sort, '__[ ''`[Module`].Kind, ''`[Substitution?`].Kind], ''`[Bool`].Kind, 'special[ '__['id-hook[''MetaLevelOpSymbol.Sort, ''metaWellFormedSubstitution.Sort], 'op-hook[''shareWith.Sort, ''metaReduce.Sort, '__[''Module.Sort, ''QidList.Sort], ''ResultPair?.Sort]]]], 'op_:_->_`[_`].[ ''with-parens.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr], 'op_:_->_`[_`].[''with-sorts.Sort, 'nil.TypeList, ''PrintOption.Sort, 'ctor.Attr]], 'none.MembAxSet, '__['eq_=_`[_`].['_`[_`][ ''$applySubstitution.Sort, '_`,_[''Q:Qid.Variable, ''S:Substitution.Variable]], ''Q:Qid.Variable, 'owise.Attr], 'eq_=_`[_`].[ '_`[_`][''$applySubstitution.Sort, '_`,_[''V:Variable.Variable, '_`[_`][ ''_;_.Sort, '_`,_[''S:Substitution.Variable, '_`[_`][''_<-_.Sort, '_`,_[ ''V:Variable.Variable, ''T:Term.Variable]]]]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$applySubstitution.Sort, '_`,_[ '_`[_`][''_`,_.Qid, '_`,_[''T:Term.Variable, ''TL:NeTermList.Variable]], ''S:Substitution.Variable]], '_`[_`][''_`,_.Qid, '_`,_['_`[_`][ ''$applySubstitution.Sort, '_`,_[''T:Term.Variable, ''S:Substitution.Variable]], '_`[_`][''$applySubstitution.Sort, '_`,_[ ''TL:NeTermList.Variable, ''S:Substitution.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''$applySubstitution.Sort, '_`,_['_`[_`][''_`[_`].Qid, '_`,_[''Q:Qid.Variable, ''TL:NeTermList.Variable]], ''S:Substitution.Variable]], '_`[_`][''_`[_`].Qid, '_`,_[''Q:Qid.Variable, '_`[_`][''$applySubstitution.Sort, '_`,_[''TL:NeTermList.Variable, ''S:Substitution.Variable]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''applySubstitution.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''S:Substitution.Variable]], '_`[_`][''getTerm.Sort, '_`[_`][ ''metaNormalize.Sort, '_`,_[''M:Module.Variable, '_`[_`][ ''$applySubstitution.Sort, '_`,_[''T:Term.Variable, ''S:Substitution.Variable]]]]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getAccumulatedSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''A:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getAccumulatedSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''A:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getContext.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getContext.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getContext.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[ ''S:Substitution.Variable, ''C:Context.Variable]]], ''C:Context.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialTerm.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getInitialType.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getLabel.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''L:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getLabel.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''L:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getLhsSubstitution.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''LS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getMoreVariantsInLayerFlag.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''B:Bool.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getParent.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''P:Parent.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRhsSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''RS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getRule.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''R:Rule.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getRuleSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''RS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getStateVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''SV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][ ''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getSubstitution.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''S:Substitution.Variable, ''C:Context.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getSubstitution.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[ ''S:Substitution.Variable, ''V:Qid.Variable]]], ''S:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTerm.Sort, '_`[_`][''`{_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable]]], ''T:Term.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getTermSubstitution.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''TS:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getTrace.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:NarrowingTrace.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''C:Context.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''R:Rule.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getType.Sort, '_`[_`][''`{_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getType.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable]]], ''T:Type.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifier.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''U:Substitution.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getUnifierVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''C:Context.Variable, ''L:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable, ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifierVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''A:Substitution.Variable, ''SV:Qid.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''getUnifierVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''T:Type.Variable, ''S:Substitution.Variable, ''T:NarrowingTrace.Variable, ''U:Substitution.Variable, ''UV:Qid.Variable]]], ''UV:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`,_`,_`}.Qid, '_`,_[''T:Term.Variable, ''T:Type.Variable, ''C:Context.Variable, ''L:Qid.Variable, ''TS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].[ '_`[_`][''getVariableFamily.Sort, '_`[_`][''`{_`,_`,_`,_`,_`}.Qid, '_`,_[ ''T:Term.Variable, ''S:Substitution.Variable, ''Q:Qid.Variable, ''P:Parent.Variable, ''B:Bool.Variable]]], ''Q:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getVariableFamily.Sort, '_`[_`][ ''`{_`,_`,_`}.Qid, '_`,_[''LS:Substitution.Variable, ''RS:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''getVariableFamily.Sort, '_`[_`][ ''`{_`,_`}.Qid, '_`,_[''S:Substitution.Variable, ''V:Qid.Variable]]], ''V:Qid.Variable, 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaNarrowingApply.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][ ''metaNarrowingApply.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaNarrowingSearch.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaNarrowingSearch.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaNarrowingSearchPath.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaNarrowingSearchPath.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''T2:Term.Variable, ''S:Qid.Variable, ''B:Bound.Variable, ''F:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaParse.Sort, '_`,_[''M:Module.Variable, ''Q:QidList.Variable, ''T:Type?.Variable]], '_`[_`][''metaParse.Sort, '_`,_[''M:Module.Variable, ''none.EmptyQidSet.Constant, ''Q:QidList.Variable, ''T:Type?.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''T:Term.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''none.EmptyQidSet.Constant, ''T:Term.Variable, '_`[_`][''__.Sort, '_`,_[''mixfix.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[''flat.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[ ''format.PrintOption.Constant, '_`[_`][''__.Sort, '_`,_[ ''number.PrintOption.Constant, ''rat.PrintOption.Constant]]]]]]]], ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][ ''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''none.EmptyQidSet.Constant, ''T:Term.Variable, ''P:PrintOptionSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaPrettyPrint.Sort, '_`,_[''M:Module.Variable, ''VS:VariableSet.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable]], '_`[_`][''metaPrettyPrint.Sort, '_`,_[ ''M:Module.Variable, ''VS:VariableSet.Variable, ''T:Term.Variable, ''P:PrintOptionSet.Variable, ''none.EmptyQidSet.Constant]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaVariantDisjointUnify.Sort, '_`,_[ ''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][ ''metaVariantDisjointUnify.Sort, '_`,_[''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet], 'eq_=_`[_`].['_`[_`][''metaVariantUnify.Sort, '_`,_[''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''N:Nat.Variable]], '_`[_`][''metaVariantUnify.Sort, '_`,_[ ''M:Module.Variable, ''U:UnificationProblem.Variable, ''TL:TermList.Variable, ''Q:Qid.Variable, ''none.VariantOptionSet.Constant, ''N:Nat.Variable]], 'none.AttrSet]]], 'FModule) Bye. Maude-Maude3.5.1/tests/Meta/metaIntPrelude0000775000175000017510000000036415036121435017763 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntPrelude.maude -no-banner -no-advise \ > metaIntPrelude.out 2>&1 diff $srcdir/metaIntPrelude.expected metaIntPrelude.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntParse.maude0000664000175000017510000000266015036121435020525 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test parsing in the meta-interpreter. *** load metaInterpreter fmod FOO is inc RAT . sort Foo . op 0 : -> Foo . endfm mod PARSE-TEST is pr META-INTERPRETER . pr RAT . op me : -> Oid . op User : -> Cid . op term:_ : Term -> Attribute . op qids:_ : QidList -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var QL : QidList . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('FOO, true)) . rl < X : User | AS, qids: QL > insertedModule(X, Y) => < X : User | AS > parseTerm(Y, X, 'FOO, 'X:Rat, QL, anyType) . endm erew in PARSE-TEST : <> < me : User | qids: '1/2 > createInterpreter(interpreterManager, me, none) . erew in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'X:Rat) > createInterpreter(interpreterManager, me, none) . erew in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'X) > createInterpreter(interpreterManager, me, none) . erew in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'bad) > createInterpreter(interpreterManager, me, none) . erew in PARSE-TEST : <> < me : User | qids: ('1/2 '- '1) > createInterpreter(interpreterManager, me, none) . erew in PARSE-TEST : <> < me : User | qids: ('1/2 '- '1 '- '1 '/ '2) > createInterpreter(interpreterManager, me, none) . erew in PARSE-TEST : <> < me : User | qids: '0 > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntParse.expected0000664000175000017510000000420215036121435021225 0ustar nileshnilesh========================================== erewrite in PARSE-TEST : <> < me : User | qids: '1/2 > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), { '_/_['s_['0.Zero], 's_^2['0.Zero]], 'PosRat}) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'X:Rat) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), { '_+_['_/_['s_['0.Zero], 's_^2['0.Zero]], 'X:Rat], 'Rat}) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'X) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), { '_+_['_/_['s_['0.Zero], 's_^2['0.Zero]], 'X:Rat], 'Rat}) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: ('1/2 '+ 'bad) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), noParse(2)) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: ('1/2 '- '1) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), { '_-_['_/_['s_['0.Zero], 's_^2['0.Zero]], 's_['0.Zero]], 'Rat}) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: ('1/2 '- '1 '- '1 '/ '2) > createInterpreter(interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), { '_-_['_-_['_/_['s_['0.Zero], 's_^2['0.Zero]], 's_['0.Zero]], '_/_['s_[ '0.Zero], 's_^2['0.Zero]]], 'Rat}) ========================================== erewrite in PARSE-TEST : <> < me : User | qids: '0 > createInterpreter( interpreterManager, me, none) . rewrites: 5 result Configuration: <> < me : User | none > parsedTerm(me, interpreter(0), ambiguity({'0.Zero, 'Zero}, {'0.Foo, 'Foo})) Bye. Maude-Maude3.5.1/tests/Meta/metaIntParse0000775000175000017510000000035415036121435017434 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntParse.maude -no-banner -no-advise \ > metaIntParse.out 2>&1 diff $srcdir/metaIntParse.expected metaIntParse.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntNewNarrowSearch.maude0000664000175000017510000000721615036121435022525 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test getNarrowingSearchResult()/getNarrowingSearchResultAndPath() in the meta-interpreter. *** load metaInterpreter mod NARROW is sort Foo . ops f g h : Foo -> Foo . ops i j k : Foo Foo -> Foo . vars X Y Z W A B C D : Foo . eq j(f(X), Y) = i(f(Y), X) [variant] . rl g(i(X, k(Y, Z))) => f(k(Z, X)) [narrowing] . endm mod NARROW-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op empty : -> MsgList . op _;_ : MsgList MsgList -> MsgList [assoc id: empty] . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : MsgList -> Attribute . op start:_ : Term -> Attribute . op goal:_ : Term -> Attribute . op fold:_ : Qid -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars S S' : Substitution . var ST T G : Term . var TY : Type . var C : Context . var Q Q' L : Qid . var ML : MsgList . var TL : TermList . var F : Qid . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('NARROW, true)) . rl < X : User | AS, start: ST, goal: G, fold: F > insertedModule(X, Y) => < X : User | AS, soln: 1, start: ST, goal: G, fold: F, got: empty > getNarrowingSearchResult(Y, X, 'NARROW, ST, G, '*, unbounded, F, 0) . rl < X : User | AS, soln: N, start: ST, goal: G, fold: F, got: ML > gotNarrowingSearchResult(X, Y, M, T, TY, S, Q, S', Q') => < X : User | AS, soln: (N + 1), start: ST, goal: G, fold: F, got: (ML ; gotNarrowingSearchResult(X, Y, M, T, TY, S, Q, S', Q')) > getNarrowingSearchResult(Y, X, 'NARROW, ST, G, '*, unbounded, F, N) . endm set show breakdown on . erew in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > createInterpreter(interpreterManager, me, none) . erew in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > createInterpreter(interpreterManager, me, none) . mod NARROW-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op empty : -> MsgList . op _;_ : MsgList MsgList -> MsgList [assoc id: empty] . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : MsgList -> Attribute . op start:_ : Term -> Attribute . op goal:_ : Term -> Attribute . op fold:_ : Qid -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars S S' : Substitution . var ST T G : Term . var TY : Type . var C : Context . var Q Q' L : Qid . var ML : MsgList . var TL : TermList . var F : Qid . var TR : NarrowingTrace . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('NARROW, true)) . rl < X : User | AS, start: ST, goal: G, fold: F > insertedModule(X, Y) => < X : User | AS, soln: 1, start: ST, goal: G, fold: F, got: empty > getNarrowingSearchResultAndPath(Y, X, 'NARROW, ST, G, '*, unbounded, F, 0) . rl < X : User | AS, soln: N, start: ST, goal: G, fold: F, got: ML > gotNarrowingSearchResultAndPath(X, Y, M, T, TY, S, TR, S', Q') => < X : User | AS, soln: (N + 1), start: ST, goal: G, fold: F, got: (ML ; gotNarrowingSearchResultAndPath(X, Y, M, T, TY, S, TR, S', Q')) > getNarrowingSearchResultAndPath(Y, X, 'NARROW, ST, G, '*, unbounded, F, N) . endm erew in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > createInterpreter(interpreterManager, me, none) . erew in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntNewNarrowSearch.expected0000664000175000017510000001242715036121435023233 0ustar nileshnilesh========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > createInterpreter(interpreterManager, me, none) . rewrites: 17 mb applications: 0 equational rewrites: 8 rule rewrites: 5 variant narrowing steps: 3 narrowing steps: 1 result Configuration: <> < me : User | soln: 4, got: (gotNarrowingSearchResult( me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@) ; gotNarrowingSearchResult(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '%) ; gotNarrowingSearchResult(me, interpreter(0), 3, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo, '%, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@)), start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > noSuchResult(me, interpreter(0), 4, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > createInterpreter(interpreterManager, me, none) . rewrites: 17 mb applications: 0 equational rewrites: 8 rule rewrites: 5 variant narrowing steps: 3 narrowing steps: 1 result Configuration: <> < me : User | soln: 4, got: (gotNarrowingSearchResult( me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@) ; gotNarrowingSearchResult(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, '#, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '%) ; gotNarrowingSearchResult(me, interpreter(0), 3, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo, '%, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@)), start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > noSuchResult(me, interpreter(0), 4, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > createInterpreter(interpreterManager, me, none) . rewrites: 17 mb applications: 0 equational rewrites: 8 rule rewrites: 5 variant narrowing steps: 3 narrowing steps: 1 result Configuration: <> < me : User | soln: 4, got: ( gotNarrowingSearchResultAndPath(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, nil, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@) ; gotNarrowingSearchResultAndPath(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, nil, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '%) ; gotNarrowingSearchResultAndPath(me, interpreter(0), 3, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; '#2:Foo <- '%3:Foo ; 'X:Foo <- 'f['%3:Foo] ; 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%2:Foo, '%, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo }, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@)), start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'none > noSuchResult(me, interpreter(0), 4, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > createInterpreter(interpreterManager, me, none) . rewrites: 17 mb applications: 0 equational rewrites: 8 rule rewrites: 5 variant narrowing steps: 3 narrowing steps: 1 result Configuration: <> < me : User | soln: 4, got: ( gotNarrowingSearchResultAndPath(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, nil, '#1:Foo <- '@1:Foo ; '#2:Foo <- '@2:Foo ; 'C:Foo <- 'g['j['@1:Foo, '@2:Foo]], '@) ; gotNarrowingSearchResultAndPath(me, interpreter(0), 1, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, nil, '#1:Foo <- 'f['%2:Foo] ; '#2:Foo <- '%1:Foo ; 'C:Foo <- 'g['i['f['%1:Foo], '%2:Foo]], '%) ; gotNarrowingSearchResultAndPath(me, interpreter(0), 3, 'g['j['#1:Foo, '#2:Foo]], 'Foo, 'A:Foo <- '#1:Foo ; 'B:Foo <- '#2:Foo, { [], ', '#1:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; '#2:Foo <- '%3:Foo ; 'X:Foo <- 'f['%3:Foo] ; 'Y:Foo <- '%1:Foo ; 'Z:Foo <- '%2:Foo, '%, 'f['k['%2:Foo, 'f['%3:Foo]]], 'Foo, 'A:Foo <- 'f['k['%1:Foo, '%2:Foo]] ; 'B:Foo <- '%3:Foo }, '%2:Foo <- '@1:Foo ; '%3:Foo <- '@2:Foo ; 'C:Foo <- 'f['k['@1:Foo, 'f['@2:Foo]]], '@)), start: ('g['j['A:Foo, 'B:Foo]]), goal: 'C:Foo, fold: 'match > noSuchResult(me, interpreter(0), 4, true) Bye. Maude-Maude3.5.1/tests/Meta/metaIntNewNarrowSearch0000775000175000017510000000042415036121435021430 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntNewNarrowSearch.maude -no-banner -no-advise \ > metaIntNewNarrowSearch.out 2>&1 diff $srcdir/metaIntNewNarrowSearch.expected metaIntNewNarrowSearch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntNewNarrow.maude0000664000175000017510000001440515036121435021375 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test getOneStepNarrowing() in the meta-interpreter. *** load metaInterpreter mod NARROW is sort Foo . op f : Foo Foo -> Foo [assoc comm] . ops g h : Foo -> Foo . ops a b c d e : -> Foo . vars X Y Z W : Foo . rl g(f(X, X)) => h(X) [narrowing]. endm mod NARROW-TEST is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op empty : -> MsgList . op _;_ : MsgList MsgList -> MsgList [assoc id: empty] . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : MsgList -> Attribute . op start:_ : Term -> Attribute . op irred:_ : TermList -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars S S' : Substitution . var ST T : Term . var TY : Type . var C : Context . var Q L : Qid . var ML : MsgList . var TL : TermList . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('NARROW, true)) . rl < X : User | AS, start: ST, irred: TL > insertedModule(X, Y) => < X : User | AS, soln: 1, start: ST, irred: TL, got: empty > getOneStepNarrowing(Y, X, 'NARROW, ST, TL, '#, 0) . rl < X : User | AS, soln: N, start: ST, irred: TL, got: ML > gotOneStepNarrowing(X, Y, M, T, TY, C, L, S, S', Q) => < X : User | AS, soln: (N + 1), start: ST, irred: TL, got: (ML ; gotOneStepNarrowing(X, Y, M, T, TY, C, L, S, S', Q)) > getOneStepNarrowing(Y, X, 'NARROW, ST, TL, '#, N) . endm set show breakdown on . erew in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, none) . mod NARROW is sort Foo . op f : Foo Foo -> Foo [assoc] . ops g h : Foo -> Foo . ops a b c d e : -> Foo . vars X Y Z W : Foo . rl g(f(X, X)) => h(X) [narrowing]. endm erew in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, none) . erew in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#22:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, none) . erew in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#23:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, none) . mod XOR is sorts Elt Expr . subsort Elt < Expr . ops a b c d e : -> Elt . op _+_ : Expr Expr -> Expr [assoc comm] . op 0 : -> Elt . vars W X Y Z : Expr . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endm mod NARROW is inc XOR . ops g h : Expr -> Expr . op f : Expr Expr -> Expr . vars W X Y Z : Expr . rl g(Y + a) => h(Y) [narrowing label one] . endm *** bound variable in irreducibility constraint erew in NARROW-TEST : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, none) . *** unbound variable in irreducibility constraint erew in NARROW-TEST : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, none) . *** # variable in input erew in NARROW-TEST : <> < me : User | start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, none) . mod NARROW-TEST2 is pr META-INTERPRETER . sort MsgList . subsort Msg < MsgList . op empty : -> MsgList . op _;_ : MsgList MsgList -> MsgList [assoc id: empty] . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : MsgList -> Attribute . op start:_ : Term -> Attribute . op irred:_ : TermList -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars S S' : Substitution . var ST T : Term . var TY : Type . var C : Context . var Q L : Qid . var ML : MsgList . var TL : TermList . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('NARROW, true)) . rl < X : User | AS, start: ST, irred: TL > insertedModule(X, Y) => < X : User | AS, soln: 1, start: ST, irred: TL, got: empty > getOneStepNarrowing(Y, X, 'NARROW, ST, TL, '#, (delay filter), 0) . rl < X : User | AS, soln: N, start: ST, irred: TL, got: ML > gotOneStepNarrowing(X, Y, M, T, TY, C, L, S, S', Q) => < X : User | AS, soln: (N + 1), start: ST, irred: TL, got: (ML ; gotOneStepNarrowing(X, Y, M, T, TY, C, L, S, S', Q)) > getOneStepNarrowing(Y, X, 'NARROW, ST, TL, '#, (delay filter), N) . endm *** bound variable in irreducibility constraint erew in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, none) . *** unbound variable in irreducibility constraint erew in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, none) . *** # variable in input erew in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > createInterpreter(interpreterManager, me, none) . fmod EXCLUSIVE-OR is sorts Elem ElemXor . subsort Elem < ElemXor . ops a b c : -> Elem . op mt : -> ElemXor . op _*_ : ElemXor ElemXor -> ElemXor [assoc comm] . vars X Y Z U V : [ElemXor] . vars V1 V2 V3 V4 V5 V6 V7 V8 V9 : [ElemXor] . eq [idem] : X * X = mt [variant] . eq [idem-Coh] : X * X * Z = Z [variant] . eq [id] : X * mt = X [variant] . op f1 : [ElemXor] -> [ElemXor] . op f2 : [ElemXor] [ElemXor] -> [ElemXor] . op f3 : [ElemXor] [ElemXor] [ElemXor] -> [ElemXor] . endfm mod NARROW is inc EXCLUSIVE-OR . vars W X Y Z : [ElemXor] . op f : ElemXor ElemXor -> ElemXor . rl X * Y => f(X, Y) [narrowing label one] . endm *** 57 unifiers variant unify in NARROW : A:ElemXor * B:ElemXor =? X * Y . *** 1 unifier filtered variant unify in NARROW : A:ElemXor * B:ElemXor =? X * Y . erew in NARROW-TEST : <> < me : User | start: ('_*_['A:ElemXor, 'B:ElemXor]), irred: empty > createInterpreter(interpreterManager, me, none) . erew in NARROW-TEST2 : <> < me : User | start: ('_*_['A:ElemXor, 'B:ElemXor]), irred: empty > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntNewNarrow.expected0000664000175000017510000017320715036121435022111 0ustar nileshnilesh========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, none) . rewrites: 184 mb applications: 0 equational rewrites: 92 rule rewrites: 47 variant narrowing steps: 0 narrowing steps: 45 result Configuration: <> < me : User | soln: 46, got: (gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo, '@6:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@4:Foo, '@4:Foo, '@5:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@5:Foo, '@6:Foo, '@6:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo, '@6:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@4:Foo, '@4:Foo, '@5:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@4:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@5:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@4:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@4:Foo, '@5:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [ ], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@3:Foo] ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@3:Foo, '@3:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@4:Foo, '@5:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo, '@4:Foo, '@4:Foo] ; '#22:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [ ], ', '#21:Foo <- 'f['@2:Foo, '@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [ ], ', '#21:Foo <- 'f['@2:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo] ; '#22:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo] ; '#23:Foo <- 'f['@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@3:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo, '@5:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@3:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [ ], ', '#21:Foo <- 'f['@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@1:Foo, '@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- 'f['@1:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo] ; '#23:Foo <- 'f['@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@2:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo] ; '#22:Foo <- 'f['@1:Foo, '@1:Foo] ; '#23:Foo <- 'f['@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@2:Foo, '@2:Foo] ; '#23:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@2:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo, '@5:Foo, '@5:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo, '@5:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo, '@4:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [ ], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@3:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@3:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@3:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@3:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@2:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@2:Foo, '@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@1:Foo, '@2:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@2:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@3:Foo, '@4:Foo, '@4:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@4:Foo], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo, '@3:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@2:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@2:Foo ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@2:Foo ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@)), start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, none) . rewrites: 32 mb applications: 0 equational rewrites: 16 rule rewrites: 9 variant narrowing steps: 0 narrowing steps: 7 result Configuration: <> < me : User | soln: 8, got: (gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@3:Foo, '@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@3:Foo, '@1:Foo, '@2:Foo, '@3:Foo] ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@3:Foo, '@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@3:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@2:Foo, '@1:Foo, '@3:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@3:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@3:Foo, '@1:Foo] ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- 'f['@2:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- 'f['@2:Foo, '@1:Foo] ; '#22:Foo <- '@1:Foo ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@3:Foo]], 'Foo, [], ', '#21:Foo <- '@2:Foo ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@3:Foo, '@1:Foo, '@2:Foo, '@3:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@3:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@2:Foo ; '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo]], 'Foo, [], ', '#21:Foo <- '@1:Foo ; '#22:Foo <- 'f['@1:Foo, '@2:Foo] ; '#23:Foo <- '@2:Foo, 'X:Foo <- 'f['@1:Foo, '@2:Foo], '@)), start: ('g['f['#22:Foo, '#21:Foo, '#23:Foo]]), irred: empty > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#22:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, none) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 12 mb applications: 0 equational rewrites: 6 rule rewrites: 4 variant narrowing steps: 0 narrowing steps: 2 result Configuration: <> < me : User | soln: 3, got: (gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@1:Foo, '@2:Foo]], 'Foo, [], ', '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- '@1:Foo ; '#23:Foo <- 'f['@1:Foo, '@1:Foo], 'X:Foo <- 'f['@1:Foo, '@1:Foo], '@)), start: ('g['f['#22:Foo, '#22:Foo, '#23:Foo]]), irred: empty > noSuchResult(me, interpreter(0), 0, false) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('g['f['#22:Foo, '#23:Foo, '#23:Foo]]), irred: empty > createInterpreter(interpreterManager, me, none) . Warning: Unification modulo the theory of operator f has encountered an instance for which it may not be complete. rewrites: 20 mb applications: 0 equational rewrites: 10 rule rewrites: 6 variant narrowing steps: 0 narrowing steps: 4 result Configuration: <> < me : User | soln: 5, got: (gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo] ; '#23:Foo <- 'f['@2:Foo, '@1:Foo, '@2:Foo], 'X:Foo <- 'f['@1:Foo, '@2:Foo, '@2:Foo, '@1:Foo, '@2:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@1:Foo, '@1:Foo] ; '#23:Foo <- 'f['@1:Foo, '@1:Foo], 'X:Foo <- 'f['@1:Foo, '@1:Foo, '@1:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@2:Foo, '@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo, '@2:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@2:Foo, '@1:Foo, '@1:Foo], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'h['f['@1:Foo, '@1:Foo]], 'Foo, [], ', '#22:Foo <- 'f['@1:Foo, '@1:Foo] ; '#23:Foo <- '@1:Foo, 'X:Foo <- 'f['@1:Foo, '@1:Foo], '@)), start: ('g['f['#22:Foo, '#23:Foo, '#23:Foo]]), irred: empty > noSuchResult(me, interpreter(0), 0, false) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, none) . rewrites: 28 mb applications: 0 equational rewrites: 8 rule rewrites: 5 variant narrowing steps: 12 narrowing steps: 3 result Configuration: <> < me : User | soln: 4, got: (gotOneStepNarrowing(me, interpreter(0), 7, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['h['b.Elt], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- 'a.Elt ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- 'b.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ '_+_['a.Elt, 'b.Elt, '%1:Expr]], '%2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '%1:Expr ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr], '%)), start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > noSuchResult(me, interpreter(0), 6, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, none) . rewrites: 127 mb applications: 0 equational rewrites: 26 rule rewrites: 14 variant narrowing steps: 75 narrowing steps: 12 result Configuration: <> < me : User | soln: 13, got: (gotOneStepNarrowing(me, interpreter(0), 31, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['h['b.Elt], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- 'a.Elt ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- 'b.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 19, 'f['h[ '_+_['a.Elt, 'b.Elt, '%1:Expr]], '%2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '%1:Expr ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h['%1:Expr], '%2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr] ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ '0.Elt], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, 'b.Elt] ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- '0.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ 'a.Elt], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- 'b.Elt ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- 'a.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ '_+_['a.Elt, 'b.Elt]], '@1:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '0.Elt ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['h['_+_['a.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['a.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 25, 'f['g['h['%1:Expr]], '%2:Expr], 'Expr, 'f['g[[]], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, 'g['_+_['a.Elt, '%1:Expr]]] ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g[ 'h['0.Elt]], '@1:Expr], 'Expr, 'f['g[[]], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, 'g['a.Elt]] ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- '0.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g['h[ 'a.Elt]], '@1:Expr], 'Expr, 'f['g[[]], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, 'g['0.Elt]] ; 'Z:Expr <- '@1:Expr, 'Y:Expr <- 'a.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g['h[ '_+_['a.Elt, '@1:Expr]]], '@2:Expr], 'Expr, 'f['g[[]], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, 'g['@1:Expr]] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['a.Elt, '@1:Expr], '@)), start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > noSuchResult(me, interpreter(0), 3, true) ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, none) . rewrites: 127 mb applications: 0 equational rewrites: 26 rule rewrites: 14 variant narrowing steps: 75 narrowing steps: 12 result Configuration: <> < me : User | soln: 13, got: (gotOneStepNarrowing(me, interpreter(0), 31, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '_+_['a.Elt, '@1:Expr] ; '#2:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['h['b.Elt], '@1:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- 'a.Elt ; '#2:Expr <- '@1:Expr, 'Y:Expr <- 'b.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 19, 'f['h[ '_+_['a.Elt, 'b.Elt, '%1:Expr]], '%2:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '%1:Expr ; '#2:Expr <- '%2:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h['%1:Expr], '%2:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '_+_['a.Elt, 'b.Elt, '%1:Expr] ; '#2:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ '0.Elt], '@1:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '_+_['a.Elt, 'b.Elt] ; '#2:Expr <- '@1:Expr, 'Y:Expr <- '0.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ 'a.Elt], '@1:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- 'b.Elt ; '#2:Expr <- '@1:Expr, 'Y:Expr <- 'a.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['h[ '_+_['a.Elt, 'b.Elt]], '@1:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '0.Elt ; '#2:Expr <- '@1:Expr, 'Y:Expr <- '_+_['a.Elt, 'b.Elt], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['h['_+_['a.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, '@1:Expr] ; '#2:Expr <- '@2:Expr, 'Y:Expr <- '_+_['a.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 25, 'f['g['h['%1:Expr]], '%2:Expr], 'Expr, 'f['g[[]], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, 'g['_+_['a.Elt, '%1:Expr]]] ; '#2:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g[ 'h['0.Elt]], '@1:Expr], 'Expr, 'f['g[[]], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, 'g['a.Elt]] ; '#2:Expr <- '@1:Expr, 'Y:Expr <- '0.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g['h[ 'a.Elt]], '@1:Expr], 'Expr, 'f['g[[]], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, 'g['0.Elt]] ; '#2:Expr <- '@1:Expr, 'Y:Expr <- 'a.Elt, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['g['h[ '_+_['a.Elt, '@1:Expr]]], '@2:Expr], 'Expr, 'f['g[[]], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, 'g['@1:Expr]] ; '#2:Expr <- '@2:Expr, 'Y:Expr <- '_+_['a.Elt, '@1:Expr], '@)), start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > noSuchResult(me, interpreter(0), 3, true) ========================================== erewrite in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, none) . rewrites: 28 mb applications: 0 equational rewrites: 3 rule rewrites: 3 variant narrowing steps: 21 narrowing steps: 1 result Configuration: <> < me : User | soln: 2, got: gotOneStepNarrowing(me, interpreter(0), 17, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@), start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['W:Expr, 'b.Elt]) > noSuchResult(me, interpreter( 0), 6, true) ========================================== erewrite in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, none) . rewrites: 97 mb applications: 0 equational rewrites: 4 rule rewrites: 4 variant narrowing steps: 87 narrowing steps: 2 result Configuration: <> < me : User | soln: 3, got: (gotOneStepNarrowing(me, interpreter(0), 59, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], 'Z:Expr], 'one, 'W:Expr <- '_+_['a.Elt, '@1:Expr] ; 'Z:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 28, 'f['g['h['%1:Expr]], '%2:Expr], 'Expr, 'f['g[[]], 'Z:Expr], 'one, 'W:Expr <- '_+_['b.Elt, 'g['_+_['a.Elt, '%1:Expr]]] ; 'Z:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%)), start: ('f['g['_+_['W:Expr, 'b.Elt]], 'Z:Expr]), irred: ('_+_['X:Expr, 'b.Elt]) > noSuchResult(me, interpreter(0), 3, true) ========================================== erewrite in NARROW-TEST2 : <> < me : User | start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > createInterpreter( interpreterManager, me, none) . rewrites: 97 mb applications: 0 equational rewrites: 4 rule rewrites: 4 variant narrowing steps: 87 narrowing steps: 2 result Configuration: <> < me : User | soln: 3, got: (gotOneStepNarrowing(me, interpreter(0), 59, 'f['h['_+_['b.Elt, '@1:Expr]], '@2:Expr], 'Expr, 'f[[], '#2:Expr], 'one, '#1:Expr <- '_+_['a.Elt, '@1:Expr] ; '#2:Expr <- '@2:Expr, 'Y:Expr <- '_+_['b.Elt, '@1:Expr], '@) ; gotOneStepNarrowing(me, interpreter( 0), 28, 'f['g['h['%1:Expr]], '%2:Expr], 'Expr, 'f['g[[]], '#2:Expr], 'one, '#1:Expr <- '_+_['b.Elt, 'g['_+_['a.Elt, '%1:Expr]]] ; '#2:Expr <- '%2:Expr, 'Y:Expr <- '%1:Expr, '%)), start: ('f['g['_+_['#1:Expr, 'b.Elt]], '#2:Expr]), irred: ('_+_['#3:Expr, 'b.Elt]) > noSuchResult(me, interpreter(0), 3, true) ========================================== variant unify in NARROW : A:ElemXor * B:ElemXor =? X * Y . Unifier 1 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %4:ElemXor X --> %1:ElemXor * %2:ElemXor Y --> %3:ElemXor * %4:ElemXor Unifier 2 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %2:ElemXor * %3:ElemXor B:ElemXor --> %1:ElemXor X --> %1:ElemXor * %3:ElemXor Y --> %2:ElemXor Unifier 3 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %1:ElemXor * %3:ElemXor Y --> %2:ElemXor Unifier 4 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %2:ElemXor * %3:ElemXor B:ElemXor --> %1:ElemXor X --> %2:ElemXor Y --> %1:ElemXor * %3:ElemXor Unifier 5 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> %2:ElemXor X --> %1:ElemXor Y --> %2:ElemXor Unifier 6 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %2:ElemXor Y --> %1:ElemXor * %3:ElemXor Unifier 7 rewrites: 12 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 12 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> %2:ElemXor X --> %2:ElemXor Y --> %1:ElemXor Unifier 8 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #2:ElemXor * #4:ElemXor B:ElemXor --> #1:ElemXor * #3:ElemXor * #5:ElemXor X --> #2:ElemXor * #3:ElemXor Y --> #4:ElemXor * #5:ElemXor Unifier 9 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #2:ElemXor * #3:ElemXor * #4:ElemXor B:ElemXor --> #1:ElemXor * #3:ElemXor X --> #1:ElemXor * #4:ElemXor Y --> #2:ElemXor Unifier 10 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #3:ElemXor B:ElemXor --> #2:ElemXor * #3:ElemXor * #4:ElemXor X --> #1:ElemXor * #4:ElemXor Y --> #2:ElemXor Unifier 11 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #2:ElemXor * #3:ElemXor * #4:ElemXor B:ElemXor --> #1:ElemXor * #3:ElemXor X --> #2:ElemXor Y --> #1:ElemXor * #4:ElemXor Unifier 12 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #3:ElemXor B:ElemXor --> #2:ElemXor * #3:ElemXor X --> #1:ElemXor Y --> #2:ElemXor Unifier 13 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #3:ElemXor B:ElemXor --> #2:ElemXor * #3:ElemXor * #4:ElemXor X --> #2:ElemXor Y --> #1:ElemXor * #4:ElemXor Unifier 14 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #3:ElemXor B:ElemXor --> #2:ElemXor * #3:ElemXor X --> #2:ElemXor Y --> #1:ElemXor Unifier 15 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #2:ElemXor * #3:ElemXor B:ElemXor --> #3:ElemXor X --> #1:ElemXor Y --> #2:ElemXor Unifier 16 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #3:ElemXor B:ElemXor --> #1:ElemXor * #2:ElemXor * #3:ElemXor X --> #1:ElemXor Y --> #2:ElemXor Unifier 17 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> mt B:ElemXor --> #1:ElemXor * #2:ElemXor X --> #1:ElemXor Y --> #2:ElemXor Unifier 18 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor * #2:ElemXor B:ElemXor --> mt X --> #1:ElemXor Y --> #2:ElemXor Unifier 19 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #2:ElemXor * #4:ElemXor B:ElemXor --> #3:ElemXor * #5:ElemXor X --> #1:[ElemXor] * #2:ElemXor * #3:ElemXor Y --> #1:[ElemXor] * #4:ElemXor * #5:ElemXor Unifier 20 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #2:ElemXor * #4:ElemXor B:ElemXor --> #1:ElemXor X --> #3:[ElemXor] * #1:ElemXor * #4:ElemXor Y --> #3:[ElemXor] * #2:ElemXor Unifier 21 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor * #4:ElemXor X --> #3:[ElemXor] * #1:ElemXor * #4:ElemXor Y --> #3:[ElemXor] * #2:ElemXor Unifier 22 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #2:ElemXor * #4:ElemXor B:ElemXor --> #1:ElemXor X --> #3:[ElemXor] * #2:ElemXor Y --> #3:[ElemXor] * #1:ElemXor * #4:ElemXor Unifier 23 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> #3:[ElemXor] * #1:ElemXor Y --> #3:[ElemXor] * #2:ElemXor Unifier 24 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor * #4:ElemXor X --> #3:[ElemXor] * #2:ElemXor Y --> #3:[ElemXor] * #1:ElemXor * #4:ElemXor Unifier 25 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> #3:[ElemXor] * #2:ElemXor Y --> #3:[ElemXor] * #1:ElemXor Unifier 26 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> #3:[ElemXor] * #1:ElemXor * #2:ElemXor Y --> #3:[ElemXor] Unifier 27 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> #3:[ElemXor] Y --> #3:[ElemXor] * #1:ElemXor * #2:ElemXor Unifier 28 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> mt Y --> #1:ElemXor * #2:ElemXor Unifier 29 rewrites: 92 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 92 narrowing steps: 0 A:ElemXor --> #1:ElemXor B:ElemXor --> #2:ElemXor X --> #1:ElemXor * #2:ElemXor Y --> mt Unifier 30 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> %1:ElemXor X --> %2:[ElemXor] Y --> %2:[ElemXor] Unifier 31 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor * %5:ElemXor B:ElemXor --> %1:ElemXor * %4:ElemXor * %6:ElemXor X --> %2:[ElemXor] * %3:ElemXor * %4:ElemXor Y --> %2:[ElemXor] * %5:ElemXor * %6:ElemXor Unifier 32 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor * %3:ElemXor * %5:ElemXor B:ElemXor --> %1:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %1:ElemXor * %5:ElemXor Y --> %4:[ElemXor] * %2:ElemXor Unifier 33 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor * %5:ElemXor X --> %4:[ElemXor] * %1:ElemXor * %5:ElemXor Y --> %4:[ElemXor] * %2:ElemXor Unifier 34 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor * %3:ElemXor * %5:ElemXor B:ElemXor --> %1:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %2:ElemXor Y --> %4:[ElemXor] * %1:ElemXor * %5:ElemXor Unifier 35 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %1:ElemXor Y --> %4:[ElemXor] * %2:ElemXor Unifier 36 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor * %5:ElemXor X --> %4:[ElemXor] * %2:ElemXor Y --> %4:[ElemXor] * %1:ElemXor * %5:ElemXor Unifier 37 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %2:ElemXor Y --> %4:[ElemXor] * %1:ElemXor Unifier 38 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %1:ElemXor * %2:ElemXor Y --> %4:[ElemXor] Unifier 39 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %4:[ElemXor] Y --> %4:[ElemXor] * %1:ElemXor * %2:ElemXor Unifier 40 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> mt Y --> %1:ElemXor * %2:ElemXor Unifier 41 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %3:ElemXor B:ElemXor --> %2:ElemXor * %3:ElemXor X --> %1:ElemXor * %2:ElemXor Y --> mt Unifier 42 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor * %3:ElemXor B:ElemXor --> %3:ElemXor X --> %4:[ElemXor] * %1:ElemXor Y --> %4:[ElemXor] * %2:ElemXor Unifier 43 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor B:ElemXor --> %2:ElemXor X --> %3:[ElemXor] * %1:ElemXor Y --> %3:[ElemXor] Unifier 44 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor B:ElemXor --> %2:ElemXor X --> %3:[ElemXor] Y --> %3:[ElemXor] * %1:ElemXor Unifier 45 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor B:ElemXor --> %2:ElemXor X --> mt Y --> %1:ElemXor Unifier 46 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor B:ElemXor --> %2:ElemXor X --> %1:ElemXor Y --> mt Unifier 47 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %3:ElemXor B:ElemXor --> %1:ElemXor * %2:ElemXor * %3:ElemXor X --> %4:[ElemXor] * %1:ElemXor Y --> %4:[ElemXor] * %2:ElemXor Unifier 48 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor B:ElemXor --> %1:ElemXor * %2:ElemXor X --> %3:[ElemXor] * %1:ElemXor Y --> %3:[ElemXor] Unifier 49 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor B:ElemXor --> %1:ElemXor * %2:ElemXor X --> %3:[ElemXor] Y --> %3:[ElemXor] * %1:ElemXor Unifier 50 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor B:ElemXor --> %1:ElemXor * %2:ElemXor X --> mt Y --> %1:ElemXor Unifier 51 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %2:ElemXor B:ElemXor --> %1:ElemXor * %2:ElemXor X --> %1:ElemXor Y --> mt Unifier 52 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> mt B:ElemXor --> %1:ElemXor * %2:ElemXor X --> %3:[ElemXor] * %1:ElemXor Y --> %3:[ElemXor] * %2:ElemXor Unifier 53 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> mt B:ElemXor --> %1:ElemXor X --> %2:[ElemXor] * %1:ElemXor Y --> %2:[ElemXor] Unifier 54 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> mt B:ElemXor --> %1:ElemXor X --> %2:[ElemXor] Y --> %2:[ElemXor] * %1:ElemXor Unifier 55 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor * %2:ElemXor B:ElemXor --> mt X --> %3:[ElemXor] * %1:ElemXor Y --> %3:[ElemXor] * %2:ElemXor Unifier 56 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> mt X --> %2:[ElemXor] * %1:ElemXor Y --> %2:[ElemXor] Unifier 57 rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 A:ElemXor --> %1:ElemXor B:ElemXor --> mt X --> %2:[ElemXor] Y --> %2:[ElemXor] * %1:ElemXor No more unifiers. rewrites: 140 mb applications: 0 equational rewrites: 0 rule rewrites: 0 variant narrowing steps: 140 narrowing steps: 0 ========================================== filtered variant unify in NARROW : A:ElemXor * B:ElemXor =? X * Y . rewrites: 1995 mb applications: 0 equational rewrites: 215 rule rewrites: 0 variant narrowing steps: 1780 narrowing steps: 0 Unifier 1 A:ElemXor --> #2:ElemXor * #4:ElemXor B:ElemXor --> #3:ElemXor * #5:ElemXor X --> #1:[ElemXor] * #2:ElemXor * #3:ElemXor Y --> #1:[ElemXor] * #4:ElemXor * #5:ElemXor No more unifiers. ========================================== erewrite in NARROW-TEST : <> < me : User | start: ('_*_['A:ElemXor, 'B:ElemXor]), irred: empty > createInterpreter(interpreterManager, me, none) . rewrites: 372 mb applications: 0 equational rewrites: 116 rule rewrites: 59 variant narrowing steps: 140 narrowing steps: 57 result Configuration: <> < me : User | soln: 58, got: (gotOneStepNarrowing(me, interpreter(0), 13, 'f['_*_['@1:ElemXor, '@3:ElemXor], '_*_['@2:ElemXor, '@4:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor] ; 'B:ElemXor <- '_*_['@3:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@2:ElemXor, '@4:ElemXor], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['_*_['@2:ElemXor, '@3:ElemXor], '@1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '_*_['@2:ElemXor, '@3:ElemXor] ; 'Y:`[ElemXor`] <- '@1:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@1:ElemXor, '_*_['@2:ElemXor, '@3:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '@1:ElemXor ; 'Y:`[ElemXor`] <- '_*_['@2:ElemXor, '@3:ElemXor], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['_*_['@2:ElemXor, '@3:ElemXor], '@1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '@2:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- '_*_['@2:ElemXor, '@3:ElemXor] ; 'Y:`[ElemXor`] <- '@1:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@1:ElemXor, '@2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '@1:ElemXor ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '@1:ElemXor ; 'Y:`[ElemXor`] <- '@2:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@1:ElemXor, '_*_['@2:ElemXor, '@3:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '@2:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- '@1:ElemXor ; 'Y:`[ElemXor`] <- '_*_['@2:ElemXor, '@3:ElemXor], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['@2:ElemXor, '@1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '@1:ElemXor ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '@2:ElemXor ; 'Y:`[ElemXor`] <- '@1:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 81, 'f['mt.ElemXor, '_*_['%1:ElemXor, '%2:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- 'mt.ElemXor ; 'Y:`[ElemXor`] <- '_*_['%1:ElemXor, '%2:ElemXor], '%) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['_*_['%1:ElemXor, '%2:ElemXor], 'mt.ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%1:ElemXor, '%2:ElemXor] ; 'Y:`[ElemXor`] <- 'mt.ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%1:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '_*_[ '%1:`[ElemXor`], '%3:ElemXor, '%5:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%4:ElemXor, '%5:ElemXor], 'X:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:ElemXor, '%5:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '_*_['%3:`[ElemXor`], '%1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%4:ElemXor] ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%1:ElemXor], '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%4:ElemXor] ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '_*_['%3:`[ElemXor`], '%1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%2:ElemXor ; 'B:ElemXor <- '_*_['%1:ElemXor, '%4:ElemXor], 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%1:ElemXor], '_*_['%3:`[ElemXor`], '%2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%1:ElemXor], '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%2:ElemXor ; 'B:ElemXor <- '_*_['%1:ElemXor, '%4:ElemXor], 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%2:ElemXor], '_*_['%3:`[ElemXor`], '%1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%2:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%3:`[ElemXor`], '%1:ElemXor, '%2:ElemXor], '%3:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor, '%2:ElemXor] ; 'Y:`[ElemXor`] <- '%3:`[ElemXor`], '%) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['%3:`[ElemXor`], '_*_['%3:`[ElemXor`], '%1:ElemXor, '%2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '%1:ElemXor ; 'B:ElemXor <- '%2:ElemXor, 'X:`[ElemXor`] <- '%3:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['%3:`[ElemXor`], '%1:ElemXor, '%2:ElemXor], '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '%2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- 'mt.ElemXor ; 'B:ElemXor <- '_*_['%1:ElemXor, '%2:ElemXor], 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '%2:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '%2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%2:ElemXor] ; 'B:ElemXor <- 'mt.ElemXor, 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '%2:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['%2:ElemXor, '%4:ElemXor], '_*_['%3:ElemXor, '%5:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%1:ElemXor, '%4:ElemXor, '%5:ElemXor], 'X:`[ElemXor`] <- '_*_['%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%3:ElemXor, '%5:ElemXor], '%) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['_*_['%2:ElemXor, '%4:ElemXor], '%1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor, '%4:ElemXor] ; 'B:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor], 'X:`[ElemXor`] <- '_*_['%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '%1:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '_*_['%2:ElemXor, '%4:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor, '%4:ElemXor] ; 'B:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor], 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '_*_['%2:ElemXor, '%4:ElemXor], '%) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['_*_['%2:ElemXor, '%4:ElemXor], '%1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor, '%4:ElemXor], 'X:`[ElemXor`] <- '_*_['%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '%1:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '%2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor], 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '%2:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '_*_['%2:ElemXor, '%4:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor, '%4:ElemXor], 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '_*_['%2:ElemXor, '%4:ElemXor], '%) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['%2:ElemXor, '%1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor], 'X:`[ElemXor`] <- '%2:ElemXor ; 'Y:`[ElemXor`] <- '%1:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '%2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['%1:ElemXor, '%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '%3:ElemXor, 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '%2:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['%1:ElemXor, '%2:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '%3:ElemXor ; 'B:ElemXor <- '_*_['%1:ElemXor, '%2:ElemXor, '%3:ElemXor], 'X:`[ElemXor`] <- '%1:ElemXor ; 'Y:`[ElemXor`] <- '%2:ElemXor, '%) ; gotOneStepNarrowing(me, interpreter(0), 49, 'f['@1:`[ElemXor`], '@1:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@2:ElemXor ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '@1:`[ElemXor`] ; 'Y:`[ElemXor`] <- '@1:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['mt.ElemXor, '_*_['@1:ElemXor, '@2:ElemXor]], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- 'mt.ElemXor ; 'Y:`[ElemXor`] <- '_*_['@1:ElemXor, '@2:ElemXor], '@) ; gotOneStepNarrowing( me, interpreter(0), 1, 'f['mt.ElemXor, '@1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor] ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- 'mt.ElemXor ; 'Y:`[ElemXor`] <- '@1:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['mt.ElemXor, '@1:ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '@2:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor], 'X:`[ElemXor`] <- 'mt.ElemXor ; 'Y:`[ElemXor`] <- '@1:ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@1:ElemXor, '@2:ElemXor], 'mt.ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- '_*_['@1:ElemXor, '@2:ElemXor] ; 'Y:`[ElemXor`] <- 'mt.ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@1:ElemXor, 'mt.ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor] ; 'B:ElemXor <- '@2:ElemXor, 'X:`[ElemXor`] <- '@1:ElemXor ; 'Y:`[ElemXor`] <- 'mt.ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@1:ElemXor, 'mt.ElemXor], 'ElemXor, [], 'one, 'A:ElemXor <- '@2:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor], 'X:`[ElemXor`] <- '@1:ElemXor ; 'Y:`[ElemXor`] <- 'mt.ElemXor, '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- 'mt.ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor] ; 'B:ElemXor <- 'mt.ElemXor, 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@1:`[ElemXor`], '@3:ElemXor, '@5:ElemXor], '_*_['@1:`[ElemXor`], '@4:ElemXor, '@6:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@2:ElemXor, '@3:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@5:ElemXor, '@6:ElemXor], 'X:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@3:ElemXor, '@5:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@1:`[ElemXor`], '@4:ElemXor, '@6:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor], '_*_['@3:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor, '@5:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor, '@5:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor], '_*_['@3:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor, '@5:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor, '@5:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor, '@5:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@2:ElemXor], '_*_['@3:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '@4:ElemXor, 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor], '_*_['@3:`[ElemXor`], '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@4:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['_*_['@2:`[ElemXor`], '@1:ElemXor], '@2:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- 'mt.ElemXor ; 'B:ElemXor <- '@1:ElemXor, 'X:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '@2:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['_*_['@2:`[ElemXor`], '@1:ElemXor], '@2:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@1:ElemXor ; 'B:ElemXor <- 'mt.ElemXor, 'X:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '@2:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['_*_['@3:`[ElemXor`], '@1:ElemXor, '@2:ElemXor], '@3:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor, '@2:ElemXor] ; 'Y:`[ElemXor`] <- '@3:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['_*_['@2:`[ElemXor`], '@1:ElemXor], '@2:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '@3:ElemXor, 'X:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '@2:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['_*_['@2:`[ElemXor`], '@1:ElemXor], '@2:`[ElemXor`]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@3:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor] ; 'Y:`[ElemXor`] <- '@2:`[ElemXor`], '@) ; gotOneStepNarrowing(me, interpreter( 0), 1, 'f['@2:`[ElemXor`], '_*_['@2:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- 'mt.ElemXor ; 'B:ElemXor <- '@1:ElemXor, 'X:`[ElemXor`] <- '@2:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@2:`[ElemXor`], '_*_[ '@2:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@1:ElemXor ; 'B:ElemXor <- 'mt.ElemXor, 'X:`[ElemXor`] <- '@2:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@3:`[ElemXor`], '_*_[ '@3:`[ElemXor`], '@1:ElemXor, '@2:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@4:ElemXor] ; 'B:ElemXor <- '_*_['@2:ElemXor, '@4:ElemXor], 'X:`[ElemXor`] <- '@3:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['@3:`[ElemXor`], '@1:ElemXor, '@2:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@2:`[ElemXor`], '_*_[ '@2:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor] ; 'B:ElemXor <- '@3:ElemXor, 'X:`[ElemXor`] <- '@2:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor], '@) ; gotOneStepNarrowing(me, interpreter(0), 1, 'f['@2:`[ElemXor`], '_*_[ '@2:`[ElemXor`], '@1:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '@3:ElemXor ; 'B:ElemXor <- '_*_['@1:ElemXor, '@3:ElemXor], 'X:`[ElemXor`] <- '@2:`[ElemXor`] ; 'Y:`[ElemXor`] <- '_*_['@2:`[ElemXor`], '@1:ElemXor], '@)), start: ('_*_[ 'A:ElemXor, 'B:ElemXor]), irred: empty > noSuchResult(me, interpreter(0), 0, true) ========================================== erewrite in NARROW-TEST2 : <> < me : User | start: ('_*_['A:ElemXor, 'B:ElemXor]), irred: empty > createInterpreter(interpreterManager, me, none) . rewrites: 1837 mb applications: 0 equational rewrites: 150 rule rewrites: 3 variant narrowing steps: 1683 narrowing steps: 1 result Configuration: <> < me : User | soln: 2, got: gotOneStepNarrowing(me, interpreter(0), 1832, 'f['_*_['%1:`[ElemXor`], '%2:ElemXor, '%4:ElemXor], '_*_['%1:`[ElemXor`], '%3:ElemXor, '%5:ElemXor]], '`[ElemXor`], [], 'one, 'A:ElemXor <- '_*_['%2:ElemXor, '%3:ElemXor] ; 'B:ElemXor <- '_*_['%4:ElemXor, '%5:ElemXor], 'X:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%2:ElemXor, '%4:ElemXor] ; 'Y:`[ElemXor`] <- '_*_['%1:`[ElemXor`], '%3:ElemXor, '%5:ElemXor], '%), start: ('_*_['A:ElemXor, 'B:ElemXor]), irred: empty > noSuchResult(me, interpreter(0), 0, true) Bye. Maude-Maude3.5.1/tests/Meta/metaIntNewNarrow0000775000175000017510000000037415036121435020306 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntNewNarrow.maude -no-banner -no-advise \ > metaIntNewNarrow.out 2>&1 diff $srcdir/metaIntNewNarrow.expected metaIntNewNarrow.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntMatch.maude0000664000175000017510000000747415036121435020517 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test matching in the meta-interpreter without and with extension. *** load metaInterpreter fmod MATCH is sort Foo . op f : Foo Foo -> Foo [assoc] . ops a b : -> Foo . endfm mod MATCH-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('MATCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS > getMatch(Y, X, 'MATCH, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'a.Foo], nil, N) . endm erew in MATCH-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, none) . erew in MATCH-TEST : <> < me : User | soln: 1 > createInterpreter(interpreterManager, me, none) . erew in MATCH-TEST : <> < me : User | soln: 2 > createInterpreter(interpreterManager, me, none) . mod MATCH-CACHE-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . var S : Substitution . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('MATCH, true)) . rl < X : User | AS > insertedModule(X, Y) => < X : User | AS, soln: 1 > getMatch(Y, X, 'MATCH, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'a.Foo], nil, 0) . rl < X : User | soln: N, AS > gotMatch(X, Y, M, S) => < X : User | AS, soln: (N + 1), got: gotMatch(X, Y, M, S) > getMatch(Y, X, 'MATCH, 'f['X:Foo, 'Y:Foo], 'f['a.Foo, 'b.Foo, 'a.Foo], nil, N) . endm erew in MATCH-CACHE-TEST : <> < me : User | none > createInterpreter(interpreterManager, me, none) . fmod XMATCH is sorts Foo Bar . op f : Foo Foo -> Foo [assoc] . op g : Foo -> Bar . ops a b : -> Foo . endfm mod XMATCH-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . var N : Nat . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XMATCH, true)) . rl < X : User | soln: N, AS > insertedModule(X, Y) => < X : User | AS > getXmatch(Y, X, 'XMATCH, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo, 'a.Foo]], nil, 0, unbounded, N) . endm erew in XMATCH-TEST : <> < me : User | soln: 0 > createInterpreter(interpreterManager, me, none) . erew in XMATCH-TEST : <> < me : User | soln: 1 > createInterpreter(interpreterManager, me, none) . erew in XMATCH-TEST : <> < me : User | soln: 2 > createInterpreter(interpreterManager, me, none) . erew in XMATCH-TEST : <> < me : User | soln: 3 > createInterpreter(interpreterManager, me, none) . erew in XMATCH-TEST : <> < me : User | soln: 4 > createInterpreter(interpreterManager, me, none) . mod XMATCH-CACHE-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . var S : Substitution . var C : Context . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('XMATCH, true)) . rl < X : User | AS > insertedModule(X, Y) => < X : User | AS, soln: 1 > getXmatch(Y, X, 'XMATCH, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo, 'a.Foo]], nil, 0, unbounded, 0) . rl < X : User | soln: N, AS > gotXmatch(X, Y, M, S, C) => < X : User | AS, soln: (N + 1), got: gotXmatch(X, Y, M, S, C) > getXmatch(Y, X, 'XMATCH, 'f['X:Foo, 'Y:Foo], 'g['f['a.Foo, 'b.Foo, 'a.Foo]], nil, 0, unbounded, N) . endm erew in XMATCH-CACHE-TEST : <> < me : User | none > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntMatch.expected0000664000175000017510000000653215036121435021217 0ustar nileshnilesh========================================== erewrite in MATCH-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, none) . rewrites: 3 result Configuration: <> < me : User | none > gotMatch(me, interpreter(0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'a.Foo]) ========================================== erewrite in MATCH-TEST : <> < me : User | soln: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 3 result Configuration: <> < me : User | none > gotMatch(me, interpreter(0), 0, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'a.Foo) ========================================== erewrite in MATCH-TEST : <> < me : User | soln: 2 > createInterpreter( interpreterManager, me, none) . rewrites: 3 result Configuration: <> < me : User | none > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in MATCH-CACHE-TEST : <> < me : User | none > createInterpreter( interpreterManager, me, none) . rewrites: 7 result Configuration: <> < me : User | soln: 3, got: gotMatch(me, interpreter( 0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'a.Foo]), got: gotMatch(me, interpreter(0), 0, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'a.Foo) > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 0 > createInterpreter( interpreterManager, me, none) . rewrites: 3 result Configuration: <> < me : User | none > gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, 'g['f[[], 'a.Foo]]) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 1 > createInterpreter( interpreterManager, me, none) . rewrites: 3 result Configuration: <> < me : User | none > gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'a.Foo], 'g[[]]) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 2 > createInterpreter( interpreterManager, me, none) . rewrites: 3 result Configuration: <> < me : User | none > gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'a.Foo, 'g[[]]) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 3 > createInterpreter( interpreterManager, me, none) . rewrites: 3 result Configuration: <> < me : User | none > gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, 'g['f['a.Foo, []]]) ========================================== erewrite in XMATCH-TEST : <> < me : User | soln: 4 > createInterpreter( interpreterManager, me, none) . rewrites: 3 result Configuration: <> < me : User | none > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in XMATCH-CACHE-TEST : <> < me : User | none > createInterpreter( interpreterManager, me, none) . rewrites: 11 result Configuration: <> < me : User | soln: 5, got: gotXmatch(me, interpreter( 0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, 'g['f[[], 'a.Foo]]), got: gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'a.Foo], 'g[[]]), got: gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, 'g['f['a.Foo, []]]), got: gotXmatch(me, interpreter(0), 0, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'a.Foo, 'g[[]]) > noSuchResult(me, interpreter(0), 0) Bye. Maude-Maude3.5.1/tests/Meta/metaIntMatch0000775000175000017510000000035415036121435017416 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntMatch.maude -no-banner -no-advise \ > metaIntMatch.out 2>&1 diff $srcdir/metaIntMatch.expected metaIntMatch.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaIntApply.maude0000664000175000017510000000517615036121435020545 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test applyRule() in the meta-interpreter without and with extension. *** load metaInterpreter mod APPLY is sorts Foo . ops a b : -> Foo . op f : Foo Foo -> Foo [comm] . rl f(X:Foo, Y:Foo) => X:Foo [label k] . endm mod APPLY-TEST is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . op subst:_ : Substitution -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars IS S : Substitution . var T : Term . var TY : Type . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('APPLY, true)) . rl < X : User | AS, subst: IS > insertedModule(X, Y) => < X : User | AS, soln: 1, subst: IS > applyRule(Y, X, 'APPLY, 'f['a.Foo, 'b.Foo], 'k, IS, 0) . rl < X : User | AS, soln: N, subst: IS > appliedRule(X, Y, M, T, TY, S) => < X : User | AS, soln: (N + 1), subst: IS, got: appliedRule(X, Y, M, T, TY, S) > applyRule(Y, X, 'APPLY, 'f['a.Foo, 'b.Foo], 'k, IS, N) . endm set show breakdown on . erew in APPLY-TEST : <> < me : User | subst: none > createInterpreter(interpreterManager, me, none) . erew in APPLY-TEST : <> < me : User | subst: ('Y:Foo <- 'b.Foo) > createInterpreter(interpreterManager, me, none) . mod APPLY2 is sorts Foo . ops a b c : -> Foo . op f : Foo Foo -> Foo [assoc comm] . op g : Foo -> Foo . rl f(X:Foo, Y:Foo) => X:Foo [label k] . endm mod APPLY-TEST2 is pr META-INTERPRETER . op me : -> Oid . op User : -> Cid . op soln:_ : Nat -> Attribute . op got:_ : Msg -> Attribute . op subst:_ : Substitution -> Attribute . vars X Y Z : Oid . var AS : AttributeSet . vars N M : Nat . vars IS S : Substitution . var T : Term . var TY : Type . var C : Context . rl < X : User | AS > createdInterpreter(X, Y, Z) => < X : User | AS > insertModule(Z, X, upModule('APPLY2, true)) . rl < X : User | AS, subst: IS > insertedModule(X, Y) => < X : User | AS, soln: 1, subst: IS > applyRule(Y, X, 'APPLY2, 'g['g['f['a.Foo, 'b.Foo, 'c.Foo]]], 'k, IS, 0, unbounded, 0) . rl < X : User | AS, soln: N, subst: IS > appliedRule(X, Y, M, T, TY, S, C) => < X : User | AS, soln: (N + 1), subst: IS, got: appliedRule(X, Y, M, T, TY, S, C) > applyRule(Y, X, 'APPLY2, 'g['g['f['a.Foo, 'b.Foo, 'c.Foo]]], 'k, IS, 0, unbounded, N) . endm erew in APPLY-TEST2 : <> < me : User | subst: none > createInterpreter(interpreterManager, me, none) . erew in APPLY-TEST2 : <> < me : User | subst: ('X:Foo <- 'a.Foo) > createInterpreter(interpreterManager, me, none) . Maude-Maude3.5.1/tests/Meta/metaIntApply.expected0000664000175000017510000000770715036121435021255 0ustar nileshnilesh========================================== erewrite in APPLY-TEST : <> < me : User | subst: none > createInterpreter( interpreterManager, me, none) . rewrites: 9 mb applications: 0 equational rewrites: 3 rule rewrites: 6 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 3, got: appliedRule(me, interpreter(0), 1, 'a.Foo, 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo), got: appliedRule(me, interpreter(0), 1, 'b.Foo, 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo), subst: none > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in APPLY-TEST : <> < me : User | subst: ( 'Y:Foo <- 'b.Foo) > createInterpreter(interpreterManager, me, none) . rewrites: 6 mb applications: 0 equational rewrites: 2 rule rewrites: 4 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 2, got: appliedRule(me, interpreter(0), 1, 'a.Foo, 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo), subst: ( 'Y:Foo <- 'b.Foo) > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in APPLY-TEST2 : <> < me : User | subst: none > createInterpreter( interpreterManager, me, none) . rewrites: 39 mb applications: 0 equational rewrites: 13 rule rewrites: 26 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 13, got: appliedRule(me, interpreter(0), 1, 'g['g['a.Foo]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'c.Foo], 'g['g[[]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['b.Foo]], 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'f['a.Foo, 'c.Foo], 'g['g[[]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['c.Foo]], 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'f['a.Foo, 'b.Foo], 'g['g[[]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'b.Foo]]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'c.Foo, 'g['g['f['b.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'b.Foo]]], 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'c.Foo, 'g['g['f['a.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'b.Foo]]], 'Foo, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'c.Foo, 'g['g[[]]]), got: appliedRule(me, interpreter(0), 1, 'g['g[ 'f['a.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, 'g['g['f['c.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'b.Foo, 'g['g['f['a.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'f['a.Foo, 'c.Foo] ; 'Y:Foo <- 'b.Foo, 'g['g[[]]]), got: appliedRule(me, interpreter(0), 1, 'g['g[ 'f['b.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo, 'g['g['f['c.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['b.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'a.Foo, 'g['g['f['b.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['b.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'f['b.Foo, 'c.Foo] ; 'Y:Foo <- 'a.Foo, 'g['g[[]]]), subst: none > noSuchResult(me, interpreter(0), 0) ========================================== erewrite in APPLY-TEST2 : <> < me : User | subst: ( 'X:Foo <- 'a.Foo) > createInterpreter(interpreterManager, me, none) . rewrites: 12 mb applications: 0 equational rewrites: 4 rule rewrites: 8 variant narrowing steps: 0 narrowing steps: 0 result Configuration: <> < me : User | soln: 4, got: appliedRule(me, interpreter(0), 1, 'g['g['a.Foo]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'c.Foo], 'g['g[[]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'b.Foo]]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'c.Foo, 'g['g['f['b.Foo, []]]]), got: appliedRule(me, interpreter( 0), 1, 'g['g['f['a.Foo, 'c.Foo]]], 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo, 'g['g['f['c.Foo, []]]]), subst: ( 'X:Foo <- 'a.Foo) > noSuchResult(me, interpreter(0), 0) Bye. Maude-Maude3.5.1/tests/Meta/metaIntApply0000775000175000017510000000035415036121435017447 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaIntApply.maude -no-banner -no-advise \ > metaIntApply.out 2>&1 diff $srcdir/metaIntApply.expected metaIntApply.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaGetVariant.maude0000664000175000017510000000233615036121435021044 0ustar nileshnileshset show timing off . fmod XOR is sort XOR . sort Elem . ops cst1 cst2 cst3 cst4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm fmod TEST is inc XOR . inc META-LEVEL . endfm red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, '#, 0) . red metaGetVariant(upModule('XOR, false), upTerm(X:XOR + cst1), empty, '#, 0) . red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, '@, 0) . red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, '#, 1) . red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, '#, 2) . red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, '#, 3) . red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, '#, 4) . red metaGetVariant(['XOR], upTerm(X:XOR + cst2), upTerm(X:XOR + a), '#, 0) . red metaGetVariant(['XOR], upTerm(X:XOR + cst2), upTerm(X:XOR + a), '#, 1) . red metaGetVariant(['XOR], upTerm(X:XOR + cst2), upTerm(X:XOR + a), '#, 2) . red metaGetVariant(['XOR], upTerm(X:XOR + cst2), upTerm(X:XOR + a), '#, 3) . *** illegal variable name red metaGetVariant(['XOR], upTerm(%1:XOR + cst1), empty, '#, 0) . Maude-Maude3.5.1/tests/Meta/metaGetVariant.expected0000664000175000017510000000535015036121435021551 0ustar nileshnilesh========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, '#, (0).Zero) . rewrites: 3 result Variant: {'_+_['cst1.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, (none).Parent, false} ========================================== reduce in TEST : metaGetVariant(upModule('XOR, false), upTerm(cst1 + X:XOR), ( empty).GroundTermList, '#, (0).Zero) . rewrites: 3 result Variant: {'_+_['cst1.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, (none).Parent, false} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, '@, (0).Zero) . rewrites: 3 result Variant: {'_+_['cst1.Elem, '#1:XOR], 'X:XOR <- '#1:XOR, '#, (none).Parent, false} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, '#, 1) . rewrites: 6 result Variant: {'cst1.Elem, 'X:XOR <- '0.XOR, '@, (0).Zero, true} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, '#, 2) . rewrites: 3 result Variant: {'0.XOR, 'X:XOR <- 'cst1.Elem, '@, (0).Zero, true} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, '#, 3) . rewrites: 3 result Variant: {'@1:XOR, 'X:XOR <- '_+_['cst1.Elem, '@1:XOR], '@, (0).Zero, false} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, '#, 4) . rewrites: 3 result Variant?: noVariant ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst2 + X:XOR), upTerm(a + X:XOR), '#, (0).Zero) . rewrites: 4 result Variant: {'_+_['cst2.Elem, '%1:XOR], 'X:XOR <- '%1:XOR, '%, (none).Parent, false} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst2 + X:XOR), upTerm(a + X:XOR), '#, 1) . rewrites: 6 result Variant: {'0.XOR, 'X:XOR <- 'cst2.Elem, '@, (0).Zero, true} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst2 + X:XOR), upTerm(a + X:XOR), '#, 2) . rewrites: 4 result Variant: {'@1:XOR, 'X:XOR <- '_+_['cst2.Elem, '@1:XOR], '@, (0).Zero, false} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst2 + X:XOR), upTerm(a + X:XOR), '#, 3) . rewrites: 4 result Variant?: noVariant ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + %1:XOR), ( empty).GroundTermList, '#, (0).Zero) . Warning: unsafe variable name %1:XOR in variant narrowing problem. rewrites: 3 result Variant?: noVariant Bye. Maude-Maude3.5.1/tests/Meta/metaGetVariant0000775000175000017510000000036415036121435017754 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaGetVariant.maude -no-banner -no-advise \ > metaGetVariant.out 2>&1 diff $srcdir/metaGetVariant.expected metaGetVariant.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaGeneratedBy.maude0000664000175000017510000000102315036121435021161 0ustar nileshnileshset show timing off . *** *** Test the generated-by importation mode at the metalevel. *** fmod MOD3 is generated-by NAT . eq s s s X:Nat = X:Nat . endfm show mod . show desugared . red in META-LEVEL : upModule('MOD3, false) . red in META-LEVEL : metaReduce(upModule('MOD3, false), 's_^4['0.Nat]) . set generate-by NAT on . fmod MOD4 is eq s s s s X:Nat = X:Nat . endfm show mod . show desugared . red in META-LEVEL : upModule('MOD4, false) . red in META-LEVEL : metaReduce(upModule('MOD4, false), 's_^10['0.Nat]) . Maude-Maude3.5.1/tests/Meta/metaGeneratedBy.expected0000664000175000017510000000217315036121435021676 0ustar nileshnileshfmod MOD3 is generated-by NAT . eq s s s X:Nat = X:Nat . endfm fmod MOD3 is including BOOL . generated-by NAT . eq s_^3(X:Nat) = X:Nat . endfm ========================================== reduce in META-LEVEL : upModule('MOD3, false) . rewrites: 1 result FModule: fmod 'MOD3 is including 'BOOL . generated-by 'NAT . sorts none . none none none eq 's_^3['X:Nat] = 'X:Nat [none] . endfm ========================================== reduce in META-LEVEL : metaReduce(upModule('MOD3, false), 's_^4['0.Nat]) . rewrites: 3 result ResultPair: {'s_['0.Zero], 'NzNat} fmod MOD4 is eq s s s s X:Nat = X:Nat . endfm fmod MOD4 is including BOOL . generated-by NAT . eq s_^4(X:Nat) = X:Nat . endfm ========================================== reduce in META-LEVEL : upModule('MOD4, false) . rewrites: 1 result FModule: fmod 'MOD4 is including 'BOOL . generated-by 'NAT . sorts none . none none none eq 's_^4['X:Nat] = 'X:Nat [none] . endfm ========================================== reduce in META-LEVEL : metaReduce(upModule('MOD4, false), 's_^10['0.Nat]) . rewrites: 4 result ResultPair: {'s_^2['0.Zero], 'NzNat} Bye. Maude-Maude3.5.1/tests/Meta/metaGeneratedBy0000775000175000017510000000037015036121435020076 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaGeneratedBy.maude -no-banner -no-advise \ > metaGeneratedBy.out 2>&1 diff $srcdir/metaGeneratedBy.expected metaGeneratedBy.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaFrewrite.maude0000664000175000017510000000170415036121435020565 0ustar nileshnileshset show timing off . set show advisories off . fmod TEST is pr META-LEVEL . op m : -> Module . eq m = (mod 'FAIR is protecting 'INT . sorts 'Foo . none op 'i : 'Int -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [none] . none none rl 'i['M:NzInt] => 'i['_-_['M:NzInt, 's_['0.Nat]]] [none] . rl 'f['X:Foo, 'i['0.Nat]] => 'X:Foo [none] . endm) . op t : -> Term . eq t = 'f['f['i['s_^2['0.Nat]], 'i['s_['0.Nat]]], 'f['i['s_^3['0.Nat]], 'i['s_^2['0.Nat]]]] . endfm red metaFrewrite(m, t, 1, 1) . red metaFrewrite(m, t, 2, 1) . red metaFrewrite(m, t, 3, 1) . red metaFrewrite(m, t, 4, 1) . red metaFrewrite(m, t, 5, 1) . red metaFrewrite(m, t, 6, 1) . red metaFrewrite(m, t, 7, 1) . red metaFrewrite(m, t, 8, 1) . red metaFrewrite(m, t, 9, 1) . red metaFrewrite(m, t, 10, 1) . red metaFrewrite(m, t, 11, 1) . red metaFrewrite(m, t, unbounded, 1) . *** shouldn't work red metaFrewrite(m, t, 0, 1) . red metaFrewrite(m, t, 1, 0) . Maude-Maude3.5.1/tests/Meta/metaFrewrite.expected0000664000175000017510000000611715036121435021276 0ustar nileshnilesh========================================== reduce in TEST : metaFrewrite(m, t, 1, 1) . rewrites: 5 result ResultPair: {'f['f['i['s_['0.Zero]], 'i['s_['0.Zero]]], 'f['i['s_^3[ '0.Zero]], 'i['s_^2['0.Zero]]]], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 2, 1) . rewrites: 7 result ResultPair: {'f['f['i['s_['0.Zero]], 'i['0.Zero]], 'f['i['s_^3[ '0.Zero]], 'i['s_^2['0.Zero]]]], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 3, 1) . rewrites: 8 result ResultPair: {'f['i['s_['0.Zero]], 'f['i['s_^3['0.Zero]], 'i['s_^2[ '0.Zero]]]], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 4, 1) . rewrites: 10 result ResultPair: {'f['i['s_['0.Zero]], 'f['i['s_^2['0.Zero]], 'i['s_^2[ '0.Zero]]]], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 5, 1) . rewrites: 12 result ResultPair: {'f['i['s_['0.Zero]], 'f['i['s_^2['0.Zero]], 'i['s_[ '0.Zero]]]], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 6, 1) . rewrites: 14 result ResultPair: {'f['i['0.Zero], 'f['i['s_^2['0.Zero]], 'i['s_['0.Zero]]]], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 7, 1) . rewrites: 16 result ResultPair: {'f['i['0.Zero], 'f['i['s_['0.Zero]], 'i['s_['0.Zero]]]], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 8, 1) . rewrites: 18 result ResultPair: {'f['i['0.Zero], 'f['i['s_['0.Zero]], 'i['0.Zero]]], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 9, 1) . rewrites: 19 result ResultPair: {'f['i['0.Zero], 'i['s_['0.Zero]]], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 10, 1) . rewrites: 21 result ResultPair: {'f['i['0.Zero], 'i['0.Zero]], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 11, 1) . rewrites: 22 result ResultPair: {'i['0.Zero], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, unbounded, 1) . rewrites: 22 result ResultPair: {'i['0.Zero], 'Foo} ========================================== reduce in TEST : metaFrewrite(m, t, 0, 1) . rewrites: 2 result [ResultPair?]: metaFrewrite(mod 'FAIR is protecting 'INT . sorts 'Foo . none op 'f : 'Foo 'Foo -> 'Foo [none] . op 'i : 'Int -> 'Foo [none] . none none rl 'f['X:Foo, 'i['0.Nat]] => 'X:Foo [none] . rl 'i['M:NzInt] => 'i['_-_['M:NzInt, 's_['0.Nat]]] [none] . endm, 'f['f['i['s_^2['0.Nat]], 'i['s_['0.Nat]]], 'f['i['s_^3['0.Nat]], 'i[ 's_^2['0.Nat]]]], 0, 1) ========================================== reduce in TEST : metaFrewrite(m, t, 1, 0) . rewrites: 2 result [ResultPair?]: metaFrewrite(mod 'FAIR is protecting 'INT . sorts 'Foo . none op 'f : 'Foo 'Foo -> 'Foo [none] . op 'i : 'Int -> 'Foo [none] . none none rl 'f['X:Foo, 'i['0.Nat]] => 'X:Foo [none] . rl 'i['M:NzInt] => 'i['_-_['M:NzInt, 's_['0.Nat]]] [none] . endm, 'f['f['i['s_^2['0.Nat]], 'i['s_['0.Nat]]], 'f['i['s_^3['0.Nat]], 'i[ 's_^2['0.Nat]]]], 1, 0) Bye. Maude-Maude3.5.1/tests/Meta/metaFrewrite0000775000175000017510000000035415036121435017476 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaFrewrite.maude -no-banner -no-advise \ > metaFrewrite.out 2>&1 diff $srcdir/metaFrewrite.expected metaFrewrite.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/metaApply.maude0000664000175000017510000001734015036121435020066 0ustar nileshnileshset show timing off . set show advisories off . *** *** Test the metaApply() descent function. *** fmod TEST is pr META-LEVEL . op m : -> Module . eq m = (mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [label('k)] . endm) . endfm red metaApply(m, 'a.Foo, 'k, none, 0) . red metaApply(m, 'a.Foo, 'k, none, 1) . red metaApply(m, 'a.Foo, 'k, none, unbounded) . red metaApply(m, 'a.Foo, 'k, none, 10000000000000000000000000000) . fmod TEST2 is pr META-LEVEL . op m : -> Module . eq m = (mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm) . endfm red metaApply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0) . red metaApply(m, 'f['a.Foo, 'b.Foo], 'k, none, 1) . red metaApply(m, 'f['a.Foo, 'b.Foo], 'k, none, 2) . red metaApply(m, 'f['a.Foo, 'b.Foo], 'k, none, 10000000000000000000000000000) . *** Testing substitutions fmod TEST3 is pr META-LEVEL . op m : -> Module . eq m = (mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm) . endfm red metaApply(m, 'f['a.Foo, 'b.Foo], 'k, 'Y:Foo <- 'b.Foo, 0) . red metaApply(m, 'f['a.Foo, 'b.Foo], 'k, 'Y:Foo <- 'b.Foo, 1) . red metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'X:Foo <- 'b.Foo, 0) . red metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'X:Foo <- 'b.Foo, 1) . red metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'Z:Foo <- 'b.Foo, 0) . red metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'Z:Foo <- 'b.Foo, 1) . *** Testing conditional fmod TEST4 is pr META-LEVEL . op m : -> Module . eq m = (mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [comm] . none none crl 'f['Y:Foo, 'Y:Foo] => 'X:Foo if 'X:Foo := 'f['Y:Foo, 'a.Foo] [label('k)] . endm) . endfm red metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'Z:Foo <- 'b.Foo, 0) . red metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'Z:Foo <- 'b.Foo, 1) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none crl 'f['X:Foo, 'Y:Foo] => 'Z:Foo if 'Q:Foo := 'g['X:Foo, 'Y:Foo] /\ 'g['Z:Foo, 'A:Foo] := 'Q:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, 'A:Foo <- 'b.Foo, 0) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none crl 'f['X:Foo, 'Y:Foo] => 'Z:Foo if 'Q:Foo := 'g['X:Foo, 'Y:Foo] /\ 'g['Z:Foo, 'A:Foo] := 'Q:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, 'A:Foo <- 'b.Foo, 1) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none crl 'f['X:Foo, 'Y:Foo] => 'Z:Foo if 'Q:Foo := 'g['X:Foo, 'Y:Foo] /\ 'g['Z:Foo, 'A:Foo] := 'Q:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, 'A:Foo <- 'b.Foo, 2) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 0) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 1) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 2) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 3) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 4) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 5) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 6) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . rl 'a.Foo => 'c.Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo], 'k, none, 0) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . rl 'a.Foo => 'c.Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo], 'k, none, 1) . red in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Foo ; 'Bar . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . op 'c : nil -> 'Foo [none] . op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . rl 'a.Foo => 'c.Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo], 'k, none, 2) . Maude-Maude3.5.1/tests/Meta/metaApply.expected0000664000175000017510000002523615036121435020577 0ustar nileshnilesh========================================== reduce in TEST : metaApply(m, 'a.Foo, 'k, none, 0) . rewrites: 3 result ResultTriple: {'b.Foo, 'Foo, (none).Substitution} ========================================== reduce in TEST : metaApply(m, 'a.Foo, 'k, none, 1) . rewrites: 2 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in TEST : metaApply(m, 'a.Foo, 'k, none, unbounded) . rewrites: 1 result [ResultTriple?]: metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . op 'a : nil -> 'Foo [none] . op 'b : nil -> 'Foo [none] . none none rl 'a.Foo => 'b.Foo [label('k)] . endm, 'a.Foo, 'k, none, unbounded) ========================================== reduce in TEST : metaApply(m, 'a.Foo, 'k, none, 10000000000000000000000000000) . rewrites: 2 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in TEST2 : metaApply(m, 'f['a.Foo, 'b.Foo], 'k, none, 0) . rewrites: 3 result ResultTriple: {'a.Foo, 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo} ========================================== reduce in TEST2 : metaApply(m, 'f['a.Foo, 'b.Foo], 'k, none, 1) . rewrites: 3 result ResultTriple: {'b.Foo, 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo} ========================================== reduce in TEST2 : metaApply(m, 'f['a.Foo, 'b.Foo], 'k, none, 2) . rewrites: 2 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in TEST2 : metaApply(m, 'f['a.Foo, 'b.Foo], 'k, none, 10000000000000000000000000000) . rewrites: 2 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in TEST3 : metaApply(m, 'f['a.Foo, 'b.Foo], 'k, 'Y:Foo <- 'b.Foo, 0) . rewrites: 3 result ResultTriple: {'a.Foo, 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo} ========================================== reduce in TEST3 : metaApply(m, 'f['a.Foo, 'b.Foo], 'k, 'Y:Foo <- 'b.Foo, 1) . rewrites: 2 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in TEST3 : metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'X:Foo <- 'b.Foo, 0) . rewrites: 3 result ResultTriple: {'b.Foo, 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'b.Foo} ========================================== reduce in TEST3 : metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'X:Foo <- 'b.Foo, 1) . rewrites: 2 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in TEST3 : metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'Z:Foo <- 'b.Foo, 0) . rewrites: 3 result ResultTriple: {'b.Foo, 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'b.Foo} ========================================== reduce in TEST3 : metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'Z:Foo <- 'b.Foo, 1) . rewrites: 2 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in TEST4 : metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'Z:Foo <- 'b.Foo, 0) . rewrites: 3 result ResultTriple: {'f['a.Foo, 'b.Foo], 'Foo, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'b.Foo} ========================================== reduce in TEST4 : metaApply(m, 'f['b.Foo, 'b.Foo], 'k, 'Z:Foo <- 'b.Foo, 1) . rewrites: 2 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none crl 'f['X:Foo, 'Y:Foo] => 'Z:Foo if 'Q:Foo := 'g['X:Foo, 'Y:Foo] /\ 'g[ 'Z:Foo, 'A:Foo] := 'Q:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, 'A:Foo <- 'b.Foo, 0) . rewrites: 2 result ResultTriple: {'f['a.Foo, 'c.Foo], 'Foo, 'A:Foo <- 'b.Foo ; 'Q:Foo <- 'g['b.Foo, 'f['a.Foo, 'c.Foo]] ; 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'f['a.Foo, 'c.Foo] ; 'Z:Foo <- 'f['a.Foo, 'c.Foo]} ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none crl 'f['X:Foo, 'Y:Foo] => 'Z:Foo if 'Q:Foo := 'g['X:Foo, 'Y:Foo] /\ 'g[ 'Z:Foo, 'A:Foo] := 'Q:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, 'A:Foo <- 'b.Foo, 1) . rewrites: 2 result ResultTriple: {'f['a.Foo, 'c.Foo], 'Foo, 'A:Foo <- 'b.Foo ; 'Q:Foo <- 'g['b.Foo, 'f['a.Foo, 'c.Foo]] ; 'X:Foo <- 'f['a.Foo, 'c.Foo] ; 'Y:Foo <- 'b.Foo ; 'Z:Foo <- 'f['a.Foo, 'c.Foo]} ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none crl 'f['X:Foo, 'Y:Foo] => 'Z:Foo if 'Q:Foo := 'g['X:Foo, 'Y:Foo] /\ 'g[ 'Z:Foo, 'A:Foo] := 'Q:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, 'A:Foo <- 'b.Foo, 2) . rewrites: 1 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 0) . rewrites: 2 result ResultTriple: {'a.Foo, 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'f['b.Foo, 'c.Foo]} ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 1) . rewrites: 2 result ResultTriple: {'b.Foo, 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'f['a.Foo, 'c.Foo]} ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 2) . rewrites: 2 result ResultTriple: {'c.Foo, 'Foo, 'X:Foo <- 'c.Foo ; 'Y:Foo <- 'f['a.Foo, 'b.Foo]} ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 3) . rewrites: 2 result ResultTriple: {'f['a.Foo, 'b.Foo], 'Foo, 'X:Foo <- 'f['a.Foo, 'b.Foo] ; 'Y:Foo <- 'c.Foo} ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 4) . rewrites: 2 result ResultTriple: {'f['a.Foo, 'c.Foo], 'Foo, 'X:Foo <- 'f['a.Foo, 'c.Foo] ; 'Y:Foo <- 'b.Foo} ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 5) . rewrites: 2 result ResultTriple: {'f['b.Foo, 'c.Foo], 'Foo, 'X:Foo <- 'f['b.Foo, 'c.Foo] ; 'Y:Foo <- 'a.Foo} ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo, 'c.Foo], 'k, none, 6) . rewrites: 1 result ResultTriple?: (failure).ResultTriple? ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'a.Foo => 'c.Foo [label('k)] . rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo], 'k, none, 0) . rewrites: 2 result ResultTriple: {'a.Foo, 'Foo, 'X:Foo <- 'a.Foo ; 'Y:Foo <- 'b.Foo} ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'a.Foo => 'c.Foo [label('k)] . rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo], 'k, none, 1) . rewrites: 2 result ResultTriple: {'b.Foo, 'Foo, 'X:Foo <- 'b.Foo ; 'Y:Foo <- 'a.Foo} ========================================== reduce in META-LEVEL : metaApply(mod 'FOO is protecting 'BOOL . sorts 'Bar ; 'Foo . subsort 'Bar < 'Foo . (((op 'f : 'Foo 'Foo -> 'Foo [assoc comm] . op 'g : 'Foo 'Foo -> 'Foo [assoc comm] .) op 'c : nil -> 'Foo [none] .) op 'b : nil -> 'Foo [none] .) op 'a : nil -> 'Foo [none] . none none rl 'a.Foo => 'c.Foo [label('k)] . rl 'f['X:Foo, 'Y:Foo] => 'X:Foo [label('k)] . endm, 'f['a.Foo, 'b.Foo], 'k, none, 2) . rewrites: 1 result ResultTriple?: (failure).ResultTriple? Bye. Maude-Maude3.5.1/tests/Meta/metaApply0000775000175000017510000000034015036121435016767 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/metaApply.maude -no-banner -no-advise \ > metaApply.out 2>&1 diff $srcdir/metaApply.expected metaApply.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/meta-oo-list-2.maude0000664000175000017510000003507115036121435020604 0ustar nileshnileshset show timing off . *** supplied by Francisco Duran fmod MAYBE{X :: TRIV} is sort Maybe{X} . subsort X$Elt < Maybe{X} . op null : -> Maybe{X} . endfm oth WRAPPER is sort Elt . class Wrapper | contents : Elt . msg to_from_get : Oid Oid -> Msg . msg to_from_answer(_) : Oid Oid Elt -> Msg . vars O1 O2 : Oid . var X : Elt . rl < O1 : Wrapper | contents : X > (to O1 from O2 get) => < O1 : Wrapper | contents : X > (to O2 from O1 answer(X)) . endoth view Oid from TRIV to CONFIGURATION is sort Elt to Oid . endv omod P-LIST{X :: WRAPPER} is including MAYBE{Oid} . protecting INT . class List{X} | first : Maybe{Oid}, last : Maybe{Oid}, size : Nat . class Node{X} | next : Maybe{Oid}, previous : Maybe{Oid}, value : Oid . class Counter | index : Nat . op o : Oid Nat -> Oid . msg _add_at_ : Oid Oid Nat -> Msg . msg _get at_from_ : Oid Nat Oid -> Msg . msg _add'_at_ : Oid Oid Nat -> Msg . msg _in_get at_ : Oid Oid Nat -> Msg . msg _in_get at_from_ : Oid Oid Nat Oid -> Msg . msg to_from_elt at pos_is_ : Oid Oid Nat X$Elt -> Msg . op add-blocked : Object -> Object . op get-blocked : Object Nat Oid -> Object . vars O O' O'' O''' F L : Oid . vars N S P : Nat . var X : X$Elt . rl [add] : *** adds on an empty stack < O : List{X} | size : 0 > (O add O' at 0) < O'' : Counter | index : N > => < O : List{X} | first : o(O, N), last : o(O, N), size : 1 > < o(O, N) : Node{X} | next : null, previous : null, value : O' > < O'' : Counter | index : s N > . rl [add] : *** adds at the begining of the list < O : List{X} | first : F, size : S > < F : Node{X} | previous : null > (O add O' at 0) < O'' : Counter | index : N > => < O : List{X} | first : o(O, N), size : s S > < F : Node{X} | previous : o(O, N) > < o(O, N) : Node{X} | next : F, previous : null, value : O' > < O'' : Counter | index : s N > . rl [add] : *** adds at the end of the list < O : List{X} | last : L, size : S > < L : Node{X} | next : null > (O add O' at S) < O'' : Counter | index : N > => < O : List{X} | last : o(O, N), size : s S > < L : Node{X} | next : o(O, N) > < o(O, N) : Node{X} | next : null, previous : L, value : O' > < O'' : Counter | index : s N > . crl [add] : *** adds at intermediate position of the list < O : List{X} | first : F, size : S > (O add O' at s P) => add-blocked(< O : List{X} | >) (F add' O' at P) if s P < S . rl [add] : *** recursively look for the place to add the element < O : Node{X} | next : O' > < O' : Node{X} | previous : O > (O add' O'' at P) < O''' : Counter | index : N > add-blocked(< L : List{X} | size : S >) => if P == 0 then < O : Node{X} | next : o(O, N) > < O' : Node{X} | previous : o(O, N) > < o(O, N) : Node{X} | previous : O, next : O', value : O'' > < O''' : Counter | index : s N > < L : List{X} | size : s S > else < O : Node{X} | > < O' : Node{X} | > (O' add' O'' at P - 1) < O''' : Counter | index : N > add-blocked(< L : List{X} | size : S >) fi . crl [get] : < O : List{X} | first : F, size : S > (O get at P from O') => get-blocked(< O : List{X} | >, P, O') (F in O get at P) if s P < S . crl [get] : < O : List{X} | last : L, size : s S > < L : Node{X} | value : O' > (O get at P from O'') => get-blocked(< O : List{X} | >, P, O'') < L : Node{X} | > (to O' from O get) if S = P . rl [get] : < O : Node{X} | next : O', value : O'' > (O in O''' get at P) => < O : Node{X} | > if P == 0 then (to O'' from O''' get) else (O' in O''' get at P - 1) fi . rl [get] : get-blocked(< O : List{X} | >, P, O') (to O from O'' answer(X)) => < O : List{X} | > (to O' from O elt at pos P is X) . op create-list : Oid -> Object . op l : -> Oid . eq create-list(O) = < O : List{X} | first : null, last : null, size : 0 > . endom omod NAT-WRAPPER is pr NAT . class NatWrapper | value : Nat . op w : Nat -> Oid . msg to_get from_ : Oid Oid -> Msg . msg to_answer_from_ : Oid Nat Oid -> Msg . vars O1 O2 : Oid . var N : Nat . rl < O1 : NatWrapper | value : N > (to O1 get from O2) => < O1 : NatWrapper | > (to O2 answer N from O1) . endom view NatW from WRAPPER to NAT-WRAPPER is sort Elt to Nat . class Wrapper to NatWrapper . attr contents to value . vars O O' : Oid . var X : Elt . msg to O from O' get to term to O get from O' . msg to O from O' answer(X) to term to O answer X from O' . endv omod P-NAT-LIST is including P-LIST{NatW} . ops c l : -> Oid . endom fth TAOSET is protecting BOOL . sort Elt . op _<_ : Elt Elt -> Bool . vars X Y Z : Elt . ceq X < Z = true if X < Y /\ Y < Z [nonexec label transitive] . ceq X = Y if X < Y /\ Y < X [nonexec label antisymmetric] . endfth oth TAOSET-WRAPPER is including TAOSET . class Wrapper | contents : Elt . msg to_from_get : Oid Oid -> Msg . msg to_from_answer(_) : Oid Oid Elt -> Msg . vars O1 O2 : Oid . var X : Elt . rl < O1 : Wrapper | contents : X > (to O1 from O2 get) => < O1 : Wrapper | contents : X > (to O2 from O1 answer(X)) . endoth view TAOSET-WRAPPER from WRAPPER to TAOSET-WRAPPER is sort Elt to Elt . class Wrapper to Wrapper . endv omod SORTED-LIST{X :: TAOSET-WRAPPER} is including P-LIST{TAOSET-WRAPPER}{X} . class SortedList{X} | first : Maybe{Oid}, last : Maybe{Oid}, size : Nat . subclass SortedList{X} < List{TAOSET-WRAPPER}{X} . msg _add_ : Oid Oid -> Msg . msg _add'_ : Oid Oid -> Msg . vars F L O O' O'' O''' O4 : Oid . vars V V' V'' : X$Elt . vars N S : Nat . rl [add] : *** adds on an empty stack < O : SortedList{X} | size : 0 > (O add O') => < O : SortedList{X} | > (O add O' at 0) . crl [add] : *** adds at the begining of the list < O : SortedList{X} | first : F, size : S > < F : Node{TAOSET-WRAPPER}{X} | previous : null, value : O' > < O' : X$Wrapper | contents : V > < O'' : X$Wrapper | contents : V' > (O add O'') < O''' : Counter | index : N > => < O : SortedList{X} | first : o(O, N), size : s S > < F : Node{TAOSET-WRAPPER}{X} | previous : o(O, N) > < O' : X$Wrapper | > < O'' : X$Wrapper | > < o(O, N) : Node{TAOSET-WRAPPER}{X} | next : F, previous : null, value : O'' > < O''' : Counter | index : s N > if V' < V . crl [add] : *** adds at the end of the list < O : SortedList{X} | last : L, size : S > < L : Node{TAOSET-WRAPPER}{X} | next : null, value : O' > < O' : X$Wrapper | contents : V > < O'' : X$Wrapper | contents : V' > (O add O'') < O''' : Counter | index : N > => < O : SortedList{X} | last : o(O, N), size : s S > < L : Node{TAOSET-WRAPPER}{X} | next : o(O, N) > < O' : X$Wrapper | > < O'' : X$Wrapper | > < o(O, N) : Node{TAOSET-WRAPPER}{X} | next : null, previous : L, value : O'' > < O''' : Counter | index : s N > if V < V' . crl [add] : *** adds at intermediate position of the list < O : SortedList{X} | first : F, last : L > < F : Node{TAOSET-WRAPPER}{X} | previous : null, value : O' > < O' : X$Wrapper | contents : V > < L : Node{TAOSET-WRAPPER}{X} | next : null, value : O'' > < O'' : X$Wrapper | contents : V' > < O''' : X$Wrapper | contents : V'' > (O add O''') => add-blocked(< O : SortedList{X} | >) < F : Node{TAOSET-WRAPPER}{X} | > < O' : X$Wrapper | > < L : Node{TAOSET-WRAPPER}{X} | > < O'' : X$Wrapper | > < O''' : X$Wrapper | > (F add' O''') if V < V'' /\ V'' < V' . rl [add] : *** recursively look for the place to add the element add-blocked(< L : SortedList{X} | size : S >) < O : Node{TAOSET-WRAPPER}{X} | next : O', value : O'' > < O' : Node{TAOSET-WRAPPER}{X} | previous : O > < O'' : X$Wrapper | contents : V > (O add' O''') < O''' : X$Wrapper | contents : V' > < O4 : Counter | index : N > => if V' < V then < L : SortedList{X} | size : s S > < O : Node{TAOSET-WRAPPER}{X} | next : o(O, N) > < O' : Node{TAOSET-WRAPPER}{X} | previous : o(O, N) > < O'' : X$Wrapper | contents : V > < o(O, N) : Node{TAOSET-WRAPPER}{X} | previous : O, next : O', value : O''' > < O''' : X$Wrapper | contents : V' > < O4 : Counter | index : s N > else add-blocked(< L : SortedList{X} | size : S >) < O : Node{TAOSET-WRAPPER}{X} | > < O' : Node{TAOSET-WRAPPER}{X} | > < O'' : X$Wrapper | > < O''' : X$Wrapper | > (O' add' O''') < O4 : Counter | > fi . op create-sorted-list : Oid -> Object . eq create-sorted-list(O) = < O : SortedList{X} | first : null, last : null, size : 0 > . endom view NatSW from TAOSET-WRAPPER to NAT-WRAPPER is sort Elt to Nat . class Wrapper to NatWrapper . attr contents to value . vars O O' : Oid . var X : Elt . msg to O from O' get to term to O get from O' . msg to O from O' answer(X) to term to O answer X from O' . endv omod SORTED-NAT-LIST is including SORTED-LIST{NatSW} . ops c l : -> Oid . endom load metaInterpreter mod META-OO is inc SORTED-NAT-LIST . pr META-INTERPRETER . sort ViewCmd ModuleCmd Seq . subsort ViewCmd ModuleCmd < Seq . op v : Qid -> ViewCmd . op m : Qid -> ModuleCmd . op __ : Seq Seq -> Seq [assoc id: nil] . op nil : -> Seq . op predef : -> Seq . eq predef = m('TRUTH-VALUE) m('BOOL-OPS) m('TRUTH) m('BOOL) m('NAT) m('INT) m('TRIV) m('CONFIGURATION) m('MAYBE) m('WRAPPER) v('Oid) m('P-LIST) m('NAT-WRAPPER) v('NatW) m('P-NAT-LIST) m('TAOSET) m('TAOSET-WRAPPER) v('TAOSET-WRAPPER) m('SORTED-LIST) v('NatSW) m('SORTED-NAT-LIST) . op me : -> Oid . op User : -> Cid . op pending:_ : Seq -> Attribute . op level:_ : Nat -> Attribute . vars X Y Z : Oid . var Q : Qid . var Rest : Seq . var AS : AttributeSet . var N : Nat . op problem : -> Term . eq problem = upTerm( < c : Counter | index : 0 > create-sorted-list(l) < w(0) : NatWrapper | value : 0 > < w(1) : NatWrapper | value : 1 > < w(2) : NatWrapper | value : 2 > < w(3) : NatWrapper | value : 3 > < w(4) : NatWrapper | value : 4 > (l add w(0)) (l add w(1)) (l add w(2)) (l add w(3)) (l add w(4)) (l get at 3 from l) ) . rl < X : User | pending: (m(Q) Rest), AS > createdInterpreter(X, Y, Z) => < X : User | pending: Rest, AS > insertModule(Z, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (m(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertModule(Y, X, upModule(Q, false)) . rl < X : User | pending: (v(Q) Rest), AS > insertedModule(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: (v(Q) Rest), AS > insertedView(X, Y) => < X : User | pending: Rest, AS > insertView(Y, X, upView(Q)) . rl < X : User | pending: nil, level: N > insertedModule(X, Y) => < X : User | pending: nil, level: N > rewriteTerm(Y, X, unbounded, 'SORTED-NAT-LIST, problem) . endm erew in META-OO : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, none) . rew in SORTED-NAT-LIST : < c : Counter | index : 0 > create-sorted-list(l) < w(0) : NatWrapper | value : 0 > < w(1) : NatWrapper | value : 1 > < w(2) : NatWrapper | value : 2 > < w(3) : NatWrapper | value : 3 > < w(4) : NatWrapper | value : 4 > (l add w(0)) (l add w(1)) (l add w(2)) (l add w(3)) (l add w(4)) (l get at 3 from l) . red in META-OO : ( < l : SortedList{NatSW} | first : o(l, 0), last : o(l, 4), size : 5 > < c : Counter | index : 5 > < w(0) : NatWrapper | value : 0 > < w(1) : NatWrapper | value : 1 > < w(2) : NatWrapper | value : 2 > < w(3) : NatWrapper | value : 3 > < w(4) : NatWrapper | value : 4 > < o(l, 0) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 1), previous : null, value : w(0) > < o(l, 1) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 2), previous : o(l, 0), value : w(1) > < o(l, 2) : Node{TAOSET-WRAPPER}{ NatSW} | next : o(l, 3), previous : o(l, 1), value : w(2) > < o(l, 3) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 4), previous : o(l, 2), value : w(3) > < o(l, 4) : Node{TAOSET-WRAPPER}{NatSW} | next : null, previous : o(l, 3), value : w(4) > to l from l elt at pos 3 is 3 ) == downTerm( '__['<_:_|_>['l.Oid, 'SortedList`{NatSW`}.SortedList`{NatSW`},'_`,_['first`:_['o['l.Oid,'0.Zero]],'last`:_['o['l.Oid,'s_^4['0.Zero]]],'size`:_[ 's_^5['0.Zero]]]],'<_:_|_>['c.Oid,'Counter.Counter,'index`:_['s_^5['0.Zero]]],'<_:_|_>['w['0.Zero],'NatWrapper.NatWrapper, 'value`:_['0.Zero]],'<_:_|_>['w['s_['0.Zero]],'NatWrapper.NatWrapper,'value`:_['s_['0.Zero]]],'<_:_|_>['w['s_^2['0.Zero]], 'NatWrapper.NatWrapper,'value`:_['s_^2['0.Zero]]],'<_:_|_>['w['s_^3['0.Zero]],'NatWrapper.NatWrapper,'value`:_['s_^3[ '0.Zero]]],'<_:_|_>['w['s_^4['0.Zero]],'NatWrapper.NatWrapper,'value`:_['s_^4['0.Zero]]],'<_:_|_>['o['l.Oid,'0.Zero], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`},'_`,_['next`:_['o['l.Oid,'s_['0.Zero]]],'previous`:_[ 'null.Maybe`{Oid`}],'value`:_['w['0.Zero]]]],'<_:_|_>['o['l.Oid,'s_['0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`},'_`,_['next`:_['o['l.Oid,'s_^2['0.Zero]]],'previous`:_['o[ 'l.Oid,'0.Zero]],'value`:_['w['s_['0.Zero]]]]],'<_:_|_>['o['l.Oid,'s_^2['0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`},'_`,_['next`:_['o['l.Oid,'s_^3['0.Zero]]],'previous`:_['o[ 'l.Oid,'s_['0.Zero]]],'value`:_['w['s_^2['0.Zero]]]]],'<_:_|_>['o['l.Oid,'s_^3['0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`},'_`,_['next`:_['o['l.Oid,'s_^4['0.Zero]]],'previous`:_['o[ 'l.Oid,'s_^2['0.Zero]]],'value`:_['w['s_^3['0.Zero]]]]],'<_:_|_>['o['l.Oid,'s_^4['0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`},'_`,_['next`:_['null.Maybe`{Oid`}],'previous`:_['o['l.Oid, 's_^3['0.Zero]]],'value`:_['w['s_^4['0.Zero]]]]],'to_from_elt`at`pos_is_['l.Oid,'l.Oid,'s_^3['0.Zero],'s_^3['0.Zero]]] , C:Configuration) . Maude-Maude3.5.1/tests/Meta/meta-oo-list-2.expected0000664000175000017510000001420015036121435021301 0ustar nileshnilesh========================================== erewrite in META-OO : <> < me : User | pending: predef, level: 0 > createInterpreter(interpreterManager, me, none) . rewrites: 82 result Configuration: <> < me : User | pending: nil, level: 0 > rewroteTerm(me, interpreter(0), 35, '__['<_:_|_>['l.Oid, 'SortedList`{NatSW`}.SortedList`{NatSW`}, '_`,_['first`:_['o['l.Oid, '0.Zero]], 'last`:_['o['l.Oid, 's_^4['0.Zero]]], 'size`:_['s_^5[ '0.Zero]]]], '<_:_|_>['c.Oid, 'Counter.Counter, 'index`:_['s_^5['0.Zero]]], '<_:_|_>['w['0.Zero], 'NatWrapper.NatWrapper, 'value`:_['0.Zero]], '<_:_|_>['w['s_['0.Zero]], 'NatWrapper.NatWrapper, 'value`:_['s_[ '0.Zero]]], '<_:_|_>['w['s_^2['0.Zero]], 'NatWrapper.NatWrapper, 'value`:_[ 's_^2['0.Zero]]], '<_:_|_>['w['s_^3['0.Zero]], 'NatWrapper.NatWrapper, 'value`:_['s_^3['0.Zero]]], '<_:_|_>['w['s_^4['0.Zero]], 'NatWrapper.NatWrapper, 'value`:_['s_^4['0.Zero]]], '<_:_|_>['o['l.Oid, '0.Zero], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`}, '_`,_['next`:_['o['l.Oid, 's_['0.Zero]]], 'previous`:_['null.Maybe`{Oid`}], 'value`:_['w['0.Zero]]]], '<_:_|_>['o['l.Oid, 's_['0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`}, '_`,_[ 'next`:_['o['l.Oid, 's_^2['0.Zero]]], 'previous`:_['o['l.Oid, '0.Zero]], 'value`:_['w['s_['0.Zero]]]]], '<_:_|_>['o['l.Oid, 's_^2['0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`}, '_`,_[ 'next`:_['o['l.Oid, 's_^3['0.Zero]]], 'previous`:_['o['l.Oid, 's_[ '0.Zero]]], 'value`:_['w['s_^2['0.Zero]]]]], '<_:_|_>['o['l.Oid, 's_^3[ '0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`}, '_`,_[ 'next`:_['o['l.Oid, 's_^4['0.Zero]]], 'previous`:_['o['l.Oid, 's_^2[ '0.Zero]]], 'value`:_['w['s_^3['0.Zero]]]]], '<_:_|_>['o['l.Oid, 's_^4[ '0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`}, '_`,_[ 'next`:_['null.Maybe`{Oid`}], 'previous`:_['o['l.Oid, 's_^3['0.Zero]]], 'value`:_['w['s_^4['0.Zero]]]]], 'to_from_elt`at`pos_is_['l.Oid, 'l.Oid, 's_^3['0.Zero], 's_^3['0.Zero]]], 'Configuration) Advisory: deleting interpreter(0) ========================================== rewrite in SORTED-NAT-LIST : (create-sorted-list(l) ((((((((((l add w(4)) l get at 3 from l) l add w(3)) l add w(2)) l add w(1)) l add w(0)) < w(4) : NatWrapper | value : 4 >) < w(3) : NatWrapper | value : 3 >) < w(2) : NatWrapper | value : 2 >) < w(1) : NatWrapper | value : 1 >) < w(0) : NatWrapper | value : 0 >) < c : Counter | index : 0 > . rewrites: 40 result Configuration: < l : SortedList{NatSW} | first : o(l, 0), last : o(l, 4), size : 5 > < c : Counter | index : 5 > < w(0) : NatWrapper | value : 0 > < w(1) : NatWrapper | value : 1 > < w(2) : NatWrapper | value : 2 > < w( 3) : NatWrapper | value : 3 > < w(4) : NatWrapper | value : 4 > < o(l, 0) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 1), previous : null, value : w(0) > < o(l, 1) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 2), previous : o(l, 0), value : w(1) > < o(l, 2) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 3), previous : o(l, 1), value : w(2) > < o(l, 3) : Node{TAOSET-WRAPPER}{ NatSW} | next : o(l, 4), previous : o(l, 2), value : w(3) > < o(l, 4) : Node{TAOSET-WRAPPER}{NatSW} | next : null, previous : o(l, 3), value : w(4) > to l from l elt at pos 3 is 3 ========================================== reduce in META-OO : (((((((((((< o(l, 4) : Node{TAOSET-WRAPPER}{NatSW} | next : null, previous : o(l, 3), value : w(4) > to l from l elt at pos 3 is 3) < o(l, 3) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 4), previous : o(l, 2), value : w(3) >) < o(l, 2) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 3), previous : o(l, 1), value : w(2) >) < o(l, 1) : Node{TAOSET-WRAPPER}{NatSW} | next : o(l, 2), previous : o(l, 0), value : w(1) >) < o(l, 0) : Node{ TAOSET-WRAPPER}{NatSW} | next : o(l, 1), previous : null, value : w(0) >) < w(4) : NatWrapper | value : 4 >) < w(3) : NatWrapper | value : 3 >) < w(2) : NatWrapper | value : 2 >) < w(1) : NatWrapper | value : 1 >) < w(0) : NatWrapper | value : 0 >) < c : Counter | index : 5 >) < l : SortedList{ NatSW} | first : o(l, 0), last : o(l, 4), size : 5 > == downTerm('__[ '<_:_|_>['l.Oid, 'SortedList`{NatSW`}.SortedList`{NatSW`}, '_`,_['first`:_[ 'o['l.Oid, '0.Zero]], 'last`:_['o['l.Oid, 's_^4['0.Zero]]], 'size`:_['s_^5[ '0.Zero]]]], '<_:_|_>['c.Oid, 'Counter.Counter, 'index`:_['s_^5['0.Zero]]], '<_:_|_>['w['0.Zero], 'NatWrapper.NatWrapper, 'value`:_['0.Zero]], '<_:_|_>['w['s_['0.Zero]], 'NatWrapper.NatWrapper, 'value`:_['s_[ '0.Zero]]], '<_:_|_>['w['s_^2['0.Zero]], 'NatWrapper.NatWrapper, 'value`:_[ 's_^2['0.Zero]]], '<_:_|_>['w['s_^3['0.Zero]], 'NatWrapper.NatWrapper, 'value`:_['s_^3['0.Zero]]], '<_:_|_>['w['s_^4['0.Zero]], 'NatWrapper.NatWrapper, 'value`:_['s_^4['0.Zero]]], '<_:_|_>['o['l.Oid, '0.Zero], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`}, '_`,_['next`:_['o['l.Oid, 's_['0.Zero]]], 'previous`:_['null.Maybe`{Oid`}], 'value`:_['w['0.Zero]]]], '<_:_|_>['o['l.Oid, 's_['0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`}, '_`,_[ 'next`:_['o['l.Oid, 's_^2['0.Zero]]], 'previous`:_['o['l.Oid, '0.Zero]], 'value`:_['w['s_['0.Zero]]]]], '<_:_|_>['o['l.Oid, 's_^2['0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`}, '_`,_[ 'next`:_['o['l.Oid, 's_^3['0.Zero]]], 'previous`:_['o['l.Oid, 's_[ '0.Zero]]], 'value`:_['w['s_^2['0.Zero]]]]], '<_:_|_>['o['l.Oid, 's_^3[ '0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`}, '_`,_[ 'next`:_['o['l.Oid, 's_^4['0.Zero]]], 'previous`:_['o['l.Oid, 's_^2[ '0.Zero]]], 'value`:_['w['s_^3['0.Zero]]]]], '<_:_|_>['o['l.Oid, 's_^4[ '0.Zero]], 'Node`{TAOSET-WRAPPER`}`{NatSW`}.Node`{TAOSET-WRAPPER`}`{NatSW`}, '_`,_[ 'next`:_['null.Maybe`{Oid`}], 'previous`:_['o['l.Oid, 's_^3['0.Zero]]], 'value`:_['w['s_^4['0.Zero]]]]], 'to_from_elt`at`pos_is_['l.Oid, 'l.Oid, 's_^3['0.Zero], 's_^3['0.Zero]]], C:Configuration) . rewrites: 2 result Bool: true Bye. Maude-Maude3.5.1/tests/Meta/meta-oo-list-20000775000175000017510000000035115036121435017506 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/meta-oo-list-2.maude -no-banner \ > meta-oo-list-2.out 2>&1 diff $srcdir/meta-oo-list-2.expected meta-oo-list-2.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/legacyMetaVariantUnify.maude0000664000175000017510000000737615036121435022555 0ustar nileshnileshset show timing off . fmod XOR is sort XOR . sort Elem . ops cst1 cst2 cst3 cst4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm fmod META-TEST is inc XOR . inc META-LEVEL . endfm *** regular red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, 0, 0) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, 10, 0) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, 0, 1) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, 0, 2) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, 0, 3) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, 0, 4) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, 0, 5) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, 0, 6) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, 0, 7) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), empty, 0, 8) . *** disjoint red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, 0, 0) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, 10, 0) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, 0, 1) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, 0, 2) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, 0, 3) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, 0, 4) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, 0, 5) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, 0, 6) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, 0, 7) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), empty, 0, 8) . *** regular with irreducibility constraint red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), upTerm(X:XOR + cst1), 0, 0) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), upTerm(X:XOR + cst1), 10, 0) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), upTerm(X:XOR + cst1), 0, 1) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), upTerm(X:XOR + cst1), 0, 2) . red metaVariantUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(Y:XOR + cst2), upTerm(X:XOR + cst1), 0, 3) . *** disjoint with irreducibility constraint red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), upTerm(X:XOR + cst1), 0, 0) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), upTerm(X:XOR + cst1), 10, 0) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), upTerm(X:XOR + cst1), 0, 1) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), upTerm(X:XOR + cst1), 0, 2) . red metaVariantDisjointUnify(['XOR], upTerm(X:XOR + cst1) =? upTerm(X:XOR + cst2), upTerm(X:XOR + cst1), 0, 3) . Maude-Maude3.5.1/tests/Meta/legacyMetaVariantUnify.expected0000664000175000017510000002107115036121435023247 0ustar nileshnilesh========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, (0).Zero, (0).Zero) . rewrites: 10 result UnificationPair: { 'X:XOR <- '_+_['cst2.Elem, '%1:XOR] ; 'Y:XOR <- '_+_['cst1.Elem, '%1:XOR], 1} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, 10, (0).Zero) . rewrites: 10 result UnificationPair: { 'X:XOR <- '_+_['cst2.Elem, '%11:XOR] ; 'Y:XOR <- '_+_['cst1.Elem, '%11:XOR], 11} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, (0).Zero, 1) . rewrites: 4 result UnificationPair: { 'X:XOR <- 'cst2.Elem ; 'Y:XOR <- 'cst1.Elem, (0).Zero} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, (0).Zero, 2) . rewrites: 22 result UnificationPair: { 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '#1:XOR] ; 'Y:XOR <- '#1:XOR, 1} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, (0).Zero, 3) . rewrites: 4 result UnificationPair: { 'X:XOR <- '#1:XOR ; 'Y:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '#1:XOR], 1} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, (0).Zero, 4) . rewrites: 4 result UnificationPair: { 'X:XOR <- '0.XOR ; 'Y:XOR <- '_+_['cst1.Elem, 'cst2.Elem], (0).Zero} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, (0).Zero, 5) . rewrites: 4 result UnificationPair: { 'X:XOR <- 'cst1.Elem ; 'Y:XOR <- 'cst2.Elem, (0).Zero} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, (0).Zero, 6) . rewrites: 4 result UnificationPair: { 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem] ; 'Y:XOR <- '0.XOR, (0).Zero} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, (0).Zero, 7) . rewrites: 4 result UnificationPair: { 'X:XOR <- '_+_['cst1.Elem, '%1:XOR] ; 'Y:XOR <- '_+_['cst2.Elem, '%1:XOR], 1} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), (empty).GroundTermList, (0).Zero, 8) . rewrites: 4 result UnificationPair?: (noUnifier).UnificationPair? ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, (0).Zero, (0).Zero) . rewrites: 10 result UnificationTriple: { 'X:XOR <- '_+_['cst2.Elem, '%1:XOR], 'X:XOR <- '_+_['cst1.Elem, '%1:XOR], 1} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, 10, (0).Zero) . rewrites: 10 result UnificationTriple: { 'X:XOR <- '_+_['cst2.Elem, '%11:XOR], 'X:XOR <- '_+_['cst1.Elem, '%11:XOR], 11} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, (0).Zero, 1) . rewrites: 4 result UnificationTriple: { 'X:XOR <- 'cst2.Elem, 'X:XOR <- 'cst1.Elem, (0).Zero} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, (0).Zero, 2) . rewrites: 22 result UnificationTriple: { 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '#1:XOR], 'X:XOR <- '#1:XOR, 1} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, (0).Zero, 3) . rewrites: 4 result UnificationTriple: { 'X:XOR <- '#1:XOR, 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '#1:XOR], 1} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, (0).Zero, 4) . rewrites: 4 result UnificationTriple: { 'X:XOR <- '0.XOR, 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem], (0).Zero} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, (0).Zero, 5) . rewrites: 4 result UnificationTriple: { 'X:XOR <- 'cst1.Elem, 'X:XOR <- 'cst2.Elem, (0).Zero} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, (0).Zero, 6) . rewrites: 4 result UnificationTriple: { 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem], 'X:XOR <- '0.XOR, (0).Zero} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, (0).Zero, 7) . rewrites: 4 result UnificationTriple: { 'X:XOR <- '_+_['cst1.Elem, '%1:XOR], 'X:XOR <- '_+_['cst2.Elem, '%1:XOR], 1} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), (empty).GroundTermList, (0).Zero, 8) . rewrites: 4 result UnificationTriple?: (noUnifier).UnificationTriple? ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), upTerm(cst1 + X:XOR), (0).Zero, (0).Zero) . rewrites: 7 result UnificationPair: { 'X:XOR <- '_+_['cst2.Elem, '%1:XOR] ; 'Y:XOR <- '_+_['cst1.Elem, '%1:XOR], 1} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), upTerm(cst1 + X:XOR), 10, (0).Zero) . rewrites: 7 result UnificationPair: { 'X:XOR <- '_+_['cst2.Elem, '%11:XOR] ; 'Y:XOR <- '_+_['cst1.Elem, '%11:XOR], 11} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), upTerm(cst1 + X:XOR), (0).Zero, 1) . rewrites: 4 result UnificationPair: { 'X:XOR <- 'cst2.Elem ; 'Y:XOR <- 'cst1.Elem, (0).Zero} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), upTerm(cst1 + X:XOR), (0).Zero, 2) . rewrites: 4 result UnificationPair: { 'X:XOR <- '#1:XOR ; 'Y:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '#1:XOR], 1} ========================================== reduce in META-TEST : metaVariantUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm( cst2 + Y:XOR), upTerm(cst1 + X:XOR), (0).Zero, 3) . rewrites: 4 result UnificationPair?: (noUnifier).UnificationPair? ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), upTerm(cst1 + X:XOR), (0).Zero, (0).Zero) . rewrites: 7 result UnificationTriple: { 'X:XOR <- '_+_['cst2.Elem, '%1:XOR], 'X:XOR <- '_+_['cst1.Elem, '%1:XOR], 1} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), upTerm(cst1 + X:XOR), 10, (0).Zero) . rewrites: 7 result UnificationTriple: { 'X:XOR <- '_+_['cst2.Elem, '%11:XOR], 'X:XOR <- '_+_['cst1.Elem, '%11:XOR], 11} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), upTerm(cst1 + X:XOR), (0).Zero, 1) . rewrites: 4 result UnificationTriple: { 'X:XOR <- 'cst2.Elem, 'X:XOR <- 'cst1.Elem, (0).Zero} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), upTerm(cst1 + X:XOR), (0).Zero, 2) . rewrites: 4 result UnificationTriple: { 'X:XOR <- '#1:XOR, 'X:XOR <- '_+_['cst1.Elem, 'cst2.Elem, '#1:XOR], 1} ========================================== reduce in META-TEST : metaVariantDisjointUnify(['XOR], upTerm(cst1 + X:XOR) =? upTerm(cst2 + X:XOR), upTerm(cst1 + X:XOR), (0).Zero, 3) . rewrites: 4 result UnificationTriple?: (noUnifier).UnificationTriple? Bye. Maude-Maude3.5.1/tests/Meta/legacyMetaVariantUnify0000775000175000017510000000042415036121435021451 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/legacyMetaVariantUnify.maude -no-banner -no-advise \ > legacyMetaVariantUnify.out 2>&1 diff $srcdir/legacyMetaVariantUnify.expected legacyMetaVariantUnify.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/legacyMetaUnify.maude0000664000175000017510000000421315036121435021213 0ustar nileshnileshset show timing off . set show advisories off . *** 7 unifiers for most trivial elementary AC problem reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], 0, 0) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], 0, 1) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], 0, 2) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], 0, 3) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], 0, 4) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], 0, 5) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], 0, 6) . reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['X:Nat, 'Y:Nat], 0, 7) . *** variable names allow arbitrarily large numbering reduce in META-LEVEL : metaUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['A:Nat, 'B:Nat], 100000000000000000000, 0) . *** using variable names in unifications with larger numbers than *** declared by the the 3rd argument generates a warning and no *** reduction. reduce in META-LEVEL : metaUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['#1:Nat, 'Y:Nat], 0, 0) . *** simultaneous unification fmod BAZ is sort Foo . ops a b : -> Foo . op f : Foo -> Foo . endfm red in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['Y:Foo] /\ 'f['X:Foo] =? 'f['Z:Foo], 0, 0) . red in META-LEVEL : metaDisjointUnify(['BAZ], 'f['Y:Foo] =? 'f['X:Foo] /\ 'f['Z:Foo] =? 'f['X:Foo], 0, 0) . red in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['Y:Foo] /\ 'f['Y:Foo] =? 'f['X:Foo], 0, 0) . red in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['a.Foo] /\ 'f['X:Foo] =? 'f['b.Foo], 0, 0) . red in META-LEVEL : metaDisjointUnify(['BAZ], 'f['a.Foo] =? 'f['X:Foo] /\ 'f['b.Foo] =? 'f['X:Foo], 0, 0) . Maude-Maude3.5.1/tests/Meta/legacyMetaUnify.expected0000664000175000017510000001105315036121435021721 0ustar nileshnilesh========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], 0, 0) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '_+_['#2:Nat, '#4:Nat], 'X:Nat <- '_+_['#1:Nat, '#2:Nat] ; 'Y:Nat <- '_+_['#3:Nat, '#4:Nat], 4} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], 0, 1) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '_+_['#2:Nat, '#3:Nat] ; 'Y:Nat <- '#1:Nat, 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '#2:Nat, 3} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], 0, 2) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '#1:Nat ; 'Y:Nat <- '_+_['#2:Nat, '#3:Nat], 'X:Nat <- '_+_['#1:Nat, '#3:Nat] ; 'Y:Nat <- '#2:Nat, 3} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], 0, 3) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '_+_['#2:Nat, '#3:Nat] ; 'Y:Nat <- '#1:Nat, 'X:Nat <- '#2:Nat ; 'Y:Nat <- '_+_['#1:Nat, '#3:Nat], 3} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], 0, 4) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#2:Nat, 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#2:Nat, 2} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], 0, 5) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '#1:Nat ; 'Y:Nat <- '_+_['#2:Nat, '#3:Nat], 'X:Nat <- '#2:Nat ; 'Y:Nat <- '_+_['#1:Nat, '#3:Nat], 3} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], 0, 6) . rewrites: 2 result UnificationTriple: { 'X:Nat <- '#2:Nat ; 'Y:Nat <- '#1:Nat, 'X:Nat <- '#1:Nat ; 'Y:Nat <- '#2:Nat, 2} ========================================== reduce in META-LEVEL : metaDisjointUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_[ 'X:Nat, 'Y:Nat], 0, 7) . rewrites: 2 result UnificationTriple?: (noUnifier).UnificationTriple? ========================================== reduce in META-LEVEL : metaUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['A:Nat, 'B:Nat], 100000000000000000000, 0) . rewrites: 2 result UnificationPair: { 'A:Nat <- '_+_['#100000000000000000001:Nat, '#100000000000000000002:Nat] ; 'B:Nat <- '_+_['#100000000000000000003:Nat, '#100000000000000000004:Nat] ; 'X:Nat <- '_+_['#100000000000000000001:Nat, '#100000000000000000003:Nat] ; 'Y:Nat <- '_+_['#100000000000000000002:Nat, '#100000000000000000004:Nat], 100000000000000000004} ========================================== reduce in META-LEVEL : metaUnify(['NAT], '_+_['X:Nat, 'Y:Nat] =? '_+_['#1:Nat, 'Y:Nat], 0, 0) . Warning: unsafe variable name #1:Nat in unification problem. rewrites: 1 result [UnificationPair?,MatchOrUnificationPair,MatchPair?]: metaUnify(sth 'NAT is including 'NAT . sorts none . none none none none none none none endsth, '_+_['X:Nat, 'Y:Nat] =? '_+_['#1:Nat, 'Y:Nat], 0, 0) ========================================== reduce in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['Y:Foo] /\ 'f['X:Foo] =? 'f['Z:Foo], 0, 0) . rewrites: 2 result UnificationTriple: { 'X:Foo <- '#1:Foo, 'Y:Foo <- '#1:Foo ; 'Z:Foo <- '#1:Foo, 1} ========================================== reduce in META-LEVEL : metaDisjointUnify(['BAZ], 'f['Y:Foo] =? 'f['X:Foo] /\ 'f['Z:Foo] =? 'f['X:Foo], 0, 0) . rewrites: 2 result UnificationTriple: { 'Y:Foo <- '#1:Foo ; 'Z:Foo <- '#1:Foo, 'X:Foo <- '#1:Foo, 1} ========================================== reduce in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['Y:Foo] /\ 'f['Y:Foo] =? 'f['X:Foo], 0, 0) . rewrites: 2 result UnificationTriple: { 'X:Foo <- '#1:Foo ; 'Y:Foo <- '#2:Foo, 'X:Foo <- '#2:Foo ; 'Y:Foo <- '#1:Foo, 2} ========================================== reduce in META-LEVEL : metaDisjointUnify(['BAZ], 'f['X:Foo] =? 'f['a.Foo] /\ 'f['X:Foo] =? 'f['b.Foo], 0, 0) . rewrites: 2 result UnificationTriple?: (noUnifier).UnificationTriple? ========================================== reduce in META-LEVEL : metaDisjointUnify(['BAZ], 'f['a.Foo] =? 'f['X:Foo] /\ 'f['b.Foo] =? 'f['X:Foo], 0, 0) . rewrites: 2 result UnificationTriple?: (noUnifier).UnificationTriple? Bye. Maude-Maude3.5.1/tests/Meta/legacyMetaUnify0000775000175000017510000000037015036121435020124 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/legacyMetaUnify.maude -no-banner -no-advise \ > legacyMetaUnify.out 2>&1 diff $srcdir/legacyMetaUnify.expected legacyMetaUnify.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/legacyMetaGetVariant.maude0000664000175000017510000000216715036121435022173 0ustar nileshnileshset show timing off . fmod XOR is sort XOR . sort Elem . ops cst1 cst2 cst3 cst4 : -> Elem . subsort Elem < XOR . op _+_ : XOR XOR -> XOR [ctor assoc comm] . op 0 : -> XOR . op a : -> XOR . vars X Y : XOR . eq Y + 0 = Y [variant] . eq X + X = 0 [variant] . eq X + X + Y = Y [variant] . endfm fmod TEST is inc XOR . inc META-LEVEL . endfm red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, 0, 0) . red metaGetVariant(upModule('XOR, false), upTerm(X:XOR + cst1), empty, 0, 0) . red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, 10, 0) . red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, 0, 1) . red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, 0, 2) . red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, 0, 3) . red metaGetVariant(['XOR], upTerm(X:XOR + cst1), empty, 0, 4) . red metaGetVariant(['XOR], upTerm(X:XOR + cst2), upTerm(X:XOR + a), 0, 0) . red metaGetVariant(['XOR], upTerm(X:XOR + cst2), upTerm(X:XOR + a), 0, 1) . red metaGetVariant(['XOR], upTerm(X:XOR + cst2), upTerm(X:XOR + a), 0, 2) . red metaGetVariant(['XOR], upTerm(X:XOR + cst2), upTerm(X:XOR + a), 0, 3) . Maude-Maude3.5.1/tests/Meta/legacyMetaGetVariant.expected0000664000175000017510000000506215036121435022676 0ustar nileshnilesh========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, (0).Zero, (0).Zero) . rewrites: 3 result Variant: {'_+_['cst1.Elem, '#1:XOR], 'X:XOR <- '#1:XOR, 1, (none).Parent, false} ========================================== reduce in TEST : metaGetVariant(upModule('XOR, false), upTerm(cst1 + X:XOR), ( empty).GroundTermList, (0).Zero, (0).Zero) . rewrites: 3 result Variant: {'_+_['cst1.Elem, '#1:XOR], 'X:XOR <- '#1:XOR, 1, (none).Parent, false} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, 10, (0).Zero) . rewrites: 3 result Variant: {'_+_['cst1.Elem, '#11:XOR], 'X:XOR <- '#11:XOR, 11, (none).Parent, false} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, (0).Zero, 1) . rewrites: 6 result Variant: {'cst1.Elem, 'X:XOR <- '0.XOR, (0).Zero, (0).Zero, true} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, (0).Zero, 2) . rewrites: 3 result Variant: {'0.XOR, 'X:XOR <- 'cst1.Elem, (0).Zero, (0).Zero, true} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, (0).Zero, 3) . rewrites: 3 result Variant: {'%1:XOR, 'X:XOR <- '_+_['cst1.Elem, '%1:XOR], 1, (0).Zero, false} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst1 + X:XOR), ( empty).GroundTermList, (0).Zero, 4) . rewrites: 3 result Variant?: noVariant ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst2 + X:XOR), upTerm(a + X:XOR), (0).Zero, (0).Zero) . rewrites: 4 result Variant: {'_+_['cst2.Elem, '#1:XOR], 'X:XOR <- '#1:XOR, 1, (none).Parent, false} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst2 + X:XOR), upTerm(a + X:XOR), (0).Zero, 1) . rewrites: 6 result Variant: {'0.XOR, 'X:XOR <- 'cst2.Elem, (0).Zero, (0).Zero, true} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst2 + X:XOR), upTerm(a + X:XOR), (0).Zero, 2) . rewrites: 4 result Variant: {'%1:XOR, 'X:XOR <- '_+_['cst2.Elem, '%1:XOR], 1, (0).Zero, false} ========================================== reduce in TEST : metaGetVariant(['XOR], upTerm(cst2 + X:XOR), upTerm(a + X:XOR), (0).Zero, 3) . rewrites: 4 result Variant?: noVariant Bye. Maude-Maude3.5.1/tests/Meta/legacyMetaGetVariant0000775000175000017510000000041415036121435021075 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/legacyMetaGetVariant.maude -no-banner -no-advise \ > legacyMetaGetVariant.out 2>&1 diff $srcdir/legacyMetaGetVariant.expected legacyMetaGetVariant.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/checkUnifiers.maude0000664000175000017510000001303115036121435020705 0ustar nileshnileshset show timing off . set show advisories off . *** *** Compute unifiers and variant unifiers (without equations *** to minimize unifier set) and test them. *** fmod CHECK is inc LEXICAL . inc META-LEVEL . sort Result ResultList . subsort Result < ResultList . op __ : ResultList ResultList -> ResultList [assoc id: ok] . op ok : -> Result . op badUnifier : Substitution -> Result [format (r o)]. op unifierCount : Nat -> Result . op unifierCountIncomplete : Nat -> Result . vars T T' : Term . var N : Nat . var S : Substitution . var Q : Qid . var M : Module . vars SS ST : String . op check : Module String String -> ResultList . eq check(M, SS, ST) = check(M, convert(M, SS), convert(M, ST), 0) check2(M, convert(M, SS), convert(M, ST), 0) . op convert : Module String -> Term . eq convert(M, SS) = getTerm(metaParse(M, none, tokenize(SS), anyType)) . op check : Module Term Term Nat -> ResultList . eq check(M, T, T', N) = if (metaUnify(M, T =? T', '%, N) == noUnifier) then unifierCount(N) else if (metaUnify(M, T =? T', '%, N) == noUnifierIncomplete) then unifierCountIncomplete(N) else verify(M, T, T', metaUnify(M, T =? T', '%, N)) check(M, T, T', s N) fi fi . op check2 : Module Term Term Nat -> ResultList . eq check2(M, T, T', N) = if (metaVariantUnify(M, T =? T', empty, '%, none, N) == noUnifier) then unifierCount(N) else if (metaVariantUnify(M, T =? T', empty, '%, none, N) == noUnifierIncomplete) then unifierCountIncomplete(N) else verify(M, T, T', metaVariantUnify(M, T =? T', empty, '%, none, N)) check2(M, T, T', s N) fi fi . op verify : Module Term Term UnificationPair -> Result . eq verify(M, T, T', {S, Q}) = if (applySubstitution(M, T, S) == applySubstitution(M, T', S)) then ok else badUnifier(S) fi . endfm fmod A-UNIF is sorts List Elt . subsort Elt < List . op __ : List List -> List [assoc] . op f : List List -> List [assoc] . op g : List List -> List . op h : List List -> List [assoc comm] . op i : List -> List . op j : List List -> List [assoc comm id: 1] . op 1 : -> List . ops a b c d e : -> Elt . vars A B C D G H I J K L M N P Q R S T U V W X Y Z : List . vars E F : Elt . endfm red in CHECK : check(['A-UNIF], "A:List B:List", "X:List") . red in CHECK : check(['A-UNIF], "A:List B:List", "X:List Y:List") . red in CHECK : check(['A-UNIF], "A:List B:List C:List", "X:List Y:List") . red in CHECK : check(['A-UNIF], "A:List B:List C:List", "X:List Y:List Z:List") . red in CHECK : check(['A-UNIF], "A:List B:List C:List G:List", "X:List Y:List Z:List") . red in CHECK : check(['A-UNIF], "A:List B:List C:List D:List G:List", "X:List Y:List Z:List") . red in CHECK : check(['A-UNIF], "A:List B:List", "B:List C:List") . red in CHECK : check(['A-UNIF], "a A:List a", "B:List a C:List") . red in CHECK : check(['A-UNIF], "a A:List b", "B:List c C:List") . red in CHECK : check(['A-UNIF], "a A:List a", "B:List a C:List a D:List") . red in CHECK : check(['A-UNIF], "a A:List b", "B:List c C:List d D:List") . red in CHECK : check(['A-UNIF], "h(A:List, B:List, B:List) C:List h(G:List, H:List)", "I:List h(J:List, i(K:List)) L:List") . red in CHECK : check(['A-UNIF], "h(A:List, B:List) C:List h(G:List, H:List)", "I:List h(J:List, J:List) L:List h(M:List, M:List) N:List") . red in CHECK : check(['A-UNIF], "A:List h(X:List, Y:List) B:List", "C:List h(U:List, V:List) D:List h(U:List, U:List) G:List") . red in CHECK : check(['A-UNIF], "h(h(A:List, B:List, B:List) C:List h(G:List, H:List), X:List Y:List a Z:List)", "h(I:List h(J:List, i(K:List)) L:List, U:List b V:List W:List)") . red in CHECK : check(['A-UNIF], "h(A:List, A:List)", "h(f(B:List, C:List), f(I:List, J:List))") . red in CHECK : check(['A-UNIF], "h(A:List, A:List, A:List)", "h(f(B:List, C:List), f(I:List, J:List), f(X:List, Y:List))") . red in CHECK : check(['A-UNIF], "h(f(a, b), f(a, b), f(a, b))", "h(f(B:List, C:List), f(I:List, J:List), f(X:List, Y:List))") . red in CHECK : check(['A-UNIF], "A:List E:Elt B:List F:Elt C:List E:Elt D:List", "W:List F:Elt X:List E:Elt Y:List F:Elt Z:List") . red in CHECK : check(['A-UNIF], "j(A:List, f(B:List, E:Elt, C:List), f(D:List, E:Elt, j(G:List, H:List), I:List))", "j(U:List, f(V:List, W:List), f(X:List, j(Y:List, Z:List), S:List))") . fmod AC+C is sort Elt Set . subsort Elt < Set . ops a b c d e z : -> Elt . op f : Set Set -> Set [assoc comm] . op g : Set Set -> Set [comm] . vars U V W X Y Z : Set . vars A B C D E F : Elt . endfm red in CHECK : check(['AC+C], "f(g(X:Set, Y:Set), g(X:Set, Z:Set), U:Set)", "f(g(Y:Set, Z:Set), V:Set)") . red in CHECK : check(['AC+C], "g(f(X:Set, Y:Set), f(X:Set, U:Set, Z:Set))", "g(f(U:Set, V:Set), f(W:Set, A:Elt))") . fmod NAT' is protecting BOOL . sorts Zero NzNat Nat . subsort Zero NzNat < Nat . op 0 : -> Zero . op s_ : Nat -> NzNat [iter] . op _*_ : NzNat NzNat -> NzNat [assoc comm id: s(0) prec 31] . op _*_ : Nat Nat -> Nat [ditto] . vars W X Y Z A B C D : Nat . endfm red in CHECK : check(['NAT'], "X:Nat", "s (X:Nat * Y:Nat)") . red in CHECK : check(['NAT'], "X:Nat", "s X:Nat * Y:Nat") . red in CHECK : check(['NAT'], "s X:Nat", "s X:Nat * Y:Nat") . red in CHECK : check(['NAT'], "s X:Nat", "X:Nat * Y:Nat") . fmod COMM is sort Foo . ops a b c d : -> Foo . op f : Foo Foo -> Foo [assoc comm id: c(a, b)] . op c : Foo Foo -> Foo [comm] . vars W X Y Z A B C D : Foo . endfm red in CHECK : check(['COMM], "X:Foo", "c(f(X:Foo, Y:Foo), Z:Foo)") . Maude-Maude3.5.1/tests/Meta/checkUnifiers.expected0000664000175000017510000001352215036121435021420 0ustar nileshnilesh========================================== reduce in CHECK : check(['A-UNIF], "A:List B:List", "X:List") . rewrites: 58 result ResultList: unifierCount(1) unifierCount(1) ========================================== reduce in CHECK : check(['A-UNIF], "A:List B:List", "X:List Y:List") . rewrites: 156 result ResultList: unifierCount(3) unifierCount(3) ========================================== reduce in CHECK : check(['A-UNIF], "A:List B:List C:List", "X:List Y:List") . rewrites: 278 result ResultList: unifierCount(5) unifierCount(5) ========================================== reduce in CHECK : check(['A-UNIF], "A:List B:List C:List", "X:List Y:List Z:List") . rewrites: 772 result ResultList: unifierCount(13) unifierCount(13) ========================================== reduce in CHECK : check(['A-UNIF], "A:List B:List C:List G:List", "X:List Y:List Z:List") . rewrites: 1618 result ResultList: unifierCount(25) unifierCount(25) ========================================== reduce in CHECK : check(['A-UNIF], "A:List B:List C:List D:List G:List", "X:List Y:List Z:List") . rewrites: 2888 result ResultList: unifierCount(41) unifierCount(41) ========================================== reduce in CHECK : check(['A-UNIF], "A:List B:List", "B:List C:List") . Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. Warning: Unification modulo the theory of operator __ has encountered an instance for which it may not be complete. rewrites: 114 result ResultList: unifierCountIncomplete(2) unifierCountIncomplete(2) ========================================== reduce in CHECK : check(['A-UNIF], "a A:List a", "B:List a C:List") . rewrites: 250 result ResultList: unifierCount(4) unifierCount(4) ========================================== reduce in CHECK : check(['A-UNIF], "a A:List b", "B:List c C:List") . rewrites: 250 result ResultList: unifierCount(4) unifierCount(4) ========================================== reduce in CHECK : check(['A-UNIF], "a A:List a", "B:List a C:List a D:List") . rewrites: 298 result ResultList: unifierCount(4) unifierCount(4) ========================================== reduce in CHECK : check(['A-UNIF], "a A:List b", "B:List c C:List d D:List") . rewrites: 298 result ResultList: unifierCount(4) unifierCount(4) ========================================== reduce in CHECK : check(['A-UNIF], "h(A:List, B:List, B:List) C:List h(G:List, H:List)", "I:List h(J:List, i(K:List)) L:List") . rewrites: 346 result ResultList: unifierCount(4) unifierCount(4) ========================================== reduce in CHECK : check(['A-UNIF], "h(A:List, B:List) C:List h(G:List, H:List)", "I:List h(J:List, J:List) L:List h(M:List, M:List) N:List") . rewrites: 394 result ResultList: unifierCount(4) unifierCount(4) ========================================== reduce in CHECK : check(['A-UNIF], "A:List h(X:List, Y:List) B:List", "C:List h(U:List, V:List) D:List h(U:List, U:List) G:List") . rewrites: 1778 result ResultList: unifierCount(20) unifierCount(20) ========================================== reduce in CHECK : check(['A-UNIF], "h(h(A:List, B:List, B:List) C:List h(G:List, H:List), X:List Y:List a Z:List)", "h(I:List h(J:List, i(K:List)) L:List, U:List b V:List W:List)") . rewrites: 16658 result ResultList: unifierCount(128) unifierCount(128) ========================================== reduce in CHECK : check(['A-UNIF], "h(A:List, A:List)", "h(f(B:List, C:List), f(I:List, J:List))") . rewrites: 192 result ResultList: unifierCount(3) unifierCount(3) ========================================== reduce in CHECK : check(['A-UNIF], "h(A:List, A:List, A:List)", "h(f(B:List, C:List), f(I:List, J:List), f(X:List, Y:List))") . rewrites: 954 result ResultList: unifierCount(13) unifierCount(13) ========================================== reduce in CHECK : check(['A-UNIF], "h(f(a, b), f(a, b), f(a, b))", "h(f(B:List, C:List), f(I:List, J:List), f(X:List, Y:List))") . rewrites: 108 result ResultList: unifierCount(1) unifierCount(1) ========================================== reduce in CHECK : check(['A-UNIF], "A:List E:Elt B:List F:Elt C:List E:Elt D:List", "W:List F:Elt X:List E:Elt Y:List F:Elt Z:List") . rewrites: 35740 result ResultList: unifierCount(337) unifierCount(337) ========================================== reduce in CHECK : check(['A-UNIF], "j(A:List, f(B:List, E:Elt, C:List), f(D:List, E:Elt, j(G:List, H:List), I:List))", "j(U:List, f(V:List, W:List), f(X:List, j(Y:List, Z:List), S:List))") . rewrites: 213767 result ResultList: unifierCount(3740) unifierCount(293) ========================================== reduce in CHECK : check(['AC+C], "f(g(X:Set, Y:Set), g(X:Set, Z:Set), U:Set)", "f(g(Y:Set, Z:Set), V:Set)") . rewrites: 290 result ResultList: unifierCount(4) unifierCount(4) ========================================== reduce in CHECK : check(['AC+C], "g(f(X:Set, Y:Set), f(X:Set, U:Set, Z:Set))", "g(f(U:Set, V:Set), f(W:Set, A:Elt))") . rewrites: 3570 result ResultList: unifierCount(48) unifierCount(48) ========================================== reduce in CHECK : check(['NAT'], "X:Nat", "s (X:Nat * Y:Nat)") . rewrites: 81 result ResultList: unifierCount(2) unifierCount(1) ========================================== reduce in CHECK : check(['NAT'], "X:Nat", "s X:Nat * Y:Nat") . rewrites: 81 result ResultList: unifierCount(2) unifierCount(1) ========================================== reduce in CHECK : check(['NAT'], "s X:Nat", "s X:Nat * Y:Nat") . rewrites: 62 result ResultList: unifierCount(1) unifierCount(1) ========================================== reduce in CHECK : check(['NAT'], "s X:Nat", "X:Nat * Y:Nat") . rewrites: 60 result ResultList: unifierCount(1) unifierCount(1) ========================================== reduce in CHECK : check(['COMM], "X:Foo", "c(f(X:Foo, Y:Foo), Z:Foo)") . rewrites: 110 result ResultList: unifierCount(2) unifierCount(2) Bye. Maude-Maude3.5.1/tests/Meta/checkUnifiers0000775000175000017510000000036015036121435017617 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/checkUnifiers.maude -no-banner -no-advise \ > checkUnifiers.out 2>&1 diff $srcdir/checkUnifiers.expected checkUnifiers.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Meta/Makefile.am0000664000175000017510000001270515036121435017151 0ustar nileshnileshTESTS = \ metaProcPrelude \ metaProcReplace \ metaProcReplace2 \ russianDollsFlatProc \ russianDollsNonFlatProc \ russianDollsNonFlatProc2 \ russianDollsNonFlatProc3 \ metaProcMatch \ metaProcSearch \ metaProcSort \ metaProcUnify \ metaProcVariant \ metaProcVariantUnify \ metaProcVariantUnify2 \ metaProcVariantMatch \ metaProcPrint \ metaProcParse \ metaProcApply \ metaProcNarrow \ metaProcNarrowSearch \ metaProcStrategy \ metaApply \ metaUnify \ metaFrewrite \ metaMatch \ metaMeta \ metaModule \ metaParse \ metaPrettyPrint \ metaReduce \ metaRewrite \ metaSearch \ metaSort \ metaSpecial \ metaTerm \ metaUp \ metaWellFormed \ metaXapply \ metaXmatch \ metaUp2 \ metaUpModExp \ metaModExp \ metaPolymorph \ metaUpDown \ metaPrintAttr \ metaMetadata \ metaVariantUnify \ metaVariantUnify2 \ metaVariantMatch \ metaGetVariant \ metaNarrow \ metaIntPrelude \ metaIntReplace \ metaIntReplace2 \ russianDollsFlat \ russianDollsNonFlat \ russianDollsNonFlat2 \ russianDollsNonFlat3 \ metaIntMatch \ metaIntSearch \ metaIntSort \ metaIntUnify \ metaIntVariant \ metaIntVariantUnify \ metaIntVariantUnify2 \ metaIntVariantMatch \ metaIntPrint \ metaIntParse \ metaIntApply \ metaIntNewNarrow \ metaIntNewNarrowSearch \ legacyMetaUnify \ legacyMetaVariantUnify \ legacyMetaGetVariant \ metaIntStrategy \ checkUnifiers \ meta-oo-list-2 \ metaGeneratedBy MAUDE_FILES = \ metaProcPrelude.maude \ metaProcReplace.maude \ metaProcReplace2.maude \ russianDollsFlatProc.maude \ russianDollsNonFlatProc.maude \ russianDollsNonFlatProc2.maude \ russianDollsNonFlatProc3.maude \ metaProcMatch.maude \ metaProcSearch.maude \ metaProcSort.maude \ metaProcUnify.maude \ metaProcVariant.maude \ metaProcVariantUnify.maude \ metaProcVariantUnify2.maude \ metaProcVariantMatch.maude \ metaProcPrint.maude \ metaProcParse.maude \ metaProcApply.maude \ metaProcNarrow.maude \ metaProcNarrowSearch.maude \ metaProcStrategy.maude \ metaApply.maude \ metaUnify.maude \ metaFrewrite.maude \ metaMatch.maude \ metaMeta.maude \ metaModule.maude \ metaParse.maude \ metaPrettyPrint.maude \ metaReduce.maude \ metaRewrite.maude \ metaSearch.maude \ metaSort.maude \ metaSpecial.maude \ metaTerm.maude \ metaUp.maude \ metaWellFormed.maude \ metaXapply.maude \ metaXmatch.maude \ metaUp2.maude \ metaUpModExp.maude \ metaModExp.maude \ metaPolymorph.maude \ metaUpDown.maude \ metaPrintAttr.maude \ metaMetadata.maude \ metaVariantUnify.maude \ metaVariantUnify2.maude \ metaVariantMatch.maude \ metaGetVariant.maude \ metaNarrow.maude \ metaIntPrelude.maude \ metaIntReplace.maude \ metaIntReplace2.maude \ russianDollsFlat.maude \ russianDollsNonFlat.maude \ russianDollsNonFlat2.maude \ russianDollsNonFlat3.maude \ metaIntMatch.maude \ metaIntSearch.maude \ metaIntSort.maude \ metaIntUnify.maude \ metaIntVariant.maude \ metaIntVariantUnify.maude \ metaIntVariantUnify2.maude \ metaIntVariantMatch.maude \ metaIntPrint.maude \ metaIntParse.maude \ metaIntApply.maude \ metaIntNewNarrow.maude \ metaIntNewNarrowSearch.maude \ legacyMetaUnify.maude \ legacyMetaVariantUnify.maude \ legacyMetaGetVariant.maude \ metaIntStrategy.maude \ checkUnifiers.maude \ meta-oo-list-2.maude \ metaGeneratedBy.maude RESULT_FILES = \ metaProcPrelude.expected \ metaProcReplace.expected \ metaProcReplace2.expected \ russianDollsFlatProc.expected \ russianDollsNonFlatProc.expected \ russianDollsNonFlatProc2.expected \ russianDollsNonFlatProc3.expected \ metaProcMatch.expected \ metaProcSearch.expected \ metaProcSort.expected \ metaProcUnify.expected \ metaProcVariant.expected \ metaProcVariantUnify.expected \ metaProcVariantUnify2.expected \ metaProcVariantMatch.expected \ metaProcPrint.expected \ metaProcParse.expected \ metaProcApply.expected \ metaProcNarrow.expected \ metaProcNarrowSearch.expected \ metaProcStrategy.expected \ metaApply.expected \ metaUnify.expected \ metaFrewrite.expected \ metaApply.expected \ metaFrewrite.expected \ metaMatch.expected \ metaMeta.expected \ metaModule.expected \ metaParse.expected \ metaPrettyPrint.expected \ metaReduce.expected \ metaRewrite.expected \ metaSearch.expected \ metaSort.expected \ metaSpecial.expected \ metaTerm.expected \ metaUp.expected \ metaWellFormed.expected \ metaXapply.expected \ metaXmatch.expected \ metaUp2.expected \ metaUpModExp.expected \ metaModExp.expected \ metaPolymorph.expected \ metaUpDown.expected \ metaPrintAttr.expected \ metaMetadata.expected \ metaVariantUnify.expected \ metaVariantUnify2.expected \ metaVariantMatch.expected \ metaGetVariant.expected \ metaNarrow.expected \ metaIntPrelude.expected \ metaIntReplace.expected \ metaIntReplace2.expected \ russianDollsFlat.expected \ russianDollsNonFlat.expected \ russianDollsNonFlat2.expected \ russianDollsNonFlat3.expected \ metaIntMatch.expected \ metaIntSearch.expected \ metaIntSort.expected \ metaIntUnify.expected \ metaIntVariant.expected \ metaIntVariantUnify.expected \ metaIntVariantUnify2.expected \ metaIntVariantMatch.expected \ metaIntPrint.expected \ metaIntParse.expected \ metaIntApply.expected \ metaIntNewNarrow.expected \ metaIntNewNarrowSearch.expected \ legacyMetaUnify.expected \ legacyMetaVariantUnify.expected \ legacyMetaGetVariant.expected \ metaIntStrategy.expected \ checkUnifiers.expected \ meta-oo-list-2.expected \ metaGeneratedBy.expected EXTRA_DIST = $(TESTS) $(MAUDE_FILES) $(RESULT_FILES) Maude-Maude3.5.1/tests/Makefile.am0000664000175000017510000000012015036121435016247 0ustar nileshnileshSUBDIRS = Corner BuiltIn Misc Meta ResolvedBugs StrategyLanguage ObjectOriented Maude-Maude3.5.1/tests/Corner/0000775000175000017510000000000015036121435015452 5ustar nileshnileshMaude-Maude3.5.1/tests/Corner/operatorNames.maude0000664000175000017510000000335615036121435021315 0ustar nileshnilesh*** *** Check that strange operator names print correctly in awkward places. *** fth T is sort Elt . op ({_}:{_}) : Elt Elt -> Elt . op {_}to{_} : Elt Elt -> Elt . op two to : -> Elt . op ([:]) : -> Elt . endfth fmod M is sort Elt . op term{_,_} : Elt Elt -> Elt . op {_}.{_} : Elt Elt -> Elt . op term{} : -> Elt . op }.{ : -> Elt . endfm view V from T to M is op ({_}:{_}) to (term{_,_}) . op ({_}to{_}) to ({_}.{_}) . op (two to) to (term{}) . op ([:]) to (}.{) . endv fth T2 is inc T * (op ({_}:{_}) to (f[_,_]), op ({_}to{_}) to (_,_), op (two to) to (][), op ([:]) to (]i[)) . endfth show mod T . show desugared T . show mod M . show desugared M . show view V . show processed view V . show mod T2 . show desugared T2 . show modules . show views . fth T is sort Elt . op [_,_] : Elt Elt -> Elt . endfth view V{X :: TRIV} from T * (op [_,_] to ({_,_})) to LIST{X} is sort Elt to List{X} . op {_,_} to append . endv show view V . show processed view V . fmod OP-HOOK-TEST is protecting BOOL . sorts Zero NzNat Nat . subsort Zero NzNat < Nat . op 0 : -> Zero [ctor] . op : : Nat -> NzNat [ctor iter special (id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 special (id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (: : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [ditto] . endfm show mod . show desugared . fmod OP-HOOK-TEST2 is inc NAT * (op s_ to :) . endfm show all . omod FOO is sorts Foo Bar . ops f ([_]) : Foo -> Foo . msgs m `[_`] : Bar -> Msg . endom show mod . fmod FOO is sort Foo . ops ([_]) (:) : Foo -> Foo . endfm show mod . Maude-Maude3.5.1/tests/Corner/operatorNames.expected0000664000175000017510000003555215036121435022026 0ustar nileshnileshfth T is sort Elt . op ({_}:{_}) : Elt Elt -> Elt . op {_}to{_} : Elt Elt -> Elt . op two to : -> Elt . op ([:]) : -> Elt . endfth fth T is sort Elt . op ({_}:{_}) : Elt Elt -> Elt [prec 0 gather (& &)] . op {_}to{_} : Elt Elt -> Elt [prec 0 gather (& &)] . op two to : -> Elt . op ([:]) : -> Elt . endfth fmod M is sort Elt . op term{_,_} : Elt Elt -> Elt . op {_}.{_} : Elt Elt -> Elt . op term{} : -> Elt . op }.{ : -> Elt . endfm fmod M is including BOOL . sort Elt . op term{_,_} : Elt Elt -> Elt [prec 0 gather (& &)] . op {_}.{_} : Elt Elt -> Elt [prec 0 gather (& &)] . op term{} : -> Elt . op }.{ : -> Elt . endfm view V from T to M is op ({_}:{_}) to (term{_,_}) . op ({_}to{_}) to ({_}.{_}) . op (two to) to (term{}) . op ([:]) to (}.{) . endv view V from T to M is op ({_}:{_}) to (term{_,_}) . op ({_}to{_}) to ({_}.{_}) . op (two to) to (term{}) . op ([:]) to (}.{) . endv fth T2 is including T * (op ({_}:{_}) to (f[_,_]), op ({_}to{_}) to (_,_), op (two to) to (][), op ([:]) to (]i[)) . endfth fth T2 is including T * (op ({_}:{_}) to (f[_,_]), op ({_}to{_}) to (_,_), op (two to) to (][), op ([:]) to (]i[)) . endfth fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod M fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fth T fmod META-VIEW fmod META-LEVEL fth T2 fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) fth T * (op ({_}:{_}) to (f[_,_]), op ({_}to{_}) to (_,_), op (two to) to (][), op ([:]) to (]i[)) view Bool view Nat view Int view Rat view Float view String view Qid view TRIV view STRICT-WEAK-ORDER view STRICT-TOTAL-ORDER view Nat< view Int< view Rat< view Float< view String< view TOTAL-PREORDER view TOTAL-ORDER view Nat<= view Int<= view Rat<= view Float<= view String<= view DEFAULT view Nat0 view Int0 view Rat0 view Float0 view String0 view Qid0 view List view WeaklySortableList view SortableList view WeaklySortableList' view SortableList' view Set view List* view Set* view Map view Array view V Advisory: redefining module T. Advisory: redefining view V. view V{X :: TRIV} from T * (op [_,_] to ({_,_})) to LIST{X} is sort Elt to List{X} . op {_,_} to append . endv view V{X :: TRIV} from T * (op [_,_] to ({_,_})) to LIST{X} is sort Elt to List{X} . op {_,_} to append . endv fmod OP-HOOK-TEST is protecting BOOL . sorts Zero NzNat Nat . subsorts Zero NzNat < Nat . op 0 : -> Zero [ctor] . op (:) : Nat -> NzNat [ctor iter special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (: : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [ditto] . endfm fmod OP-HOOK-TEST is including BOOL . protecting BOOL . sorts Zero NzNat Nat . subsorts Zero NzNat < Nat . op 0 : -> Zero [ctor] . op (:) : Nat -> NzNat [ctor iter special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (: : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (: : Nat ~> NzNat))] . endfm fmod OP-HOOK-TEST2 is sorts Bool Zero NzNat Nat . subsorts Zero NzNat < Nat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op (:) : Nat -> NzNat [ctor iter special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (: : Nat ~> NzNat))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (: : Nat ~> NzNat))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (: : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (: : Nat ~> NzNat))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (: : Nat ~> NzNat))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (: : Nat ~> NzNat))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (: : Nat ~> NzNat))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (: : Nat ~> NzNat))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (: : Nat ~> NzNat))] . op modExp : [Nat] [Nat] [Nat] -> [Nat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (: : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (: : Nat ~> NzNat))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (: : Nat ~> NzNat))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (: : Nat ~> NzNat))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (: : Nat ~> NzNat))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (: : Nat ~> NzNat))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (: : Nat ~> NzNat))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (: : Nat ~> NzNat))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (: : Nat ~> NzNat))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (: : Nat ~> NzNat))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (: : Nat ~> NzNat))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (: : Nat ~> NzNat))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (: : Nat ~> NzNat))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (: : Nat ~> NzNat))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (: : Nat ~> NzNat))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (: : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (: : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (: : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (: : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (: : Nat ~> NzNat) term-hook trueTerm (true) term-hook falseTerm (false))] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm omod FOO is sorts Foo Bar . ops f ([_]) : Foo -> Foo . msgs m ([_]) : Bar -> Msg . endom Advisory: redefining module FOO. fmod FOO is sort Foo . ops ([_]) (:) : Foo -> Foo . endfm Bye. Maude-Maude3.5.1/tests/Corner/operatorNames0000775000175000017510000000034515036121435020221 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/operatorNames.maude -no-banner \ > operatorNames.out 2>&1 diff $srcdir/operatorNames.expected operatorNames.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Corner/fakeParameterSort.maude0000664000175000017510000000033215036121435022104 0ustar nileshnilesh*** *** Test that fake parameter sort isn't treated like one. *** fth T is sort Elt . endfth fmod FOO{X :: T} is sort X$Foo . subsort X$Foo < X$Elt . endfm fmod BAR{Y :: T} is inc FOO{Y} . endfm show all . Maude-Maude3.5.1/tests/Corner/fakeParameterSort.expected0000664000175000017510000000272015036121435022615 0ustar nileshnileshfmod BAR{Y :: T} is sorts Y$Elt Bool X$Foo . subsort X$Foo < Y$Elt . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endfm Bye. Maude-Maude3.5.1/tests/Corner/fakeParameterSort0000775000175000017510000000036515036121435021023 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/fakeParameterSort.maude -no-banner \ > fakeParameterSort.out 2>&1 diff $srcdir/fakeParameterSort.expected fakeParameterSort.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Corner/fakeParameterConstant.maude0000664000175000017510000000040015036121435022742 0ustar nileshnilesh*** *** Test that fake parameter constant isn't treated like one. *** fth T is sort Elt . op c : -> Elt [pconst] . endfth fmod FOO{X :: T} is op X$d : -> X$Elt [pconst] . eq X$c = X$d . endfm fmod BAR{Y :: T} is inc FOO{Y} . endfm show all . Maude-Maude3.5.1/tests/Corner/fakeParameterConstant.expected0000664000175000017510000000277715036121435023473 0ustar nileshnileshfmod BAR{Y :: T} is sorts Y$Elt Bool . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op Y$c : -> Y$Elt [pconst] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op X$d : -> Y$Elt [pconst] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq Y$c = X$d . endfm Bye. Maude-Maude3.5.1/tests/Corner/fakeParameterConstant0000775000175000017510000000040515036121435021660 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/fakeParameterConstant.maude -no-banner \ > fakeParameterConstant.out 2>&1 diff $srcdir/fakeParameterConstant.expected fakeParameterConstant.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Corner/badView.maude0000664000175000017510000000654115036121435020056 0ustar nileshnilesh*** *** Check what happens with bad use of object-oriented views. *** set include BOOL off . *** *** Bad class mappings *** th T is sort C . endth omod M is class D . endom *** bad from theory for class mapping view V from T to M is class C to D . endv oth T is sort C . endoth mod M is sort D . endm *** bad to module for class mapping view V from T to M is class C to D . endv oth T is sort C . endoth th T2 is sort D . endth *** bad to theory for class mapping view V from T to T2 is class C to D . endv oth T is sort C . endoth omod M is class D . endom *** class mapping from sort view V from T to M is class C to D . endv oth T is class C . endoth omod M is sort D . endom *** class mapping to sort view V from T to M is class C to D . endv *** *** Bad attr mappings *** th T is sorts Foo Attribute . op a`:_ : Foo -> Attribute . endth omod M is sort Bar . class D | b : Bar . endom *** bad from theory for attr mapping view V from T to M is sort Foo to Bar . attr a to b . endv oth T is sorts Foo . class C | a : Foo . endoth mod M is sorts Bar Attribute . op b`:_ : Bar -> Attribute . endm *** bad to module for attr mapping view V from T to M is sort Foo to Bar . attr a to b . endv oth T is sort Foo . op a`:_ : Foo -> Attribute . endoth omod M is sort Bar . class C | b : Bar . endom *** a`:_ looks enough like an attribute view V from T to M is sort Foo to Bar . attr a to b . endv omod FOO{X :: T} is eq a : X:X$Foo = a : X:X$Foo . endom omod TEST is inc FOO{V} . endom show mod . show desugared . show all . *** *** Bad msg mappings *** oth T is sort Foo . op m : Oid Foo -> Msg . endoth omod FOO{X :: T} is class F . rl m(O:Oid, D:X$Foo) < O:Oid : F | > => < O:Oid : F | > . endom omod M is sort Bar Baz . op translate : Baz -> Bar . msg m' : Oid Bar -> Msg . endom *** m does not have the message attribute view V from T to M is sort Foo to Baz . var M : Oid . var X : Foo . msg m(M, X) to term m'(M, translate(X)) . endv show view . show processed view . omod BAR is inc FOO{V} . endom show mod . show desugared . show all . show modules . oth T is sort Foo . msg m : Oid Foo -> Msg . endoth omod M is sort Bar Baz . op translate : Baz -> Bar . op m' : Oid Bar -> Msg . endom *** m' does not have the message attribute view V from T to M is sort Foo to Baz . var M : Oid . var X : Foo . msg m(M, X) to term m'(M, translate(X)) . endv show view . show processed view . omod BAR is inc FOO{V} . endom show mod . show desugared . show all . show modules . oth T is sort Foo . op m : Oid Foo -> Msg . endoth omod M is sort Bar Baz . op translate : Baz -> Bar . op m' : Oid Bar -> Msg . endom *** neither m nor m' have the message attribute view V from T to M is sort Foo to Baz . var M : Oid . var X : Foo . msg m(M, X) to term m'(M, translate(X)) . endv show view . show processed view . omod BAR is inc FOO{V} . endom show mod . show desugared . show all . show modules . oth T is sort Foo . op m : Oid Foo -> Msg . endoth omod M is sort Bar . op m' : Oid Bar -> Msg . endom *** neither m nor m' have the message attribute view V from T to M is sort Foo to Bar . msg m to m' . endv show view . show processed view . omod BAR is inc FOO{V} . endom show mod . show desugared . show all . show modules . Maude-Maude3.5.1/tests/Corner/badView.expected0000664000175000017510000010220515036121435020556 0ustar nileshnileshWarning: , line 11 (th T): unable to find a class id sort ( usually Cid) in T. Warning: , line 21 (view V): class mapping from theory T which does not appear to have been generated from an oth. Advisory: redefining module T. Advisory: redefining module M. Advisory: redefining view V. Warning: , line 29 (mod M): unable to find a class id sort ( usually Cid) in M. Warning: , line 35 (view V): class mapping to module M which does not appear to have been generated from an omod. Advisory: redefining module T. Advisory: redefining view V. Warning: , line 43 (th T2): unable to find a class id sort ( usually Cid) in T2. Warning: , line 49 (view V): class mapping to theory T2 which does not appear to have been generated from an oth. Advisory: redefining module T. Advisory: redefining module M. Advisory: redefining view V. Warning: , line 63 (view V): class mapping from C maps from a sort in T that is not a subsort of Cid. Advisory: redefining module T. Advisory: redefining module M. Advisory: redefining view V. Warning: , line 77 (view V): class mapping to D maps to a sort in M that is not a subsort of Cid. Advisory: redefining module T. Advisory: redefining module M. Advisory: redefining view V. Warning: , line 85 (th T): unable to find an attribute sort ( usually Attribute) in T. Warning: , line 96 (view V): attr mapping from theory T which does not appear to have been generated from an oth. Advisory: redefining module T. Advisory: redefining module M. Advisory: redefining view V. Warning: , line 107 (mod M): unable to find an attribute sort ( usually Attribute) in M. Warning: , line 113 (view V): attr mapping to module M which does not appear to have been generated from an omod. Advisory: redefining module T. Advisory: redefining module M. Advisory: redefining view V. omod TEST is including FOO{V} . endom mod TEST is including CONFIGURATION . including FOO{V} . endm mod TEST is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Bar C . subsort Attribute < AttributeSet . subsort C < Cid . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op C : -> C [ctor] . op b :_ : Bar -> Attribute [ctor prec 15 gather (&)] . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . eq b : X:Bar = b : X:Bar . endm Advisory: redefining module T. Advisory: redefining module FOO. Advisory: redefining module M. Advisory: redefining view V. Advisory: msg to term mapping for symbol m which does not have the msg attribute. view V from T to M is sort Foo to Baz . var M : Oid . var X : Foo . msg m (M, X) to term m' (M, translate (X)) . endv view V from T to M is sort Foo to Baz . var M : Oid . var X : Foo . op m(M, X) to term m'(M, translate(X)) . endv omod BAR is including FOO{V} . endom mod BAR is including CONFIGURATION . including FOO{V} . endm mod BAR is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Bar Baz F . subsort Attribute < AttributeSet . subsort F < Cid . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op translate : Baz -> Bar . op m' : Oid Bar -> Msg [ctor msg] . op F : -> F [ctor] . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . rl m'(O:Oid, translate(D:Baz)) < O:Oid : V:F | Atts:AttributeSet > => < O:Oid : V:F | Atts:AttributeSet > . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT omod M fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE oth T fmod META-VIEW fmod META-LEVEL th T2 fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO omod TEST omod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) th X :: T mod FOO{V} Advisory: redefining module T. Advisory: redefining module M. Advisory: redefining view V. Advisory: msg to term mapping for symbol m maps it to a term headed by m' which does not have the msg attribute. view V from T to M is sort Foo to Baz . var M : Oid . var X : Foo . msg m (M, X) to term m' (M, translate (X)) . endv view V from T to M is sort Foo to Baz . var M : Oid . var X : Foo . op m(M, X) to term m'(M, translate(X)) . endv Advisory: redefining module BAR. Advisory: reparsing module FOO due to changes in imported modules. omod BAR is including FOO{V} . endom mod BAR is including CONFIGURATION . including FOO{V} . endm mod BAR is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Bar Baz F . subsort Attribute < AttributeSet . subsort F < Cid . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op translate : Baz -> Bar . op m' : Oid Bar -> Msg . op F : -> F [ctor] . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . rl m'(O:Oid, translate(D:Baz)) < O:Oid : V:F | Atts:AttributeSet > => < O:Oid : V:F | Atts:AttributeSet > . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT omod M fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE oth T fmod META-VIEW fmod META-LEVEL th T2 fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO omod TEST omod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) th X :: T mod FOO{V} Advisory: redefining module T. Advisory: redefining module M. Advisory: redefining view V. Advisory: msg to term mapping for symbol m which does not have the msg attribute. Advisory: msg to term mapping for symbol m maps it to a term headed by m' which does not have the msg attribute. view V from T to M is sort Foo to Baz . var M : Oid . var X : Foo . msg m (M, X) to term m' (M, translate (X)) . endv view V from T to M is sort Foo to Baz . var M : Oid . var X : Foo . op m(M, X) to term m'(M, translate(X)) . endv Advisory: redefining module BAR. Advisory: reparsing module FOO due to changes in imported modules. omod BAR is including FOO{V} . endom mod BAR is including CONFIGURATION . including FOO{V} . endm mod BAR is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Bar Baz F . subsort Attribute < AttributeSet . subsort F < Cid . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op translate : Baz -> Bar . op m' : Oid Bar -> Msg . op F : -> F [ctor] . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . rl m'(O:Oid, translate(D:Baz)) < O:Oid : V:F | Atts:AttributeSet > => < O:Oid : V:F | Atts:AttributeSet > . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT omod M fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE oth T fmod META-VIEW fmod META-LEVEL th T2 fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO omod TEST omod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) th X :: T mod FOO{V} Advisory: redefining module T. Advisory: redefining module M. Advisory: redefining view V. Advisory: , line 261 (view V): theory symbol m is mapped by a msg mapping but does not have the msg attribute. Advisory: , line 261 (view V): theory symbol m is mapped to m' by a msg mapping, but the latter symbol does not have the msg attribute. view V from T to M is sort Foo to Bar . msg m to m' . endv view V from T to M is sort Foo to Bar . op m to m' . endv Advisory: redefining module BAR. Advisory: reparsing module FOO due to changes in imported modules. omod BAR is including FOO{V} . endom mod BAR is including CONFIGURATION . including FOO{V} . endm mod BAR is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Bar F . subsort Attribute < AttributeSet . subsort F < Cid . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op m' : Oid Bar -> Msg . op F : -> F [ctor] . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . rl m'(O:Oid, D:Bar) < O:Oid : V:F | Atts:AttributeSet > => < O:Oid : V:F | Atts:AttributeSet > . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT omod M fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE oth T fmod META-VIEW fmod META-LEVEL th T2 fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO omod TEST omod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) th X :: T mod FOO{V} Bye. Maude-Maude3.5.1/tests/Corner/badView0000775000175000017510000000031515036121435016760 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/badView.maude -no-banner \ > badView.out 2>&1 diff $srcdir/badView.expected badView.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Corner/badStatement.maude0000664000175000017510000000733415036121435021111 0ustar nileshnilesh*** *** Check what happens with bad use of objects in statements under object completion in omods. *** set verbose on . set include BOOL off . *** bad use of class arguments omod FOO is sort Foo . class C . class C2 . msg m : Foo -> Msg . op junk : -> Cid . *** OK rl m(F:Foo) < O:Oid : C | > => < O:Oid : C | > . rl m(F:Foo) < O:Oid : V:C | > => < O:Oid : V:C | > . *** bad rl m(F:Foo) < O1:Oid : junk | > => < O1:Oid : junk | > . rl m(F:Foo) < O2:Oid : C | > => < O2:Oid : junk | > . rl m(F:Foo) < O3:Oid : junk | > => < O3:Oid : C | > . rl m(F:Foo) < O4:Oid : V:C | > => < O4:Oid : junk | > . rl m(F:Foo) < O5:Oid : junk | > => < O5:Oid : V:C | > . rl m(F:Foo) < O6:Oid : C | > => < O6:Oid : V:C | > . rl m(F:Foo) < O7:Oid : V:C | > => < O7:Oid : C | > . rl m(F:Foo) < O8:Oid : C | > => < O8:Oid : C2 | > . rl m(F:Foo) < O9:Oid : V:C | > => < O9:Oid : V:C2 | > . endom show desugared . *** bad double use of class variable omod BAR is sort Foo . class C . msg m : Cid -> Msg . *** OK rl m(F:Cid) < O:Oid : V:C | > => < O:Oid : V:C | > . *** bad rl m(V:C) < O:Oid : V:C | > => < O:Oid : V:C | > . endom show desugared . *** multiple objects with the same name omod BAR is sort Foo . class C . *** OK crl < O:Oid : C | > => < O:Oid : C | > if < O:Oid : C | > = < O:Oid : C | > . *** dubious but allowed rl < O:Oid : C | > => < O:Oid : C | > < O:Oid : C | > . *** bad rl < O:Oid : C | > < O:Oid : C | > => < O:Oid : C | > . endom show desugared . *** objects in condition fragment patterns omod BAR is sort Foo . class C . *** bad crl < O:Oid : C | > => < O:Oid : C | > if < O:Oid : C | > := < O:Oid : C | > . crl < O:Oid : C | > => < O:Oid : C | > if < O:Oid : C | > => < O:Oid : C | > . endom show desugared . *** bad attribute sets omod BAZ is sort Foo . class C | a : Foo . msg m : AttributeSet -> Msg . op junk : -> Attribute . op k : -> Foo . var X : Foo . var B : Attribute . *** OK rl < O:Oid : C | a : X > => < O:Oid : C | a : X > . rl < O:Oid : C | > => < O:Oid : C | a : k > . rl < O:Oid : C | a : X > => < O:Oid : C | > . rl < O:Oid : C | a : X, A:AttributeSet > => < O:Oid : C | a : X, A:AttributeSet > . rl < O:Oid : C | A:AttributeSet > => < O:Oid : C | a : k, A:AttributeSet > . rl < O:Oid : C | a : X, A:AttributeSet > => < O:Oid : C | A:AttributeSet > . *** bad rl < O:Oid : C | a : X, junk > => < O:Oid : C | a : X, junk > . rl < O:Oid : C | a : X, junk > => < O:Oid : C | a : X > . rl < O:Oid : C | a : X > => < O:Oid : C | a : X, junk > . rl < O:Oid : C | a : X, B > => < O:Oid : C | a : X, B > . rl < O:Oid : C | a : X, B > => < O:Oid : C | a : X > . rl < O:Oid : C | a : X > => < O:Oid : C | a : X, B > . rl < O:Oid : C | a : X, A:AttributeSet > => < O:Oid : C | a : X > . rl < O:Oid : C | a : X > => < O:Oid : C | a : X, A:AttributeSet > . rl m(A:AttributeSet) < O:Oid : C | a : X, A:AttributeSet > => < O:Oid : C | a : X, A:AttributeSet > . rl < O:Oid : C | a : X, a : X > => < O:Oid : C | a : X > . rl < O:Oid : C | a : X > => < O:Oid : C | a : X, a : X > . rl < O:Oid : C | a : X, a : X > => < O:Oid : C | a : X, a : X > . rl < O:Oid : C | a : X, A:AttributeSet, A2:AttributeSet > => < O:Oid : C | a : X, A:AttributeSet, A2:AttributeSet > . rl < O:Oid : C | a : X, A:AttributeSet > => < O:Oid : C | a : X, A2:AttributeSet > . endom show desugared . *** wrong attribute omod QUUX is sort Foo . class C | a : Foo . class D | b : Foo . class E | c : Foo . subclass E < C . var X : Foo . *** OK rl < O:Oid : C | a : X > => < O:Oid : C | a : X > . rl < O:Oid : E | a : X > => < O:Oid : E | a : X > . *** bad but transform after Advisory rl < O:Oid : C | b : X > => < O:Oid : C | b : X > . endom show desugared . Maude-Maude3.5.1/tests/Corner/badStatement.expected0000664000175000017510000004733515036121435021624 0ustar nileshnileshConsidering object completion on: rl m(F:Foo) < O:Oid : C | none > => < O:Oid : C | none > . Transformed rule: rl m(F:Foo) < O:Oid : V:C | Atts:AttributeSet > => < O:Oid : V:C | Atts:AttributeSet > . Considering object completion on: rl m(F:Foo) < O:Oid : V:C | none > => < O:Oid : V:C | none > . Transformed rule: rl m(F:Foo) < O:Oid : V:C | Atts:AttributeSet > => < O:Oid : V:C | Atts:AttributeSet > . Advisory: , line 23 (omod FOO): bad class argument junk in left-hand side object < O1:Oid : junk | none > disables object completion. Advisory: , line 23 (omod FOO): transformation not performed for: rl m(F:Foo) < O1:Oid : junk | none > => < O1:Oid : junk | none > . Advisory: , line 24 (omod FOO): class argument junk in object instance < O2:Oid : junk | none > differing from class argument C in left-hand side object instance < O2:Oid : C | none > disables object completion. Advisory: , line 24 (omod FOO): transformation not performed for: rl m(F:Foo) < O2:Oid : C | none > => < O2:Oid : junk | none > . Advisory: , line 25 (omod FOO): bad class argument junk in left-hand side object < O3:Oid : junk | none > disables object completion. Advisory: , line 25 (omod FOO): transformation not performed for: rl m(F:Foo) < O3:Oid : junk | none > => < O3:Oid : C | none > . Advisory: , line 27 (omod FOO): class argument junk in object instance < O4:Oid : junk | none > differing from class argument V:C in left-hand side object instance < O4:Oid : V:C | none > disables object completion. Advisory: , line 27 (omod FOO): transformation not performed for: rl m(F:Foo) < O4:Oid : V:C | none > => < O4:Oid : junk | none > . Advisory: , line 28 (omod FOO): bad class argument junk in left-hand side object < O5:Oid : junk | none > disables object completion. Advisory: , line 28 (omod FOO): transformation not performed for: rl m(F:Foo) < O5:Oid : junk | none > => < O5:Oid : V:C | none > . Warning: , line 28 (omod FOO): variable V:C is used before it is bound in rule: rl m(F:Foo) < O5:Oid : junk | none > => < O5:Oid : V:C | none > . Advisory: , line 30 (omod FOO): class argument V:C in object instance < O6:Oid : V:C | none > differing from class argument C in left-hand side object instance < O6:Oid : C | none > disables object completion. Advisory: , line 30 (omod FOO): transformation not performed for: rl m(F:Foo) < O6:Oid : C | none > => < O6:Oid : V:C | none > . Warning: , line 30 (omod FOO): variable V:C is used before it is bound in rule: rl m(F:Foo) < O6:Oid : C | none > => < O6:Oid : V:C | none > . Advisory: , line 31 (omod FOO): class argument C in object instance < O7:Oid : C | none > differing from class argument V:C in left-hand side object instance < O7:Oid : V:C | none > disables object completion. Advisory: , line 31 (omod FOO): transformation not performed for: rl m(F:Foo) < O7:Oid : V:C | none > => < O7:Oid : C | none > . Advisory: , line 33 (omod FOO): class argument C2 in object instance < O8:Oid : C2 | none > differing from class argument C in left-hand side object instance < O8:Oid : C | none > disables object completion. Advisory: , line 33 (omod FOO): transformation not performed for: rl m(F:Foo) < O8:Oid : C | none > => < O8:Oid : C2 | none > . Advisory: , line 34 (omod FOO): class argument V:C2 in object instance < O9:Oid : V:C2 | none > differing from class argument V:C in left-hand side object instance < O9:Oid : V:C | none > disables object completion. Advisory: , line 34 (omod FOO): transformation not performed for: rl m(F:Foo) < O9:Oid : V:C | none > => < O9:Oid : V:C2 | none > . Warning: , line 34 (omod FOO): variable V:C2 is used before it is bound in rule: rl m(F:Foo) < O9:Oid : V:C | none > => < O9:Oid : V:C2 | none > . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. mod FOO is including CONFIGURATION . sorts Foo C C2 . subsorts C C2 < Cid . op m : Foo -> Msg [ctor msg] . op junk : -> Cid . op C : -> C [ctor] . op C2 : -> C2 [ctor] . rl m(F:Foo) < O:Oid : V:C | Atts:AttributeSet > => < O:Oid : V:C | Atts:AttributeSet > . rl m(F:Foo) < O:Oid : V:C | Atts:AttributeSet > => < O:Oid : V:C | Atts:AttributeSet > . rl m(F:Foo) < O1:Oid : junk | none > => < O1:Oid : junk | none > . rl m(F:Foo) < O2:Oid : C | none > => < O2:Oid : junk | none > . rl m(F:Foo) < O3:Oid : junk | none > => < O3:Oid : C | none > . rl m(F:Foo) < O4:Oid : V:C | none > => < O4:Oid : junk | none > . rl m(F:Foo) < O5:Oid : junk | none > => < O5:Oid : V:C | none > [nonexec] . rl m(F:Foo) < O6:Oid : C | none > => < O6:Oid : V:C | none > [nonexec] . rl m(F:Foo) < O7:Oid : V:C | none > => < O7:Oid : C | none > . rl m(F:Foo) < O8:Oid : C | none > => < O8:Oid : C2 | none > . rl m(F:Foo) < O9:Oid : V:C | none > => < O9:Oid : V:C2 | none > [nonexec] . endm Considering object completion on: rl m(F:Cid) < O:Oid : V:C | none > => < O:Oid : V:C | none > . Transformed rule: rl m(F:Cid) < O:Oid : V:C | Atts:AttributeSet > => < O:Oid : V:C | Atts:AttributeSet > . Advisory: , line 50 (omod BAR): using class variable V:C from object instance < O:Oid : V:C | none > for other purposes disables object completion. Advisory: , line 50 (omod BAR): transformation not performed for: rl m(V:C) < O:Oid : V:C | none > => < O:Oid : V:C | none > . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. mod BAR is including CONFIGURATION . sorts Foo C . subsort C < Cid . op m : Cid -> Msg [ctor msg] . op C : -> C [ctor] . rl m(F:Cid) < O:Oid : V:C | Atts:AttributeSet > => < O:Oid : V:C | Atts:AttributeSet > . rl m(V:C) < O:Oid : V:C | none > => < O:Oid : V:C | none > . endm Advisory: redefining module BAR. Considering object completion on: crl < O:Oid : C | none > => < O:Oid : C | none > if < O:Oid : C | none > = < O:Oid : C | none > . Transformed rule: crl < O:Oid : V:C | Atts:AttributeSet > => < O:Oid : V:C | Atts:AttributeSet > if < O:Oid : V:C | Atts:AttributeSet > = < O:Oid : V:C | Atts:AttributeSet > . Considering object completion on: rl < O:Oid : C | none > => < O:Oid : C | none > < O:Oid : C | none > . Transformed rule: rl < O:Oid : V:C | Atts:AttributeSet > => < O:Oid : V:C | Atts:AttributeSet > < O:Oid : V:C | Atts:AttributeSet > . Advisory: , line 68 (omod BAR): objects < O:Oid : C | none > and < O:Oid : C | none > occurring in the left-hand side of a statement have same name which disables object completion. Advisory: , line 68 (omod BAR): transformation not performed for: rl < O:Oid : C | none > < O:Oid : C | none > => < O:Oid : C | none > . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. mod BAR is including CONFIGURATION . sorts Foo C . subsort C < Cid . op C : -> C [ctor] . crl < O:Oid : V:C | Atts:AttributeSet > => < O:Oid : V:C | Atts:AttributeSet > if < O:Oid : V:C | Atts:AttributeSet > = < O:Oid : V:C | Atts:AttributeSet > . rl < O:Oid : V:C | Atts:AttributeSet > => < O:Oid : V:C | Atts:AttributeSet > < O:Oid : V:C | Atts:AttributeSet > . rl < O:Oid : C | none > < O:Oid : C | none > => < O:Oid : C | none > . endm Advisory: redefining module BAR. Advisory: , line 80 (omod BAR): object < O:Oid : C | none > appearing in condition fragment pattern disables object completion. Advisory: , line 80 (omod BAR): transformation not performed for: crl < O:Oid : C | none > => < O:Oid : C | none > if < O:Oid : C | none > := < O:Oid : C | none > . Advisory: , line 80 (omod BAR): all the variables in the left-hand side of assignment condition fragment < O:Oid : C | none > := < O:Oid : C | none > are bound before the matching takes place. Advisory: , line 81 (omod BAR): object < O:Oid : C | none > appearing in condition fragment pattern disables object completion. Advisory: , line 81 (omod BAR): transformation not performed for: crl < O:Oid : C | none > => < O:Oid : C | none > if < O:Oid : C | none > => < O:Oid : C | none > . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. mod BAR is including CONFIGURATION . sorts Foo C . subsort C < Cid . op C : -> C [ctor] . crl < O:Oid : C | none > => < O:Oid : C | none > if < O:Oid : C | none > := < O:Oid : C | none > . crl < O:Oid : C | none > => < O:Oid : C | none > if < O:Oid : C | none > => < O:Oid : C | none > . endm Considering object completion on: rl < O:Oid : C | a : X > => < O:Oid : C | a : X > . Transformed rule: rl < O:Oid : V:C | a : X, Atts:AttributeSet > => < O:Oid : V:C | a : X, Atts:AttributeSet > . Considering object completion on: rl < O:Oid : C | none > => < O:Oid : C | a : k > . Transformed rule: rl < O:Oid : V:C | a : A:[Foo], Atts:AttributeSet > => < O:Oid : V:C | a : k, Atts:AttributeSet > . Considering object completion on: rl < O:Oid : C | a : X > => < O:Oid : C | none > . Transformed rule: rl < O:Oid : V:C | a : X, Atts:AttributeSet > => < O:Oid : V:C | a : X, Atts:AttributeSet > . Considering object completion on: rl < O:Oid : C | a : X, A:AttributeSet > => < O:Oid : C | a : X, A:AttributeSet > . Transformed rule: rl < O:Oid : V:C | a : X, A:AttributeSet > => < O:Oid : V:C | a : X, A:AttributeSet > . Considering object completion on: rl < O:Oid : C | A:AttributeSet > => < O:Oid : C | a : k, A:AttributeSet > . Transformed rule: rl < O:Oid : V:C | a : A2:[Foo], A:AttributeSet > => < O:Oid : V:C | a : k, A:AttributeSet > . Considering object completion on: rl < O:Oid : C | a : X, A:AttributeSet > => < O:Oid : C | A:AttributeSet > . Transformed rule: rl < O:Oid : V:C | a : X, A:AttributeSet > => < O:Oid : V:C | a : X, A:AttributeSet > . Advisory: , line 107 (omod BAZ): unrecognized term junk in attribute set disables object completion. Advisory: , line 107 (omod BAZ): unrecognized term junk in attribute set disables object completion. Advisory: , line 107 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X, junk > => < O:Oid : C | a : X, junk > . Advisory: , line 108 (omod BAZ): unrecognized term junk in attribute set disables object completion. Advisory: , line 108 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X, junk > => < O:Oid : C | a : X > . Advisory: , line 109 (omod BAZ): unrecognized term junk in attribute set disables object completion. Advisory: , line 109 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X > => < O:Oid : C | a : X, junk > . Advisory: , line 111 (omod BAZ): variable B of sort other than AttributeSet in attribute set disables object completion. Advisory: , line 111 (omod BAZ): variable B of sort other than AttributeSet in attribute set disables object completion. Advisory: , line 111 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X, B > => < O:Oid : C | a : X, B > . Advisory: , line 112 (omod BAZ): variable B of sort other than AttributeSet in attribute set disables object completion. Advisory: , line 112 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X, B > => < O:Oid : C | a : X > . Advisory: , line 113 (omod BAZ): variable B of sort other than AttributeSet in attribute set disables object completion. Advisory: , line 113 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X > => < O:Oid : C | a : X, B > . Warning: , line 113 (omod BAZ): variable B is used before it is bound in rule: rl < O:Oid : C | a : X > => < O:Oid : C | B, a : X > . Advisory: , line 115 (omod BAZ): left-hand side object instance < O:Oid : C | a : X, A:AttributeSet > had a variable A:AttributeSet in its attribute set while object instance < O:Oid : C | a : X > does not. This disables object completion. Advisory: , line 115 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X, A:AttributeSet > => < O:Oid : C | a : X > . Advisory: , line 116 (omod BAZ): object instance < O:Oid : C | a : X, A:AttributeSet > has a variable A:AttributeSet in its attribute set, which does not appear in the left-hand side occurrence of this object, < O:Oid : C | a : X >. This disables object completion. Advisory: , line 116 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X > => < O:Oid : C | a : X, A:AttributeSet > . Warning: , line 116 (omod BAZ): variable A:AttributeSet is used before it is bound in rule: rl < O:Oid : C | a : X > => < O:Oid : C | A:AttributeSet, a : X > . Advisory: , line 117 (omod BAZ): using attribute set variable A:AttributeSet from object instance < O:Oid : C | a : X, A:AttributeSet > for other purposes disables object completion. Advisory: , line 117 (omod BAZ): transformation not performed for: rl m(A:AttributeSet) < O:Oid : C | a : X, A:AttributeSet > => < O:Oid : C | a : X, A:AttributeSet > . Advisory: , line 119 (omod BAZ): duplicate attribute arguments a : X and a : X disable object completion. Advisory: , line 119 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X, a : X > => < O:Oid : C | a : X > . Advisory: , line 120 (omod BAZ): duplicate attribute arguments a : X and a : X disable object completion. Advisory: , line 120 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X > => < O:Oid : C | a : X, a : X > . Advisory: , line 121 (omod BAZ): duplicate attribute arguments a : X and a : X disable object completion. Advisory: , line 121 (omod BAZ): duplicate attribute arguments a : X and a : X disable object completion. Advisory: , line 121 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X, a : X > => < O:Oid : C | a : X, a : X > . Advisory: , line 123 (omod BAZ): multiple variables A:AttributeSet and A2:AttributeSet in attribute set disables object completion. Advisory: , line 123 (omod BAZ): multiple variables A:AttributeSet and A2:AttributeSet in attribute set disables object completion. Advisory: , line 123 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X, A:AttributeSet, A2:AttributeSet > => < O:Oid : C | a : X, A:AttributeSet, A2:AttributeSet > . Advisory: , line 124 (omod BAZ): object instance < O:Oid : C | a : X, A2:AttributeSet > has a variable A2:AttributeSet in its attribute set, while left-hand side object instance < O:Oid : C | a : X, A:AttributeSet > has a variable A:AttributeSet. This disables object completion. Advisory: , line 124 (omod BAZ): transformation not performed for: rl < O:Oid : C | a : X, A:AttributeSet > => < O:Oid : C | a : X, A2:AttributeSet > . Warning: , line 124 (omod BAZ): variable A2:AttributeSet is used before it is bound in rule: rl < O:Oid : C | A:AttributeSet, a : X > => < O:Oid : C | A2:AttributeSet, a : X > . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. mod BAZ is including CONFIGURATION . sorts Foo C . subsort C < Cid . op m : AttributeSet -> Msg [ctor msg] . op junk : -> Attribute . op k : -> Foo . op C : -> C [ctor] . op a :_ : Foo -> Attribute [ctor prec 15 gather (&)] . var B : Attribute . var X : Foo . rl < O:Oid : V:C | Atts:AttributeSet, a : X > => < O:Oid : V:C | Atts:AttributeSet, a : X > . rl < O:Oid : V:C | Atts:AttributeSet, a : A:[Foo] > => < O:Oid : V:C | Atts:AttributeSet, a : k > . rl < O:Oid : V:C | Atts:AttributeSet, a : X > => < O:Oid : V:C | Atts:AttributeSet, a : X > . rl < O:Oid : V:C | A:AttributeSet, a : X > => < O:Oid : V:C | A:AttributeSet, a : X > . rl < O:Oid : V:C | A:AttributeSet, a : A2:[Foo] > => < O:Oid : V:C | A:AttributeSet, a : k > . rl < O:Oid : V:C | A:AttributeSet, a : X > => < O:Oid : V:C | A:AttributeSet, a : X > . rl < O:Oid : C | junk, a : X > => < O:Oid : C | junk, a : X > . rl < O:Oid : C | junk, a : X > => < O:Oid : C | a : X > . rl < O:Oid : C | a : X > => < O:Oid : C | junk, a : X > . rl < O:Oid : C | B, a : X > => < O:Oid : C | B, a : X > . rl < O:Oid : C | B, a : X > => < O:Oid : C | a : X > . rl < O:Oid : C | a : X > => < O:Oid : C | B, a : X > [nonexec] . rl < O:Oid : C | A:AttributeSet, a : X > => < O:Oid : C | a : X > . rl < O:Oid : C | a : X > => < O:Oid : C | A:AttributeSet, a : X > [nonexec] . rl m(A:AttributeSet) < O:Oid : C | A:AttributeSet, a : X > => < O:Oid : C | A:AttributeSet, a : X > . rl < O:Oid : C | a : X, a : X > => < O:Oid : C | a : X > . rl < O:Oid : C | a : X > => < O:Oid : C | a : X, a : X > . rl < O:Oid : C | a : X, a : X > => < O:Oid : C | a : X, a : X > . rl < O:Oid : C | A:AttributeSet, A2:AttributeSet, a : X > => < O:Oid : C | a : X, A:AttributeSet, A2:AttributeSet > . rl < O:Oid : C | A:AttributeSet, a : X > => < O:Oid : C | A2:AttributeSet, a : X > [nonexec] . endm Considering object completion on: rl < O:Oid : C | a : X > => < O:Oid : C | a : X > . Transformed rule: rl < O:Oid : V:C | a : X, Atts:AttributeSet > => < O:Oid : V:C | a : X, Atts:AttributeSet > . Considering object completion on: rl < O:Oid : E | a : X > => < O:Oid : E | a : X > . Transformed rule: rl < O:Oid : V:E | a : X, Atts:AttributeSet > => < O:Oid : V:E | a : X, Atts:AttributeSet > . Advisory: , line 145 (omod QUUX): object occurrence < O:Oid : C | b : X > contains an attribute b : [Foo] that was neither declared for nor inherited by class C. Advisory: , line 145 (omod QUUX): object occurrence < O:Oid : C | b : X > contains an attribute b : [Foo] that was neither declared for nor inherited by class C. Considering object completion on: rl < O:Oid : C | b : X > => < O:Oid : C | b : X > . Transformed rule: rl < O:Oid : V:C | b : X, Atts:AttributeSet > => < O:Oid : V:C | b : X, Atts:AttributeSet > . op _`,_ left-identity collapse from AttributeSet to Attribute is unequal. op __ left-identity collapse from Configuration to Object is unequal. mod QUUX is including CONFIGURATION . sorts Foo C D E . subsorts C D E < Cid . subsort E < C . op C : -> C [ctor] . op a :_ : Foo -> Attribute [ctor prec 15 gather (&)] . op D : -> D [ctor] . op b :_ : Foo -> Attribute [ctor prec 15 gather (&)] . op E : -> E [ctor] . op c :_ : Foo -> Attribute [ctor prec 15 gather (&)] . var X : Foo . rl < O:Oid : V:C | Atts:AttributeSet, a : X > => < O:Oid : V:C | Atts:AttributeSet, a : X > . rl < O:Oid : V:E | Atts:AttributeSet, a : X > => < O:Oid : V:E | Atts:AttributeSet, a : X > . rl < O:Oid : V:C | Atts:AttributeSet, b : X > => < O:Oid : V:C | Atts:AttributeSet, b : X > . endm Bye. Maude-Maude3.5.1/tests/Corner/badStatement0000775000175000017510000000034115036121435020011 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/badStatement.maude -no-banner \ > badStatement.out 2>&1 diff $srcdir/badStatement.expected badStatement.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Corner/badRenaming.maude0000664000175000017510000000460615036121435020704 0ustar nileshnilesh*** *** Check what happens with bad use of object-oriented renamings. *** set include BOOL off . *** good example omod FOO is sort Quux . class Foo | a : Quux . msg m : Oid Oid Quux -> Msg . endom mod BAR is inc FOO * (class Foo to Bar, attr a to b, msg m to m') . endm show mod . show desugared . show all . show modules . *** *** Bad class mappings *** *** sort has the wrong name mod FOO is sort Quux . endm mod BAR is inc FOO * (class Foo to Bar) . endm show mod . show desugared . show all . show modules . *** sort has the right name but no class constant mod FOO is sort Foo . endm mod BAR is inc FOO * (class Foo to Bar) . endm show mod . show desugared . show all . show modules . *** sort and class constant have the right name but no Cid sort mod FOO is sort Foo . op Foo : -> Foo . endm mod BAR is inc FOO * (class Foo to Bar) . endm show mod . show desugared . show all . show modules . *** sort has the right name and Cid sort but no class constant omod FOO is sort Foo . endom mod BAR is inc FOO * (class Foo to Bar) . endm show mod . show desugared . show all . show modules . *** sort and class constant have the right names, but sort is not a subsort of Cid omod FOO is sort Foo . op Foo : -> Foo . endom mod BAR is inc FOO * (class Foo to Bar) . endm show mod . show desugared . show all . show modules . *** *** Bad attr mappings *** *** no Attribute sort mod FOO is sorts Foo Bar . op a`:_ : Foo -> Bar . endm mod BAR is inc FOO * (attr a to b) . endm show mod . show desugared . show all . show modules . *** a`:_ doesn't have range in [Attribute] omod FOO is sorts Foo Bar . op a`:_ : Foo -> Bar . endom omod BAR is inc FOO * (attr a to b) . endom show mod . show desugared . show all . show modules . *** a`:_ looks enough like an attribute to be mappped omod FOO is sorts Foo Bar . op a`:_ : Foo -> Attribute . endom omod BAR is inc FOO * (attr a to b) . endom show mod . show desugared . show all . show modules . *** *** Bad msg mappings *** *** g lacks the msg attribute, for both generic and specific mappings omod FOO is msg f : Oid -> Msg . op g : Oid -> Msg . endom mod BAR is inc FOO * (msg f to f', msg g to g') . endm show mod . show desugared . show all . show modules . mod BAZ is inc FOO * (msg f : Oid -> Msg to f', msg g : Oid -> Msg to g') . endm show mod . show desugared . show all . show modules . Maude-Maude3.5.1/tests/Corner/badRenaming.expected0000664000175000017510000022343615036121435021416 0ustar nileshnileshmod BAR is including FOO * (class Foo to Bar, attr a to b, msg m to m') . endm mod BAR is including FOO * (sort Foo to Bar, op Foo : -> [Cid,Foo] to Bar, op a :_ : [ Quux] -> [Attribute,AttributeSet] to b :_, op m to m') . endm mod BAR is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Quux Bar . subsort Attribute < AttributeSet . subsort Bar < Cid . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op m' : Oid Oid Quux -> Msg [ctor msg] . op Bar : -> Bar [ctor] . op b :_ : Quux -> Attribute [ctor prec 15 gather (E)] . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO mod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) mod FOO * (sort Foo to Bar, op Foo : -> [Cid,Foo] to Bar, op a :_ : [Quux] -> [ Attribute,AttributeSet] to b :_, op m to m') Advisory: redefining module FOO. Advisory: redefining module BAR. mod BAR is including FOO * (class Foo to Bar) . endm mod BAR is including FOO . endm mod BAR is sort Quux . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION mod FOO mod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) Advisory: redefining module FOO. Advisory: redefining module BAR. Warning: , line 44 (mod FOO): unable to find a class id sort ( usually Cid) in FOO. Advisory: , line 49 (mod BAR): missing class constant for renamed class Foo. mod BAR is including FOO * (class Foo to Bar) . endm mod BAR is including FOO * (sort Foo to Bar) . endm mod BAR is sort Bar . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION mod FOO mod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) mod FOO * (sort Foo to Bar) Advisory: redefining module FOO. Advisory: redefining module BAR. Warning: , line 58 (mod FOO): unable to find a class id sort ( usually Cid) in FOO. mod BAR is including FOO * (class Foo to Bar) . endm mod BAR is including FOO * (sort Foo to Bar, op Foo : -> [Foo] to Bar) . endm mod BAR is sort Bar . op Bar : -> Bar . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION mod FOO mod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) mod FOO * (sort Foo to Bar, op Foo : -> [Foo] to Bar) Advisory: redefining module FOO. Advisory: redefining module BAR. Advisory: , line 78 (mod BAR): class mapping for Foo maps a sort that is not a subsort of Cid. Advisory: , line 78 (mod BAR): missing class constant for renamed class Foo. mod BAR is including FOO * (class Foo to Bar) . endm mod BAR is including FOO * (sort Foo to Bar) . endm mod BAR is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Bar . subsort Attribute < AttributeSet . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO mod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) mod FOO * (sort Foo to Bar) Advisory: redefining module FOO. Advisory: redefining module BAR. Advisory: , line 93 (mod BAR): class mapping for Foo maps a sort that is not a subsort of Cid. mod BAR is including FOO * (class Foo to Bar) . endm mod BAR is including FOO * (sort Foo to Bar, op Foo : -> [Foo] to Bar) . endm mod BAR is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Bar . subsort Attribute < AttributeSet . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op Bar : -> Bar . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO mod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) mod FOO * (sort Foo to Bar, op Foo : -> [Foo] to Bar) Advisory: redefining module FOO. Advisory: redefining module BAR. Warning: , line 107 (mod FOO): unable to find an attribute sort (usually Attribute) in FOO. Advisory: , line 113 (mod BAR): ignoring attr mappings in renaming. mod BAR is including FOO * (attr a to b) . endm mod BAR is including FOO . endm mod BAR is sorts Foo Bar . op a :_ : Foo -> Bar [prec 15 gather (E)] . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION mod FOO mod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) Advisory: redefining module FOO. Advisory: redefining module BAR. omod BAR is including FOO * (attr a to b) . endom mod BAR is including CONFIGURATION . including FOO . endm mod BAR is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Foo Bar . subsort Attribute < AttributeSet . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op a :_ : Foo -> Bar [prec 15 gather (E)] . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO omod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) Advisory: redefining module FOO. Advisory: redefining module BAR. omod BAR is including FOO * (attr a to b) . endom mod BAR is including CONFIGURATION . including FOO * (op a :_ : [Foo] -> [Attribute,AttributeSet] to b :_) . endm mod BAR is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Foo Bar . subsort Attribute < AttributeSet . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op b :_ : Foo -> Attribute [prec 15 gather (E)] . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO omod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) mod FOO * (op a :_ : [Foo] -> [Attribute,AttributeSet] to b :_) Advisory: redefining module FOO. Advisory: redefining module BAR. Advisory: generic msg mapping renames operator g which does not have the msg attribute. mod BAR is including FOO * (msg f to f', msg g to g') . endm mod BAR is including FOO * (op f to f', op g to g') . endm mod BAR is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration . subsort Attribute < AttributeSet . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op f' : Oid -> Msg [ctor msg] . op g' : Oid -> Msg . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO mod BAR fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) mod FOO * (op f to f', op g to g') Advisory: specific msg mapping renames operator g which does not have the msg attribute. mod BAZ is including FOO * (msg f : [Oid] -> [Msg] to f', msg g : [Oid] -> [Msg] to g') . endm mod BAZ is including FOO * (op f : [Oid] -> [Object,Msg,Portal,Configuration] to f', op g : [Oid] -> [Object,Msg,Portal,Configuration] to g') . endm mod BAZ is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration . subsort Attribute < AttributeSet . subsorts Object Msg Portal < Configuration . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op f' : Oid -> Msg [ctor msg] . op g' : Oid -> Msg . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm fmod BOOL fmod TRUTH-VALUE fmod BOOL-OPS fmod TRUTH fmod EXT-BOOL fmod INITIAL-EQUALITY-PREDICATE fmod NAT fmod INT fmod RAT fmod FLOAT fmod STRING fmod CONVERSION fmod RANDOM fmod BOUND fmod QID fth TRIV fth STRICT-WEAK-ORDER fth STRICT-TOTAL-ORDER fth TOTAL-PREORDER fth TOTAL-ORDER fth DEFAULT fmod LIST fmod WEAKLY-SORTABLE-LIST fmod SORTABLE-LIST fmod WEAKLY-SORTABLE-LIST' fmod SORTABLE-LIST' fmod SET fmod LIST-AND-SET fmod SORTABLE-LIST-AND-SET fmod SORTABLE-LIST-AND-SET' fmod LIST* fmod SET* fmod MAP fmod ARRAY fmod STRING-OPS fmod NAT-LIST fmod QID-LIST fmod QID-SET fmod META-TERM fmod META-CONDITION fmod META-STRATEGY fmod META-MODULE fmod META-VIEW fmod META-LEVEL fmod LEXICAL mod COUNTER mod LOOP-MODE mod CONFIGURATION omod FOO mod BAR mod BAZ fth X :: TRIV fmod LIST{[X]} fth X :: STRICT-WEAK-ORDER fmod LIST{STRICT-WEAK-ORDER} fmod LIST{STRICT-WEAK-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{[X]} * (sort NeList{STRICT-WEAK-ORDER}{X} to NeList{X}, sort List{STRICT-WEAK-ORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST{[X]} fth X :: STRICT-TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod LIST{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST{[X]} fth X :: TOTAL-PREORDER fmod LIST{TOTAL-PREORDER} fmod LIST{TOTAL-PREORDER}{[X]} fmod LIST{TOTAL-PREORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{X} to NeList{X}, sort List{TOTAL-PREORDER}{X} to List{X}) fmod WEAKLY-SORTABLE-LIST'{[X]} fth X :: TOTAL-ORDER fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} fmod WEAKLY-SORTABLE-LIST'{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod LIST{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}) fmod SORTABLE-LIST'{[X]} fmod SET{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER} fmod SET{STRICT-WEAK-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER} fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) fmod LIST-AND-SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeList{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeList{STRICT-TOTAL-ORDER}{X}, sort List{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to List{ STRICT-TOTAL-ORDER}{X}) * (sort NeList{STRICT-TOTAL-ORDER}{X} to NeList{X}, sort List{STRICT-TOTAL-ORDER}{X} to List{X}, sort NeSet{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{STRICT-WEAK-ORDER}{ STRICT-TOTAL-ORDER}{X} to Set{X}) fmod SET{STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{[X]} * (sort NeSet{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to NeSet{X}, sort Set{ STRICT-WEAK-ORDER}{STRICT-TOTAL-ORDER}{X} to Set{X}) fmod LIST-AND-SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER} fmod SET{TOTAL-PREORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER} fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) fmod LIST-AND-SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeList{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeList{TOTAL-ORDER}{X}, sort List{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to List{TOTAL-ORDER}{X}) * (sort NeList{ TOTAL-ORDER}{X} to NeList{X}, sort List{TOTAL-ORDER}{X} to List{X}, sort NeSet{TOTAL-PREORDER}{TOTAL-ORDER}{X} to NeSet{X}, sort Set{ TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod SET{TOTAL-PREORDER}{TOTAL-ORDER}{[X]} * (sort NeSet{TOTAL-PREORDER}{ TOTAL-ORDER}{X} to NeSet{X}, sort Set{TOTAL-PREORDER}{TOTAL-ORDER}{X} to Set{X}) fmod LIST*{[X]} fmod SET*{[X]} fth Y :: TRIV fmod MAP{[X], [Y]} fth Y :: DEFAULT fmod ARRAY{[X], [Y]} fmod LIST{Nat} fmod LIST{Nat} * (sort NeList{Nat} to NeNatList, sort List{Nat} to NatList) fmod LIST{Qid} fmod LIST{Qid} * (sort NeList{Qid} to NeQidList, sort List{Qid} to QidList) fmod SET{Qid} fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) fmod QID-SET * (op empty to none, op _,_ to _;_ [prec 43]) fmod SET{Qid} * (sort NeSet{Qid} to NeQidSet, sort Set{Qid} to QidSet) * (op empty to none, op _,_ to _;_ [prec 43]) mod FOO * (op f to f', op g to g') mod FOO * (op f : [Oid] -> [Object,Msg,Portal,Configuration] to f', op g : [ Oid] -> [Object,Msg,Portal,Configuration] to g') Bye. Maude-Maude3.5.1/tests/Corner/badRenaming0000775000175000017510000000033515036121435017610 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/badRenaming.maude -no-banner \ > badRenaming.out 2>&1 diff $srcdir/badRenaming.expected badRenaming.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Corner/badOmod.maude0000664000175000017510000000331715036121435020040 0ustar nileshnileshset show timing off . *** *** Check what happens with bad use of object-oriented features. *** *** not an omod mod CLASS-IN-MOD is class Foo | bar : Bool . endm show mod . show desugared . show all . *** good example omod FOO is class Foo | foo : Bool . class Bar | bar : Bool . endom show mod . show desugared . show all . *** not an omod mod SUBCLASS-IN-MOD is pr FOO . subclass Foo < Bar . endm show mod . show desugared . show all . *** good example omod SUBCLASS-IN-OMOD is pr FOO . subclass Foo < Bar . endom show mod . show desugared . show all . *** good example oth SUBCLASS-IN-OTH is pr FOO . subclass Foo < Bar . endoth show mod . show desugared . show all . *** underscore in class anme omod FOO is class a_b . endom show mod . show desugared . show all . *** underscore in attribute name omod FOO is class a | b_c : Bool . endom show mod . show desugared . show all . *** good example omod FOO is class Foo . op myObj : -> Oid . op f : Object Object -> Object [id: < myObj : Foo | none >] . endom show mod . show desugared . show all . red < myObj : Foo | > . red f(< myObj : Foo | >, obj:Object) . *** empty attribute set syntax in identity omod BAR is class Foo . op myObj : -> Oid . op f : Object Object -> Object [id: < myObj : Foo | >] . endom *** quietly ignore extra msg and ctor attributes omod ACCOUNT is protecting INT . msgs credit debit : Oid Int -> Msg [msg] . msg from_to_transfer_ : Oid Oid Int -> Msg [ctor] . endom show mod . show desugared . show all . *** attribute at the kind level with sorts in different connected components omod ACCOUNT is protecting INT . class Account | bal : [Int,Bool] . endom show mod . show desugared . show all . Maude-Maude3.5.1/tests/Corner/badOmod.expected0000664000175000017510000014543515036121435020556 0ustar nileshnileshWarning: , line 9 (mod CLASS-IN-MOD): class declaration only allowed in object-oriented modules and theories. mod CLASS-IN-MOD is endm mod CLASS-IN-MOD is including BOOL . endm mod CLASS-IN-MOD is sort Bool . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endm omod FOO is class Foo | foo : Bool . class Bar | bar : Bool . endom mod FOO is including BOOL . including CONFIGURATION . sorts Foo Bar . subsorts Foo Bar < Cid . op Foo : -> Foo [ctor] . op foo :_ : Bool -> Attribute [ctor prec 15 gather (&)] . op Bar : -> Bar [ctor] . op bar :_ : Bool -> Attribute [ctor prec 15 gather (&)] . endm mod FOO is sorts Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration Foo Bar . subsort Attribute < AttributeSet . subsorts Foo Bar < Cid . subsorts Object Msg Portal < Configuration . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op Foo : -> Foo [ctor] . op foo :_ : Bool -> Attribute [ctor prec 15 gather (&)] . op Bar : -> Bar [ctor] . op bar :_ : Bool -> Attribute [ctor prec 15 gather (&)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm Warning: , line 29 (mod SUBCLASS-IN-MOD): subclass declaration only allowed in object-oriented modules and theories. mod SUBCLASS-IN-MOD is protecting FOO . endm mod SUBCLASS-IN-MOD is including BOOL . protecting FOO . endm mod SUBCLASS-IN-MOD is sorts Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration Foo Bar . subsort Attribute < AttributeSet . subsorts Foo Bar < Cid . subsorts Object Msg Portal < Configuration . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op Foo : -> Foo [ctor] . op foo :_ : Bool -> Attribute [ctor prec 15 gather (&)] . op Bar : -> Bar [ctor] . op bar :_ : Bool -> Attribute [ctor prec 15 gather (&)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm omod SUBCLASS-IN-OMOD is protecting FOO . subclass Foo < Bar . endom mod SUBCLASS-IN-OMOD is including BOOL . including CONFIGURATION . protecting FOO . subsort Foo < Bar . endm mod SUBCLASS-IN-OMOD is sorts Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration Foo Bar . subsort Attribute < AttributeSet . subsorts Foo Bar < Cid . subsorts Object Msg Portal < Configuration . subsort Foo < Bar . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op Foo : -> Foo [ctor] . op foo :_ : Bool -> Attribute [ctor prec 15 gather (&)] . op Bar : -> Bar [ctor] . op bar :_ : Bool -> Attribute [ctor prec 15 gather (&)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm oth SUBCLASS-IN-OTH is protecting FOO . subclass Foo < Bar . endoth th SUBCLASS-IN-OTH is including CONFIGURATION . protecting FOO . subsort Foo < Bar . endth th SUBCLASS-IN-OTH is sorts Attribute AttributeSet Oid Cid Object Msg Portal Configuration Bool Foo Bar . subsort Attribute < AttributeSet . subsorts Foo Bar < Cid . subsorts Object Msg Portal < Configuration . subsort Foo < Bar . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op Foo : -> Foo [ctor] . op foo :_ : Bool -> Attribute [ctor prec 15 gather (&)] . op Bar : -> Bar [ctor] . op bar :_ : Bool -> Attribute [ctor prec 15 gather (&)] . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . endth Advisory: redefining module FOO. Warning: , line 58 (omod FOO): underscore not allowed in class name a_b. omod FOO is class a_b . endom mod FOO is including BOOL . including CONFIGURATION . endm mod FOO is sorts Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration . subsort Attribute < AttributeSet . subsorts Object Msg Portal < Configuration . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm Advisory: redefining module FOO. Warning: , line 67 (omod FOO): underscore not allowed in attribute name b_c. omod FOO is class a | b_c : Bool . endom mod FOO is including BOOL . including CONFIGURATION . sort a . subsort a < Cid . op a : -> a [ctor] . endm mod FOO is sorts Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration a . subsort Attribute < AttributeSet . subsort a < Cid . subsorts Object Msg Portal < Configuration . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op a : -> a [ctor] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm Advisory: redefining module FOO. omod FOO is class Foo . op myObj : -> Oid . op f : Object Object -> Object [id: < myObj : Foo | none >] . endom mod FOO is including BOOL . including CONFIGURATION . sort Foo . subsort Foo < Cid . op myObj : -> Oid . op f : Object Object -> Object [id: < myObj : Foo | none >] . op Foo : -> Foo [ctor] . endm mod FOO is sorts Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration Foo . subsort Attribute < AttributeSet . subsort Foo < Cid . subsorts Object Msg Portal < Configuration . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op myObj : -> Oid . op f : Object Object -> Object [id: < myObj : Foo | none >] . op Foo : -> Foo [ctor] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm ========================================== reduce in FOO : < myObj : Foo | none > . rewrites: 0 result Object: < myObj : Foo | none > ========================================== reduce in FOO : obj:Object . rewrites: 0 result Object: obj:Object Warning: , line 92 (omod BAR): empty attribute set syntax is not allowed in operator declarations. Warning: , line 89 (omod BAR): this module contains one or more errors that could not be patched up and thus it cannot be used or imported. omod ACCOUNT is protecting INT . msgs credit debit : Oid Int -> Msg . msg from_to_transfer_ : Oid Oid Int -> Msg . endom mod ACCOUNT is including BOOL . including CONFIGURATION . protecting INT . op credit : Oid Int -> Msg [ctor msg] . op debit : Oid Int -> Msg [ctor msg] . op from_to_transfer_ : Oid Oid Int -> Msg [ctor msg prec 41 gather (& & E)] . endm mod ACCOUNT is sorts Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration Zero NzNat Nat NzInt Int . subsort Attribute < AttributeSet . subsorts Object Msg Portal < Configuration . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Int] [Int] [Int] -> [Int] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op credit : Oid Int -> Msg [ctor msg] . op debit : Oid Int -> Msg [ctor msg] . op from_to_transfer_ : Oid Oid Int -> Msg [ctor msg prec 41 gather (& & E)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm Advisory: redefining module ACCOUNT. Warning: , line 109 (omod ACCOUNT): sorts Int and Bool are in different components. omod ACCOUNT is protecting INT . class Account | bal : [Int,Bool] . endom mod ACCOUNT is including BOOL . including CONFIGURATION . protecting INT . sort Account . subsort Account < Cid . op Account : -> Account [ctor] . op bal :_ : [Int] -> Attribute [ctor prec 15 gather (&)] . endm mod ACCOUNT is sorts Bool Attribute AttributeSet Oid Cid Object Msg Portal Configuration Zero NzNat Nat NzInt Int Account . subsort Attribute < AttributeSet . subsort Account < Cid . subsorts Object Msg Portal < Configuration . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat < Int . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op none : -> AttributeSet [ctor] . op _,_ : AttributeSet AttributeSet -> AttributeSet [ctor assoc comm id: none prec 41 gather (e E)] . op <_:_|_> : Oid Cid AttributeSet -> Object [ctor obj prec 0 gather (& & &) special ( id-hook ObjectConstructorSymbol op-hook attributeSetSymbol (_,_ : AttributeSet AttributeSet ~> AttributeSet))] . op none : -> Configuration [ctor] . op __ : Configuration Configuration -> Configuration [ctor assoc comm id: none config prec 41 gather (e E)] . op <> : -> Portal [ctor portal] . op getClass : Object -> Cid . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Int] [Int] [Int] -> [Int] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op Account : -> Account [ctor] . op bal :_ : [Int] -> Attribute [ctor prec 15 gather (&)] . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq getClass(< O:Oid : C:Cid | A:AttributeSet >) = C:Cid . endm Bye. Maude-Maude3.5.1/tests/Corner/badOmod0000775000175000017510000000031515036121435016744 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/badOmod.maude -no-banner \ > badOmod.out 2>&1 diff $srcdir/badOmod.expected badOmod.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Corner/attributeOverparsing.maude0000664000175000017510000000252315036121435022714 0ustar nileshnilesh*** *** Test that attributes without their required information overparse. *** fmod FOO is op _+_ : Bool Bool -> Bool [prec ctor] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [gather ctor] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [format ctor] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [strat ctor] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [strategy ctor] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [poly ctor] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [prec] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [gather] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [format] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [strat] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [strategy] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [poly] . endfm fmod FOO is inc NAT * (op _+_ to _++_ [prec]) . endfm fmod FOO is inc NAT * (op _+_ to _++_ [prec gather]) . endfm fmod FOO is inc NAT * (op _+_ to _++_ [gather]) . endfm fmod FOO is inc NAT * (op _+_ to _++_ [format]) . endfm fmod FOO is inc NAT * (op _+_ to _++_ [format prec gather]) . endfm fmod FOO is op _+_ : Bool Bool -> Bool [latex] . endfm fmod FOO is op _+_ : Bool Bool -> Bool [latex ctor] . endfm fmod FOO is inc NAT * (op _+_ to _++_ [latex]) . endfm fmod FOO is inc NAT * (op _+_ to _++_ [latex prec]) . endfm Maude-Maude3.5.1/tests/Corner/attributeOverparsing.expected0000664000175000017510000000522315036121435023422 0ustar nileshnileshWarning: , line 6 (fmod FOO): prec attribute without value in operator declaration. Warning: , line 10 (fmod FOO): gather attribute without pattern in operator declaration. Warning: , line 14 (fmod FOO): format attribute without specification in operator declaration. Warning: , line 18 (fmod FOO): strat attribute without strategy in operator declaration. Warning: , line 22 (fmod FOO): strategy attribute without strategy in operator declaration. Warning: , line 26 (fmod FOO): poly attribute without specification in operator declaration. Warning: , line 30 (fmod FOO): prec attribute without value in operator declaration. Warning: , line 34 (fmod FOO): gather attribute without pattern in operator declaration. Warning: , line 38 (fmod FOO): format attribute without specification in operator declaration. Warning: , line 42 (fmod FOO): strat attribute without strategy in operator declaration. Warning: , line 46 (fmod FOO): strategy attribute without strategy in operator declaration. Warning: , line 50 (fmod FOO): poly attribute without specification in operator declaration. Warning: , line 54 (fmod FOO): prec attribute without value in operator mapping. Warning: , line 58 (fmod FOO): prec attribute without value in operator mapping. Warning: , line 58 (fmod FOO): gather attribute without pattern in operator mapping. Warning: , line 62 (fmod FOO): gather attribute without pattern in operator mapping. Warning: , line 66 (fmod FOO): format attribute without specification in operator mapping. Warning: , line 70 (fmod FOO): format attribute without specification in operator mapping. Warning: , line 70 (fmod FOO): prec attribute without value in operator mapping. Warning: , line 70 (fmod FOO): gather attribute without pattern in operator mapping. Warning: , line 74 (fmod FOO): latex attribute without latex code in operator declaration. Warning: , line 78 (fmod FOO): latex attribute without latex code in operator declaration. Warning: , line 82 (fmod FOO): latex attribute without latex code in operator mapping. Warning: , line 86 (fmod FOO): latex attribute without latex code in operator mapping. Warning: , line 86 (fmod FOO): prec attribute without value in operator mapping. Bye. Maude-Maude3.5.1/tests/Corner/attributeOverparsing0000775000175000017510000000041415036121435021622 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/attributeOverparsing.maude -no-banner -no-advise \ > attributeOverparsing.out 2>&1 diff $srcdir/attributeOverparsing.expected attributeOverparsing.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/Corner/Makefile.am0000664000175000017510000000134215036121435017506 0ustar nileshnileshTESTS = \ badOmod \ badRenaming \ badView \ badStatement \ fakeParameterSort \ fakeParameterConstant \ attributeOverparsing \ ACU_TreeVariableSubproblem \ operatorNames MAUDE_FILES = \ badOmod.maude \ badRenaming.maude \ badView.maude \ badStatement.maude \ fakeParameterSort.maude \ fakeParameterConstant.maude \ attributeOverparsing.maude \ ACU_TreeVariableSubproblem.maude \ operatorNames.maude RESULT_FILES = \ badOmod.expected \ badRenaming.expected \ badView.expected \ badStatement.expected \ fakeParameterSort.expected \ fakeParameterConstant.expected \ attributeOverparsing.expected \ ACU_TreeVariableSubproblem.expected \ operatorNames.expected EXTRA_DIST = $(TESTS) $(MAUDE_FILES) $(RESULT_FILES) Maude-Maude3.5.1/tests/Corner/ACU_TreeVariableSubproblem.maude0000664000175000017510000001061115036121435023556 0ustar nileshnileshset show timing off . *** *** Check corner cases for class ACU_TreeVariableSubproblem. *** *** This kind of matching subproblem is generated when we have unbound stripper and collector *** variables, the subject is in red-black tree form, and we need to generate all solutions. *** Corner cases arise when the stripper and/or collector variable is bound by an earlier *** ACU_TreeVariableSubproblem and we need to deal with the bound variables correctly. *** *** bound collector case fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N M : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . *** make a red-black tree of arguments var S : Set . op h : Set Set -> Set . ceq h(f(N, S), f(M, S)) = M if N > 10 . *** N, M are strippers, S is a collector endfm red h(g(11), g(11)) . red h(f(g(11), g(9)), f(g(11), g(9))) . *** multiplicities > 1 fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N M : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . *** make a red-black tree of arguments var S : Set . op h : Set Set -> Set . ceq h(f(N, S), f(M, S)) = M if N < 2 . *** N, M are strippers, S is a collector endfm red h(g(11), g(11)) . red h(f(g(11), g(9)), f(g(11), g(9))) . *** multiplicities > 1 fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N M : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . *** make a red-black tree of arguments var S : Set . op h : Set Set -> Set . ceq h(f(N, S), f(M, S)) = M if N = 5 . *** N, M are strippers, S is a collector endfm red h(g(11), g(11)) . red h(f(g(11), g(9)), f(g(11), g(9))) . *** multiplicities > 1 *** bound stripper case fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . *** make a red-black tree of arguments var S T : Set . op h : Set Set -> Set . ceq h(f(N, S), f(N, T)) = T if N > 10 . *** N is a strippers, S, T are collectors endfm red h(g(11), g(11)) . red h(f(g(11), g(9)), f(g(11), g(9))) . *** multiplicities > 1 fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . *** make a red-black tree of arguments var S T : Set . op h : Set Set -> Set . ceq h(f(N, S), f(N, T)) = T if N < 2 . *** N is a strippers, S, T are collectors endfm red h(g(11), g(11)) . red h(f(g(11), g(9)), f(g(11), g(9))) . *** multiplicities > 1 fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . *** make a red-black tree of arguments var S T : Set . op h : Set Set -> Set . ceq h(f(N, S), f(N, T)) = T if N = 5 . *** N is a strippers, S, T are collectors endfm red h(g(11), g(11)) . red h(f(g(11), g(9)), f(g(11), g(9))) . *** multiplicities > 1 *** both bound case fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . *** make a red-black tree of arguments var S T : Set . op h : Set Set -> Set . ceq h(f(N, S), f(N, S)) = S if N > 10 . *** N is a strippers, S is a collector endfm red h(g(11), g(11)) . red h(f(g(11), g(9)), f(g(11), g(9))) . *** multiplicities > 1 fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . *** make a red-black tree of arguments var S : Set . op h : Set Set -> Set . ceq h(f(N, S), f(N, S)) = S if N < 2 . *** N is a strippers, S is a collector endfm red h(g(11), g(11)) . red h(f(g(11), g(9)), f(g(11), g(9))) . *** multiplicities > 1 fmod FOO is pr NAT . sort Set . subsort Nat < Set . var N : Nat . op f : Set Set -> Set [assoc comm] . op g : Nat -> Set . eq g(0) = 0 . eq g(s N) = f(g(N), s N) . *** make a red-black tree of arguments var S : Set . op h : Set Set -> Set . ceq h(f(N, S), f(N, S)) = S if N = 5 . *** N is a strippers, S is a collector endfm red h(g(11), g(11)) . red h(f(g(11), g(9)), f(g(11), g(9))) . *** multiplicities > 1 Maude-Maude3.5.1/tests/Corner/ACU_TreeVariableSubproblem.expected0000664000175000017510000000553715036121435024277 0ustar nileshnilesh========================================== reduce in FOO : h(g(11), g(11)) . rewrites: 25 result NzNat: 11 ========================================== reduce in FOO : h(f(g(9), g(11)), f(g(9), g(11))) . rewrites: 35 result NzNat: 11 Advisory: redefining module FOO. ========================================== reduce in FOO : h(g(11), g(11)) . rewrites: 14 result Zero: 0 ========================================== reduce in FOO : h(f(g(9), g(11)), f(g(9), g(11))) . rewrites: 24 result Zero: 0 Advisory: redefining module FOO. ========================================== reduce in FOO : h(g(11), g(11)) . rewrites: 13 result NzNat: 5 ========================================== reduce in FOO : h(f(g(9), g(11)), f(g(9), g(11))) . rewrites: 23 result NzNat: 5 Advisory: redefining module FOO. ========================================== reduce in FOO : h(g(11), g(11)) . rewrites: 25 result Set: f(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ========================================== reduce in FOO : h(f(g(9), g(11)), f(g(9), g(11))) . rewrites: 35 result Set: f(0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10) Advisory: redefining module FOO. ========================================== reduce in FOO : h(g(11), g(11)) . rewrites: 14 result Set: f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) ========================================== reduce in FOO : h(f(g(9), g(11)), f(g(9), g(11))) . rewrites: 24 result Set: f(0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 11) Advisory: redefining module FOO. ========================================== reduce in FOO : h(g(11), g(11)) . rewrites: 13 result Set: f(0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11) ========================================== reduce in FOO : h(f(g(9), g(11)), f(g(9), g(11))) . rewrites: 23 result Set: f(0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 11) Advisory: redefining module FOO. ========================================== reduce in FOO : h(g(11), g(11)) . rewrites: 25 result Set: f(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ========================================== reduce in FOO : h(f(g(9), g(11)), f(g(9), g(11))) . rewrites: 35 result Set: f(0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10) Advisory: redefining module FOO. ========================================== reduce in FOO : h(g(11), g(11)) . rewrites: 14 result Set: f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) ========================================== reduce in FOO : h(f(g(9), g(11)), f(g(9), g(11))) . rewrites: 24 result Set: f(0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 11) Advisory: redefining module FOO. ========================================== reduce in FOO : h(g(11), g(11)) . rewrites: 13 result Set: f(0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11) ========================================== reduce in FOO : h(f(g(9), g(11)), f(g(9), g(11))) . rewrites: 23 result Set: f(0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 11) Bye. Maude-Maude3.5.1/tests/Corner/ACU_TreeVariableSubproblem0000775000175000017510000000043115036121435022466 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/ACU_TreeVariableSubproblem.maude -no-banner \ > ACU_TreeVariableSubproblem.out 2>&1 diff $srcdir/ACU_TreeVariableSubproblem.expected ACU_TreeVariableSubproblem.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/BuiltIn/0000775000175000017510000000000015036121435015570 5ustar nileshnileshMaude-Maude3.5.1/tests/BuiltIn/stringOps.maude0000664000175000017510000000247315036121435020603 0ustar nileshnileshset show timing off . set show advisories off . select STRING-OPS . red isControl("\n") . red isControl("a") . red isPrintable("a") . red isPrintable("\n") . red isWhiteSpace("\n") . red isWhiteSpace("2") . red isBlank("\t") . red isBlank("\n") . red isGraphic("a") . red isGraphic(" ") . red isPunctuation(";") . red isPunctuation("a") . red isAlphanumeric("a") . red isAlphanumeric("3") . red isAlphanumeric("!") . red isAlphanumeric("\n") . red isAlphanumeric("word") . red isAlphabetic("a") . red isAlphabetic("3") . red isAlphabetic("!") . red isUppercase("a") . red isUppercase("A") . red isUppercase("4") . red isLowercase("a") . red isLowercase("A") . red isLowercase("4") . red isDigit("A") . red isDigit("4") . red isHexadecimalDigit("A") . red isHexadecimalDigit("4") . red isHexadecimalDigit("G") . red startsWith("Foo foo", "Foo") . red startsWith("Foo foo", "Bar") . red startsWith("Foo foo", "BarBarBar") . red endsWith("Foo foo", "foo") . red endsWith("Foo foo", "Bar") . red endsWith("Foo foo", "BarBarBar") . red trimStart(" \nFoo\n ") . red trimStart("BarFoo\n ") . red trimStart("\t\t \f\r \n ") . red trimEnd(" \nFoo\n ") . red trimEnd(" \nFooBar") . red trimEnd("\t\t \f\r \n ") . red trim(" \nFoo\n ") . red trim("Foo\n ") . red trim(" \nFoo") . red trim("FooBar") . red trim("\t\t \f\r \n ") . Maude-Maude3.5.1/tests/BuiltIn/stringOps.expected0000664000175000017510000001317715036121435021314 0ustar nileshnilesh========================================== reduce in STRING-OPS : isControl("\n") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isControl("a") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isPrintable("a") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isPrintable("\n") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isWhiteSpace("\n") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isWhiteSpace("2") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isBlank("\t") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isBlank("\n") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isGraphic("a") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isGraphic(" ") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isPunctuation(";") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isPunctuation("a") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isAlphanumeric("a") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isAlphanumeric("3") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isAlphanumeric("!") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isAlphanumeric("\n") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isAlphanumeric("word") . rewrites: 0 result [Bool]: isAlphanumeric("word") ========================================== reduce in STRING-OPS : isAlphabetic("a") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isAlphabetic("3") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isAlphabetic("!") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isUppercase("a") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isUppercase("A") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isUppercase("4") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isLowercase("a") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isLowercase("A") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isLowercase("4") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isDigit("A") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : isDigit("4") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isHexadecimalDigit("A") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isHexadecimalDigit("4") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : isHexadecimalDigit("G") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : startsWith("Foo foo", "Foo") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : startsWith("Foo foo", "Bar") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : startsWith("Foo foo", "BarBarBar") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : endsWith("Foo foo", "foo") . rewrites: 1 result Bool: true ========================================== reduce in STRING-OPS : endsWith("Foo foo", "Bar") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : endsWith("Foo foo", "BarBarBar") . rewrites: 1 result Bool: false ========================================== reduce in STRING-OPS : trimStart(" \nFoo\n ") . rewrites: 1 result String: "Foo\n " ========================================== reduce in STRING-OPS : trimStart("BarFoo\n ") . rewrites: 1 result String: "BarFoo\n " ========================================== reduce in STRING-OPS : trimStart("\t\t \f\r \n ") . rewrites: 1 result String: "" ========================================== reduce in STRING-OPS : trimEnd(" \nFoo\n ") . rewrites: 1 result String: " \nFoo" ========================================== reduce in STRING-OPS : trimEnd(" \nFooBar") . rewrites: 1 result String: " \nFooBar" ========================================== reduce in STRING-OPS : trimEnd("\t\t \f\r \n ") . rewrites: 1 result String: "" ========================================== reduce in STRING-OPS : trim(" \nFoo\n ") . rewrites: 1 result String: "Foo" ========================================== reduce in STRING-OPS : trim("Foo\n ") . rewrites: 1 result String: "Foo" ========================================== reduce in STRING-OPS : trim(" \nFoo") . rewrites: 1 result String: "Foo" ========================================== reduce in STRING-OPS : trim("FooBar") . rewrites: 1 result String: "FooBar" ========================================== reduce in STRING-OPS : trim("\t\t \f\r \n ") . rewrites: 1 result String: "" Bye. Maude-Maude3.5.1/tests/BuiltIn/stringOps0000775000175000017510000000034015036121435017503 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/stringOps.maude -no-banner -no-advise \ > stringOps.out 2>&1 diff $srcdir/stringOps.expected stringOps.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/BuiltIn/string.maude0000664000175000017510000000516515036121435020122 0ustar nileshnileshset show timing off . set show advisories off . select STRING . red ascii("A") . red ascii("AB") . red length("AAA") . red length("") . red length("abcdefghijklmnopqrstuvwxyz") . red substr("abcdefghijklmnopqrstuvwxyz", 10, 5) . red substr("abcdefghijklmnopqrstuvwxyz", 1000000000000000000, 5) . red substr("abcdefghijklmnopqrstuvwxyz", 10, 500000000000000000) . red substr("abcdefghijklmnopqrstuvwxyz", 0, 5) . red substr("abcdefghijklmnopqrstuvwxyz", 10, 0) . red find("abcdefghijabcdefghij", "cde", 0) . red find("abcdefghijabcdefghij", "cde", 1) . red find("abcdefghijabcdefghij", "cde", 2) . red find("abcdefghijabcdefghij", "cde", 3) . red find("abcdefghijabcdefghij", "cde", 30000000000000000000000) . red rfind("abcdefghijabcdefghij", "cde", 0) . red rfind("abcdefghijabcdefghij", "cde", 1) . red rfind("abcdefghijabcdefghij", "cde", 2) . red rfind("abcdefghijabcdefghij", "cde", 12) . red rfind("abcdefghijabcdefghij", "cde", 13) . red rfind("abcdefghijabcdefghij", "cde", 30000000000000000000000) . red char(65) . red char(2000) . red char(20000000000000000000000) . red char(0) . red char(255) . red "test" . red "test" + "2" . red substr("cat", 1, 1) . red substr("\n\r\f", 1, 1) . red "\007" . red substr("a\"\"b", 0, 0) . red substr("a\"\"b", 0, 2) . red substr("a\"\"b", 0, 100) . red substr("a\"\"b", 3, 1) . red substr("a\"\"b", 4, 1) . red "abracadabra" < "aardvark" . red "AAA" < "aardvark" . red length("aardvark") . red "abc" == "a" + "b" + "c" . red find("catcat", "tc", 0) . red find("catcat", "jr", 0) . red rfind("catcat", "t", 10) . red rfind("catcat", "t", 4) . red "\0" . red "\377" . red "\399" . red "\477" . red "\40" . red "\101" . fmod FOO is inc STRING . sort Foo . op "this is not a string" : -> Foo . endfm red "this is not a string" . red ("this is not a string").Foo . red ("this is not a string").String . red "this is a string" . select STRING . red "this is a really long string; this is a really long string; this is a really long string; this is a really long string; this is a really long string." . red char(65) . red ascii(" ") . red ascii("aa") . red char(1000) . red lowerCase("a") . red lowerCase("A") . red lowerCase("123AAAaaa123aaaAAA123") . red lowerCase("AAAaaa123AAAaaa123aaaAAA123") . red lowerCase("abcdef") . red lowerCase("abcdeF") . red lowerCase("AbCdEf") . red lowerCase("aBcDeF") . red lowerCase("ABCDEF") . red upperCase("a") . red upperCase("A") . red upperCase("123AAAaaa123aaaAAA123") . red upperCase("AAAaaa123AAAaaa123aaaAAA123") . red upperCase("abcdef") . red upperCase("abcdeF") . red upperCase("AbCdEf") . red upperCase("aBcDeF") . red upperCase("ABCDEF") . Maude-Maude3.5.1/tests/BuiltIn/string.expected0000664000175000017510000002340315036121435020623 0ustar nileshnilesh========================================== reduce in STRING : ascii("A") . rewrites: 1 result NzNat: 65 ========================================== reduce in STRING : ascii("AB") . rewrites: 0 result [FindResult]: ascii("AB") ========================================== reduce in STRING : length("AAA") . rewrites: 1 result NzNat: 3 ========================================== reduce in STRING : length("") . rewrites: 1 result Zero: 0 ========================================== reduce in STRING : length("abcdefghijklmnopqrstuvwxyz") . rewrites: 1 result NzNat: 26 ========================================== reduce in STRING : substr("abcdefghijklmnopqrstuvwxyz", 10, 5) . rewrites: 1 result String: "klmno" ========================================== reduce in STRING : substr("abcdefghijklmnopqrstuvwxyz", 1000000000000000000, 5) . rewrites: 1 result String: "" ========================================== reduce in STRING : substr("abcdefghijklmnopqrstuvwxyz", 10, 500000000000000000) . rewrites: 1 result String: "klmnopqrstuvwxyz" ========================================== reduce in STRING : substr("abcdefghijklmnopqrstuvwxyz", 0, 5) . rewrites: 1 result String: "abcde" ========================================== reduce in STRING : substr("abcdefghijklmnopqrstuvwxyz", 10, 0) . rewrites: 1 result String: "" ========================================== reduce in STRING : find("abcdefghijabcdefghij", "cde", 0) . rewrites: 1 result NzNat: 2 ========================================== reduce in STRING : find("abcdefghijabcdefghij", "cde", 1) . rewrites: 1 result NzNat: 2 ========================================== reduce in STRING : find("abcdefghijabcdefghij", "cde", 2) . rewrites: 1 result NzNat: 2 ========================================== reduce in STRING : find("abcdefghijabcdefghij", "cde", 3) . rewrites: 1 result NzNat: 12 ========================================== reduce in STRING : find("abcdefghijabcdefghij", "cde", 30000000000000000000000) . rewrites: 1 result FindResult: notFound ========================================== reduce in STRING : rfind("abcdefghijabcdefghij", "cde", 0) . rewrites: 1 result FindResult: notFound ========================================== reduce in STRING : rfind("abcdefghijabcdefghij", "cde", 1) . rewrites: 1 result FindResult: notFound ========================================== reduce in STRING : rfind("abcdefghijabcdefghij", "cde", 2) . rewrites: 1 result NzNat: 2 ========================================== reduce in STRING : rfind("abcdefghijabcdefghij", "cde", 12) . rewrites: 1 result NzNat: 12 ========================================== reduce in STRING : rfind("abcdefghijabcdefghij", "cde", 13) . rewrites: 1 result NzNat: 12 ========================================== reduce in STRING : rfind("abcdefghijabcdefghij", "cde", 30000000000000000000000) . rewrites: 1 result NzNat: 12 ========================================== reduce in STRING : char(65) . rewrites: 1 result Char: "A" ========================================== reduce in STRING : char(2000) . rewrites: 0 result [String]: char(2000) ========================================== reduce in STRING : char(20000000000000000000000) . rewrites: 0 result [String]: char(20000000000000000000000) ========================================== reduce in STRING : char(0) . rewrites: 1 result Char: "\000" ========================================== reduce in STRING : char(255) . rewrites: 1 result Char: "\377" ========================================== reduce in STRING : "test" . rewrites: 0 result String: "test" ========================================== reduce in STRING : "test" + "2" . rewrites: 1 result String: "test2" ========================================== reduce in STRING : substr("cat", 1, 1) . rewrites: 1 result Char: "a" ========================================== reduce in STRING : substr("\n\r\f", 1, 1) . rewrites: 1 result Char: "\r" ========================================== reduce in STRING : "\a" . rewrites: 0 result Char: "\a" ========================================== reduce in STRING : substr("a\"\"b", 0, 0) . rewrites: 1 result String: "" ========================================== reduce in STRING : substr("a\"\"b", 0, 2) . rewrites: 1 result String: "a\"" ========================================== reduce in STRING : substr("a\"\"b", 0, 100) . rewrites: 1 result String: "a\"\"b" ========================================== reduce in STRING : substr("a\"\"b", 3, 1) . rewrites: 1 result Char: "b" ========================================== reduce in STRING : substr("a\"\"b", 4, 1) . rewrites: 1 result String: "" ========================================== reduce in STRING : "abracadabra" < "aardvark" . rewrites: 1 result Bool: false ========================================== reduce in STRING : "AAA" < "aardvark" . rewrites: 1 result Bool: true ========================================== reduce in STRING : length("aardvark") . rewrites: 1 result NzNat: 8 ========================================== reduce in STRING : "abc" == "a" + "b" + "c" . rewrites: 3 result Bool: true ========================================== reduce in STRING : find("catcat", "tc", 0) . rewrites: 1 result NzNat: 2 ========================================== reduce in STRING : find("catcat", "jr", 0) . rewrites: 1 result FindResult: notFound ========================================== reduce in STRING : rfind("catcat", "t", 10) . rewrites: 1 result NzNat: 5 ========================================== reduce in STRING : rfind("catcat", "t", 4) . rewrites: 1 result NzNat: 2 ========================================== reduce in STRING : "\000" . rewrites: 0 result Char: "\000" ========================================== reduce in STRING : "\377" . rewrites: 0 result Char: "\377" ========================================== reduce in STRING : "\00399" . rewrites: 0 result String: "\00399" ========================================== reduce in STRING : "?" . rewrites: 0 result Char: "?" ========================================== reduce in STRING : " " . rewrites: 0 result Char: " " ========================================== reduce in STRING : "A" . rewrites: 0 result Char: "A" Warning: , line 80: ambiguous term, two parses are: Foo : ("this is not a string").Foo -versus- String : ("this is not a string").String Arbitrarily taking the first as correct. ========================================== reduce in FOO : ("this is not a string").Foo . rewrites: 0 result Foo: ("this is not a string").Foo ========================================== reduce in FOO : ("this is not a string").Foo . rewrites: 0 result Foo: ("this is not a string").Foo ========================================== reduce in FOO : ("this is not a string").String . rewrites: 0 result String: ("this is not a string").String ========================================== reduce in FOO : "this is a string" . rewrites: 0 result String: "this is a string" ========================================== reduce in STRING : "this is a really long string; this is a really long string; this is a really long string; this is a really long string; this is a really long string." . rewrites: 0 result String: "this is a really long string; this is a really long string; this is a really long string; this is a really long string; this is a really long string." ========================================== reduce in STRING : char(65) . rewrites: 1 result Char: "A" ========================================== reduce in STRING : ascii(" ") . rewrites: 1 result NzNat: 32 ========================================== reduce in STRING : ascii("aa") . rewrites: 0 result [FindResult]: ascii("aa") ========================================== reduce in STRING : char(1000) . rewrites: 0 result [String]: char(1000) ========================================== reduce in STRING : lowerCase("a") . rewrites: 1 result Char: "a" ========================================== reduce in STRING : lowerCase("A") . rewrites: 1 result Char: "a" ========================================== reduce in STRING : lowerCase("123AAAaaa123aaaAAA123") . rewrites: 1 result String: "123aaaaaa123aaaaaa123" ========================================== reduce in STRING : lowerCase("AAAaaa123AAAaaa123aaaAAA123") . rewrites: 1 result String: "aaaaaa123aaaaaa123aaaaaa123" ========================================== reduce in STRING : lowerCase("abcdef") . rewrites: 1 result String: "abcdef" ========================================== reduce in STRING : lowerCase("abcdeF") . rewrites: 1 result String: "abcdef" ========================================== reduce in STRING : lowerCase("AbCdEf") . rewrites: 1 result String: "abcdef" ========================================== reduce in STRING : lowerCase("aBcDeF") . rewrites: 1 result String: "abcdef" ========================================== reduce in STRING : lowerCase("ABCDEF") . rewrites: 1 result String: "abcdef" ========================================== reduce in STRING : upperCase("a") . rewrites: 1 result Char: "A" ========================================== reduce in STRING : upperCase("A") . rewrites: 1 result Char: "A" ========================================== reduce in STRING : upperCase("123AAAaaa123aaaAAA123") . rewrites: 1 result String: "123AAAAAA123AAAAAA123" ========================================== reduce in STRING : upperCase("AAAaaa123AAAaaa123aaaAAA123") . rewrites: 1 result String: "AAAAAA123AAAAAA123AAAAAA123" ========================================== reduce in STRING : upperCase("abcdef") . rewrites: 1 result String: "ABCDEF" ========================================== reduce in STRING : upperCase("abcdeF") . rewrites: 1 result String: "ABCDEF" ========================================== reduce in STRING : upperCase("AbCdEf") . rewrites: 1 result String: "ABCDEF" ========================================== reduce in STRING : upperCase("aBcDeF") . rewrites: 1 result String: "ABCDEF" ========================================== reduce in STRING : upperCase("ABCDEF") . rewrites: 1 result String: "ABCDEF" Bye. Maude-Maude3.5.1/tests/BuiltIn/string0000775000175000017510000000032415036121435017023 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/string.maude -no-banner -no-advise \ > string.out 2>&1 diff $srcdir/string.expected string.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/BuiltIn/rat.maude0000664000175000017510000000223515036121435017375 0ustar nileshnileshset show timing off . set show advisories off . select RAT . red 2 / 3 + 1 / 4 . red 2 / 3 + -1 / 4 . red trunc(13 / 12) . red trunc(-13 / 12) . red frac(13 / 12) . red frac(-13 / 12) . red floor(13 / 12) . red floor(-13 / 12) . red ceiling(13 / 12) . red ceiling(-13 / 12) . red 2 / 3 + 1 / 3 . red 1/4 divides 1/2 . red 1/4 divides 1/12 . red 2/3 divides 3/2 . red 2/3 divides 4/3 . red 2/3 divides 5 . red 5 quo 2/3 . red -5 quo 2/3 . red -5 quo -2/3 . red 5 quo -2/3 . red 1 quo 3/100 . red 5 rem 2/3 . red -5 rem 2/3 . red -5 rem -2/3 . red 5 rem -2/3 . red 3 rem 2 . red -3 rem 2 . red 3 rem -2 . red -3 rem -2 . red 1 rem 3/100 . red 1 rem 7/100 . red 1 rem 13/100 . red gcd(1/2, 1/3) . red gcd(1/2, 0) . red gcd(5/6, 1/2, 9/13) . red lcm(1/2, 1/3) . red lcm(1/2, 2/3) . red lcm(1/2, 1/6) . red lcm(1/2, 0) . fmod RAT-BENCH is pr RAT . ops f g : Nat -> Rat . var N : Nat . eq f(0) = 1 . eq f(s N) = - f(N) + N / (s N) . eq g(0) = 1 . eq g(s N) = - g(N) * (s N / (N + 2)) . endfm red f(100) . red g(100) . fmod FOO is inc RAT . ops a b c d e : -> Rat . eq a = 42 . eq b = -42 . eq c = -42/1 . eq d = -42/29 . endfm show all FOO . Maude-Maude3.5.1/tests/BuiltIn/rat.expected0000664000175000017510000007166015036121435020113 0ustar nileshnilesh========================================== reduce in RAT : 1/4 + 2/3 . rewrites: 5 result PosRat: 11/12 ========================================== reduce in RAT : 2/3 + -1/4 . rewrites: 5 result PosRat: 5/12 ========================================== reduce in RAT : trunc(13/12) . rewrites: 2 result NzNat: 1 ========================================== reduce in RAT : trunc(-13/12) . rewrites: 2 result NzInt: -1 ========================================== reduce in RAT : frac(13/12) . rewrites: 2 result PosRat: 1/12 ========================================== reduce in RAT : frac(-13/12) . rewrites: 2 result NzRat: -1/12 ========================================== reduce in RAT : floor(13/12) . rewrites: 2 result NzNat: 1 ========================================== reduce in RAT : floor(-13/12) . rewrites: 5 result NzInt: -2 ========================================== reduce in RAT : ceiling(13/12) . rewrites: 4 result NzNat: 2 ========================================== reduce in RAT : ceiling(-13/12) . rewrites: 3 result NzInt: -1 ========================================== reduce in RAT : 1/3 + 2/3 . rewrites: 6 result NzNat: 1 ========================================== reduce in RAT : 1/4 divides 1/2 . rewrites: 7 result Bool: true ========================================== reduce in RAT : 1/4 divides 1/12 . rewrites: 5 result Bool: false ========================================== reduce in RAT : 2/3 divides 3/2 . rewrites: 6 result Bool: false ========================================== reduce in RAT : 2/3 divides 4/3 . rewrites: 5 result Bool: true ========================================== reduce in RAT : 2/3 divides 5 . rewrites: 3 result Bool: false ========================================== reduce in RAT : 5 quo 2/3 . rewrites: 3 result NzNat: 7 ========================================== reduce in RAT : -5 quo 2/3 . rewrites: 3 result NzInt: -7 ========================================== reduce in RAT : -5 quo -2/3 . rewrites: 3 result NzNat: 7 ========================================== reduce in RAT : 5 quo -2/3 . rewrites: 3 result NzInt: -7 ========================================== reduce in RAT : 1 quo 3/100 . rewrites: 3 result NzNat: 33 ========================================== reduce in RAT : 5 rem 2/3 . rewrites: 3 result PosRat: 1/3 ========================================== reduce in RAT : -5 rem 2/3 . rewrites: 3 result NzRat: -1/3 ========================================== reduce in RAT : -5 rem -2/3 . rewrites: 3 result NzRat: -1/3 ========================================== reduce in RAT : 5 rem -2/3 . rewrites: 3 result PosRat: 1/3 ========================================== reduce in RAT : 3 rem 2 . rewrites: 1 result NzNat: 1 ========================================== reduce in RAT : -3 rem 2 . rewrites: 1 result NzInt: -1 ========================================== reduce in RAT : 3 rem -2 . rewrites: 1 result NzNat: 1 ========================================== reduce in RAT : -3 rem -2 . rewrites: 1 result NzInt: -1 ========================================== reduce in RAT : 1 rem 3/100 . rewrites: 3 result PosRat: 1/100 ========================================== reduce in RAT : 1 rem 7/100 . rewrites: 4 result PosRat: 1/50 ========================================== reduce in RAT : 1 rem 13/100 . rewrites: 3 result PosRat: 9/100 ========================================== reduce in RAT : gcd(1/2, 1/3) . rewrites: 8 result PosRat: 1/6 ========================================== reduce in RAT : gcd(0, 1/2) . rewrites: 3 result PosRat: 1/2 ========================================== reduce in RAT : gcd(1/2, 5/6, 9/13) . rewrites: 17 result PosRat: 1/78 ========================================== reduce in RAT : lcm(1/2, 1/3) . rewrites: 8 result NzNat: 1 ========================================== reduce in RAT : lcm(1/2, 2/3) . rewrites: 8 result NzNat: 2 ========================================== reduce in RAT : lcm(1/2, 1/6) . rewrites: 8 result PosRat: 1/2 ========================================== reduce in RAT : lcm(0, 1/2) . rewrites: 4 result Zero: 0 ========================================== reduce in RAT-BENCH : f(100) . rewrites: 818 result PosRat: 117699997793868264083012417974975201679417/69720375229712477164533808935312303556800 ========================================== reduce in RAT-BENCH : g(100) . rewrites: 748 result PosRat: 1/101 fmod FOO is sorts Bool Zero NzNat Nat NzInt Int PosRat NzRat Rat . subsorts Zero NzNat NzNat < Nat . subsort NzNat < NzInt . subsorts NzInt Nat NzInt < Int . subsort NzNat < PosRat . subsorts NzInt PosRat < NzRat . subsorts NzRat Int < Rat . op if_then_else_fi : Bool Universal Universal -> Universal [poly (2 3 0) prec 0 gather (& & &) special ( id-hook BranchSymbol term-hook 1 (true) term-hook 2 (false))] . op _==_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (true) term-hook notEqualTerm (false))] . op _=/=_ : Universal Universal -> Bool [poly (1 2) prec 51 gather (E E) special ( id-hook EqualitySymbol term-hook equalTerm (false) term-hook notEqualTerm (true))] . op true : -> Bool [ctor special ( id-hook SystemTrue)] . op false : -> Bool [ctor special ( id-hook SystemFalse)] . op _and_ : Bool Bool -> Bool [assoc comm prec 55 gather (e E)] . op _or_ : Bool Bool -> Bool [assoc comm prec 59 gather (e E)] . op _xor_ : Bool Bool -> Bool [assoc comm prec 57 gather (e E)] . op not_ : Bool -> Bool [prec 53 gather (E)] . op _implies_ : Bool Bool -> Bool [prec 61 gather (e E)] . op 0 : -> Zero [ctor] . op s_ : Nat -> NzNat [ctor iter prec 15 gather (E) special ( id-hook SuccSymbol term-hook zeroTerm (0))] . op _+_ : NzNat Nat -> NzNat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Nat Nat -> Nat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Int Int -> Int [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : PosRat PosRat -> PosRat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : PosRat Nat -> PosRat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _+_ : Rat Rat -> Rat [assoc comm prec 33 gather (e E) special ( id-hook ACU_NumberOpSymbol (+) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op sd : Nat Nat -> Nat [comm special ( id-hook CUI_NumberOpSymbol (sd) op-hook succSymbol (s_ : Nat ~> NzNat))] . op _*_ : NzNat NzNat -> NzNat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Nat Nat -> Nat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzInt NzInt -> NzInt [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Int Int -> Int [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : PosRat PosRat -> PosRat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : NzRat NzRat -> NzRat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _*_ : Rat Rat -> Rat [assoc comm prec 31 gather (e E) special ( id-hook ACU_NumberOpSymbol (*) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : PosRat PosRat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _quo_ : Rat NzRat -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (quo) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Nat NzNat -> Nat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Int NzInt -> Int [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _rem_ : Rat NzRat -> Rat [prec 31 gather (E e) special ( id-hook NumberOpSymbol (rem) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Nat Nat -> Nat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzNat Nat -> NzNat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Int Nat -> Int [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzInt Nat -> NzInt [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : PosRat Nat -> PosRat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : NzRat Nat -> NzRat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _^_ : Rat Nat -> Rat [prec 29 gather (E e) special ( id-hook NumberOpSymbol (^) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op modExp : [Rat] [Rat] [Rat] -> [Rat] [special ( id-hook NumberOpSymbol (modExp) op-hook succSymbol (s_ : Nat ~> NzNat))] . op gcd : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzInt Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : NzRat Rat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op gcd : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (gcd) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzInt NzInt -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Int Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : NzRat NzRat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op lcm : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (lcm) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzNat NzNat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : PosRat PosRat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : NzRat NzRat -> NzRat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op min : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (min) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Nat -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Nat -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzInt NzInt -> NzInt [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Int Int -> Int [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzNat Int -> NzNat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Nat Int -> Nat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : PosRat Rat -> PosRat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : NzRat NzRat -> NzRat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op max : Rat Rat -> Rat [assoc comm special ( id-hook ACU_NumberOpSymbol (max) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Nat Nat -> Nat [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _xor_ : Int Int -> Int [assoc comm prec 55 gather (e E) special ( id-hook ACU_NumberOpSymbol (xor) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Nat -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Nat Int -> Nat [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _&_ : Int Int -> Int [assoc comm prec 53 gather (e E) special ( id-hook ACU_NumberOpSymbol (&) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzNat Nat -> NzNat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Nat Nat -> Nat [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : NzInt Int -> NzInt [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _|_ : Int Int -> Int [assoc comm prec 57 gather (e E) special ( id-hook ACU_NumberOpSymbol (|) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _>>_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (>>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Nat Nat -> Nat [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<<_ : Int Nat -> Int [prec 35 gather (E e) special ( id-hook NumberOpSymbol (<<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _<_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _<=_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (<=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Nat Nat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Int Int -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _>=_ : Rat Rat -> Bool [prec 37 gather (E E) special ( id-hook NumberOpSymbol (>=) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzNat Nat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzInt Int -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op _divides_ : NzRat Rat -> Bool [prec 51 gather (E E) special ( id-hook NumberOpSymbol (divides) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt) term-hook trueTerm (true) term-hook falseTerm (false))] . op -_ : NzNat -> NzInt [ctor prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzInt -> NzInt [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Int -> Int [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : NzRat -> NzRat [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op -_ : Rat -> Rat [prec 15 gather (E) special ( id-hook MinusSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Int Int -> Int [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _-_ : Rat Rat -> Rat [prec 33 gather (E e) special ( id-hook NumberOpSymbol (-) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzInt -> NzNat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Int -> Nat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : NzRat -> PosRat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op abs : Rat -> Rat [special ( id-hook NumberOpSymbol (abs) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op ~_ : Int -> Int [prec 15 gather (E) special ( id-hook NumberOpSymbol (~) op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzInt NzNat -> NzRat [ctor prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzNat NzNat -> PosRat [ctor prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : PosRat PosRat -> PosRat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : NzRat NzRat -> NzRat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op _/_ : Rat NzRat -> Rat [prec 31 gather (E e) special ( id-hook DivisionSymbol op-hook succSymbol (s_ : Nat ~> NzNat) op-hook minusSymbol (-_ : NzNat ~> NzInt))] . op trunc : PosRat -> Nat . op trunc : Rat -> Int . op frac : Rat -> Rat . op floor : PosRat -> Nat . op floor : Rat -> Int . op ceiling : PosRat -> NzNat . op ceiling : Rat -> Int . op a : -> Rat . op b : -> Rat . op c : -> Rat . op d : -> Rat . op e : -> Rat . eq a = 42 . eq b = -42 . eq c = -42/1 . eq d = -42/29 . eq true and A:Bool = A:Bool . eq false and A:Bool = false . eq A:Bool and A:Bool = A:Bool . eq false xor A:Bool = A:Bool . eq A:Bool xor A:Bool = false . eq A:Bool and (B:Bool xor C:Bool) = A:Bool and B:Bool xor A:Bool and C:Bool . eq not A:Bool = true xor A:Bool . eq A:Bool or B:Bool = A:Bool and B:Bool xor A:Bool xor B:Bool . eq A:Bool implies B:Bool = not (A:Bool xor A:Bool and B:Bool) . eq 0 / Q:NzRat = 0 . eq I:NzInt / - N:NzNat = - I:NzInt / N:NzNat . eq I:NzInt / N:NzNat / (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) / (J:NzInt * N:NzNat) . eq I:NzInt / N:NzNat / J:NzInt = I:NzInt / (J:NzInt * N:NzNat) . eq I:NzInt / (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) / J:NzInt . eq - (I:NzInt / N:NzNat) = - I:NzInt / N:NzNat . eq I:NzInt / N:NzNat + J:NzInt / M:NzNat = (I:NzInt * M:NzNat + J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq K:Int + I:NzInt / N:NzNat = (I:NzInt + N:NzNat * K:Int) / N:NzNat . eq I:NzInt / N:NzNat - J:NzInt / M:NzNat = (I:NzInt * M:NzNat - J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq I:NzInt / N:NzNat - K:Int = (I:NzInt - N:NzNat * K:Int) / N:NzNat . eq K:Int - J:NzInt / M:NzNat = (M:NzNat * K:Int - J:NzInt) / M:NzNat . eq 0 * Q:NzRat = 0 . eq (I:NzInt / N:NzNat) * (J:NzInt / M:NzNat) = (I:NzInt * J:NzInt) / (N:NzNat * M:NzNat) . eq K:Int * (I:NzInt / N:NzNat) = (I:NzInt * K:Int) / N:NzNat . eq I:NzInt / N:NzNat quo Q:NzRat = I:NzInt quo (Q:NzRat * N:NzNat) . eq K:Int quo (J:NzInt / M:NzNat) = (M:NzNat * K:Int) quo J:NzInt . eq I:NzInt / N:NzNat rem (J:NzInt / M:NzNat) = (I:NzInt * M:NzNat) rem ( J:NzInt * N:NzNat) / (N:NzNat * M:NzNat) . eq K:Int rem (J:NzInt / M:NzNat) = (M:NzNat * K:Int) rem J:NzInt / M:NzNat . eq I:NzInt / N:NzNat rem J:NzInt = I:NzInt rem (J:NzInt * N:NzNat) / N:NzNat . eq (I:NzInt / N:NzNat) ^ Z:Nat = I:NzInt ^ Z:Nat / N:NzNat ^ Z:Nat . eq abs(I:NzInt / N:NzNat) = abs(I:NzInt) / N:NzNat . eq gcd(R:Rat, I:NzInt / N:NzNat) = gcd(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq lcm(R:Rat, I:NzInt / N:NzNat) = lcm(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq min(R:Rat, I:NzInt / N:NzNat) = min(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq max(R:Rat, I:NzInt / N:NzNat) = max(I:NzInt, N:NzNat * R:Rat) / N:NzNat . eq I:NzInt / N:NzNat < J:NzInt / M:NzNat = I:NzInt * M:NzNat < J:NzInt * N:NzNat . eq I:NzInt / N:NzNat < K:Int = I:NzInt < N:NzNat * K:Int . eq K:Int < J:NzInt / M:NzNat = M:NzNat * K:Int < J:NzInt . eq I:NzInt / N:NzNat <= J:NzInt / M:NzNat = I:NzInt * M:NzNat <= J:NzInt * N:NzNat . eq I:NzInt / N:NzNat <= K:Int = I:NzInt <= N:NzNat * K:Int . eq K:Int <= J:NzInt / M:NzNat = M:NzNat * K:Int <= J:NzInt . eq I:NzInt / N:NzNat > J:NzInt / M:NzNat = I:NzInt * M:NzNat > J:NzInt * N:NzNat . eq I:NzInt / N:NzNat > K:Int = I:NzInt > N:NzNat * K:Int . eq K:Int > J:NzInt / M:NzNat = M:NzNat * K:Int > J:NzInt . eq I:NzInt / N:NzNat >= J:NzInt / M:NzNat = I:NzInt * M:NzNat >= J:NzInt * N:NzNat . eq I:NzInt / N:NzNat >= K:Int = I:NzInt >= N:NzNat * K:Int . eq K:Int >= J:NzInt / M:NzNat = M:NzNat * K:Int >= J:NzInt . eq I:NzInt / N:NzNat divides K:Int = I:NzInt divides N:NzNat * K:Int . eq Q:NzRat divides J:NzInt / M:NzNat = Q:NzRat * M:NzNat divides J:NzInt . eq trunc(K:Int) = K:Int . eq trunc(I:NzInt / N:NzNat) = I:NzInt quo N:NzNat . eq frac(K:Int) = 0 . eq frac(I:NzInt / N:NzNat) = I:NzInt rem N:NzNat / N:NzNat . eq floor(K:Int) = K:Int . eq ceiling(K:Int) = K:Int . eq floor(N:NzNat / M:NzNat) = N:NzNat quo M:NzNat . eq ceiling(N:NzNat / M:NzNat) = ((N:NzNat + M:NzNat) - 1) quo M:NzNat . eq floor(- N:NzNat / M:NzNat) = - ceiling(N:NzNat / M:NzNat) . eq ceiling(- N:NzNat / M:NzNat) = - floor(N:NzNat / M:NzNat) . endfm Bye. Maude-Maude3.5.1/tests/BuiltIn/rat0000775000175000017510000000031015036121435016276 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/rat.maude -no-banner -no-advise \ > rat.out 2>&1 diff $srcdir/rat.expected rat.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/BuiltIn/nat.maude0000664000175000017510000000331015036121435017364 0ustar nileshnileshset show timing off . set show advisories off . select NAT . red s 0 + s s 0 . red s 0 + s 0 . red _+_(s 0, N:Nat, s 0) . red sd(s s 0, s s s 0) . red sd(s_^3(0), s_^10(0)) . red sd(s_^10(0), s_^4(0)) . red s 0 * s s 0 . red s 0 * s 0 . red s_^10(0) quo s_^4(0) . red s_^10(0) rem s_^4(0) . red s_^10(0) ^ s_^4(0) . red modExp(s_^37(0), s_^1000000000000002(0), s_^100(0)) . red modExp(s_^37(0), s_^1000000000000002(0), s_^1000003(0)) . red modExp(s_^100200300400(0), s_^1000000000000002(0), s_^1000003(0)) . red gcd(gcd(s_^120(0), X:Nat), gcd(s_^140(0), Y:Nat)) . red gcd(s_^124(0), s_^346(0), s_^768(0)) . red lcm(lcm(s_^120(0), X:Nat), lcm(s_^140(0), Y:Nat)) . red lcm(s_^124(0), s_^346(0), s_^768(0)) . red s 0 xor s s 0 . red s 0 xor s 0 . red s 0 & s s 0 . red s 0 & s 0 . red s 0 | s s 0 . red s 0 | s 0 . red s 0 << s s s 0 . red s_^128(0) >> s s s 0 . red s 0 < s s 0 . red s 0 < s 0 . red s 0 <= s s 0 . red s 0 <= s 0 . red s 0 > s s 0 . red s 0 > s 0 . red s 0 >= s s 0 . red s 0 >= s 0 . red s_^3(0) divides s_^10(0) . red s_^3(0) divides s_^9(0) . fmod FACT is inc NAT . op _! : Nat -> NzNat . var N : Nat . eq 0 ! = s 0 . eq (s N) ! = s N * N ! . endfm red s_^100(0) ! . red s_^1000(0) ! . fmod MOD3 is inc NAT . eq s_^3(0) = 0 . endfm red s_^4(0) . fmod FACT' is inc NAT . op _! : Nat -> NzNat . var N : Nat . eq 0 ! = 1 . eq (s N) ! = (s N) * N ! . endfm red 100 ! . red 1000 ! . fmod MOD3' is inc NAT . eq 3 = 0 . endfm red 4445 . select NAT . red 8888888888888888888888888888888888888888888888888888888 . red s_^123456789(s_^123456789(0)) . select NAT . set print graph on . red 123 . set trace on . set trace whole on . red 4 + 5 . set trace off . set print graph off . Maude-Maude3.5.1/tests/BuiltIn/nat.expected0000664000175000017510000002633415036121435020105 0ustar nileshnilesh========================================== reduce in NAT : 1 + 2 . rewrites: 1 result NzNat: 3 ========================================== reduce in NAT : 1 + 1 . rewrites: 1 result NzNat: 2 ========================================== reduce in NAT : N:Nat + 1 + 1 . rewrites: 1 result NzNat: N:Nat + 2 ========================================== reduce in NAT : sd(2, 3) . rewrites: 1 result NzNat: 1 ========================================== reduce in NAT : sd(3, 10) . rewrites: 1 result NzNat: 7 ========================================== reduce in NAT : sd(4, 10) . rewrites: 1 result NzNat: 6 ========================================== reduce in NAT : 1 * 2 . rewrites: 1 result NzNat: 2 ========================================== reduce in NAT : 1 * 1 . rewrites: 1 result NzNat: 1 ========================================== reduce in NAT : 10 quo 4 . rewrites: 1 result NzNat: 2 ========================================== reduce in NAT : 10 rem 4 . rewrites: 1 result NzNat: 2 ========================================== reduce in NAT : 10 ^ 4 . rewrites: 1 result NzNat: 10000 ========================================== reduce in NAT : modExp(37, 1000000000000002, 100) . rewrites: 1 result NzNat: 69 ========================================== reduce in NAT : modExp(37, 1000000000000002, 1000003) . rewrites: 1 result NzNat: 929564 ========================================== reduce in NAT : modExp(100200300400, 1000000000000002, 1000003) . rewrites: 1 result NzNat: 85562 ========================================== reduce in NAT : gcd(gcd(X:Nat, 120), gcd(Y:Nat, 140)) . rewrites: 1 result NzNat: gcd(X:Nat, Y:Nat, 20) ========================================== reduce in NAT : gcd(124, 346, 768) . rewrites: 1 result NzNat: 2 ========================================== reduce in NAT : lcm(lcm(X:Nat, 120), lcm(Y:Nat, 140)) . rewrites: 1 result Nat: lcm(X:Nat, Y:Nat, 840) ========================================== reduce in NAT : lcm(124, 346, 768) . rewrites: 1 result NzNat: 4118784 ========================================== reduce in NAT : 1 xor 2 . rewrites: 1 result NzNat: 3 ========================================== reduce in NAT : 1 xor 1 . rewrites: 1 result Zero: 0 ========================================== reduce in NAT : 1 & 2 . rewrites: 1 result Zero: 0 ========================================== reduce in NAT : 1 & 1 . rewrites: 1 result NzNat: 1 ========================================== reduce in NAT : 1 | 2 . rewrites: 1 result NzNat: 3 ========================================== reduce in NAT : 1 | 1 . rewrites: 1 result NzNat: 1 ========================================== reduce in NAT : 1 << 3 . rewrites: 1 result NzNat: 8 ========================================== reduce in NAT : 128 >> 3 . rewrites: 1 result NzNat: 16 ========================================== reduce in NAT : 1 < 2 . rewrites: 1 result Bool: true ========================================== reduce in NAT : 1 < 1 . rewrites: 1 result Bool: false ========================================== reduce in NAT : 1 <= 2 . rewrites: 1 result Bool: true ========================================== reduce in NAT : 1 <= 1 . rewrites: 1 result Bool: true ========================================== reduce in NAT : 1 > 2 . rewrites: 1 result Bool: false ========================================== reduce in NAT : 1 > 1 . rewrites: 1 result Bool: false ========================================== reduce in NAT : 1 >= 2 . rewrites: 1 result Bool: false ========================================== reduce in NAT : 1 >= 1 . rewrites: 1 result Bool: true ========================================== reduce in NAT : 3 divides 10 . rewrites: 1 result Bool: false ========================================== reduce in NAT : 3 divides 9 . rewrites: 1 result Bool: true ========================================== reduce in FACT : 100 ! . rewrites: 201 result NzNat: 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 ========================================== reduce in FACT : 1000 ! . rewrites: 2001 result NzNat: 402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ========================================== reduce in MOD3 : 4 . rewrites: 1 result NzNat: 1 ========================================== reduce in FACT' : 100 ! . rewrites: 201 result NzNat: 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 ========================================== reduce in FACT' : 1000 ! . rewrites: 2001 result NzNat: 402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ========================================== reduce in MOD3' : 4445 . rewrites: 1481 result NzNat: 2 ========================================== reduce in NAT : 8888888888888888888888888888888888888888888888888888888 . rewrites: 0 result NzNat: 8888888888888888888888888888888888888888888888888888888 ========================================== reduce in NAT : 246913578 . rewrites: 0 result NzNat: 246913578 ========================================== reduce in NAT : Begin{Graph Representation} [Term has 2 operator symbols while graph has 2 nodes.] #0 = s_^123(#1) #1 = 0 End{Graph Representation} . rewrites: 0 result NzNat: Begin{Graph Representation} [Term has 2 operator symbols while graph has 2 nodes.] #0 = s_^123(#1) #1 = 0 End{Graph Representation} ========================================== reduce in NAT : Begin{Graph Representation} [Term has 5 operator symbols while graph has 4 nodes.] #0 = _+_(#1, #3) #1 = s_^4(#2) #2 = 0 #3 = s_^5(#2) End{Graph Representation} . *********** equation (built-in equation for symbol _+_) Old: Begin{Graph Representation} [Term has 5 operator symbols while graph has 4 nodes.] #0 = _+_(#1, #3) #1 = s_^4(#2) #2 = 0 #3 = s_^5(#2) End{Graph Representation} Begin{Graph Representation} [Term has 5 operator symbols while graph has 4 nodes.] #0 = _+_(#1, #3) #1 = s_^4(#2) #2 = 0 #3 = s_^5(#2) End{Graph Representation} ---> Begin{Graph Representation} [Term has 2 operator symbols while graph has 2 nodes.] #0 = s_^9(#1) #1 = 0 End{Graph Representation} New: Begin{Graph Representation} [Term has 2 operator symbols while graph has 2 nodes.] #0 = s_^9(#1) #1 = 0 End{Graph Representation} rewrites: 1 result NzNat: Begin{Graph Representation} [Term has 2 operator symbols while graph has 2 nodes.] #0 = s_^9(#1) #1 = 0 End{Graph Representation} Bye. Maude-Maude3.5.1/tests/BuiltIn/nat0000775000175000017510000000031015036121435016272 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/nat.maude -no-banner -no-advise \ > nat.out 2>&1 diff $srcdir/nat.expected nat.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/BuiltIn/int.maude0000664000175000017510000000277015036121435017405 0ustar nileshnileshset show timing off . set show advisories off . select INT . red - - s 0 . red - 0 . red - s_^2(0) + s_^5(0) . red s_^10(0) + - s_(0) . red s_^10(0) + - s_^11(0) . red - s_^2(0) * s_^5(0) . red s_^10(0) - s_^11(0) . red s 0 * - s s 0 . red s 0 * - s 0 . red s_^10(0) quo - s_^4(0) . red - s_^10(0) rem s_^4(0) . red - s_^10(0) ^ s_^4(0) . red - s_^2(0) ^ s_^7(0) . red s_^2(0) ^ s_^7(0) . red abs(- s_^140(0)) . red abs(s_^140(0)) . red gcd(gcd(- s_^120(0), X:Nat), gcd(- s_^140(0), Y:Nat)) . red gcd(s_^124(0), - s_^346(0), s_^768(0)) . red gcd(- s_^10(0), s_^8(0)) . red lcm(lcm(- s_^120(0), X:Nat), lcm(- s_^140(0), Y:Nat)) . red lcm(s_^124(0), - s_^346(0), s_^768(0)) . red lcm(- s_^10(0), - s_^8(0)) . red s 0 xor - s s 0 . red s 0 xor - s 0 . red - s 0 xor s 0 . red s 0 & - s s 0 . red s 0 & - s 0 . red - s 0 & s 0 . red s 0 | - s s 0 . red s 0 | - s 0 . red - s s 0 | s 0 . red - s 0 << s s s 0 . red - s_^128(0) >> s s s 0 . red s 0 < - s s 0 . red - s 0 < s 0 . red s 0 <= - s s 0 . red - s 0 <= s 0 . red - s 0 > s s 0 . red s 0 > - s 0 . red s 0 >= - s s 0 . red - s 0 >= s 0 . red - s_^3(0) divides s_^10(0) . red s_^3(0) divides - s_^9(0) . red 1 . red -1 . red 2 + -1 . red -8888888888888888888888888888888888888888888888888888888 . red -42 . set print number off . red - 0 . red 2 ^ 200000000000000000000 . red 1 ^ 200000000000000000000 . red -1 ^ 200000000000000000000 . red -1 ^ 200000000000000000001 . red 0 ^ 200000000000000000001 . red 1 << 200000000000000000001 . red 0 << 200000000000000000001 . Maude-Maude3.5.1/tests/BuiltIn/int.expected0000664000175000017510000001353415036121435020113 0ustar nileshnilesh========================================== reduce in INT : - -1 . rewrites: 1 result NzNat: 1 ========================================== reduce in INT : - 0 . rewrites: 1 result Zero: 0 ========================================== reduce in INT : 5 + -2 . rewrites: 1 result NzNat: 3 ========================================== reduce in INT : 10 + -1 . rewrites: 1 result NzNat: 9 ========================================== reduce in INT : 10 + -11 . rewrites: 1 result NzInt: -1 ========================================== reduce in INT : 5 * -2 . rewrites: 1 result NzInt: -10 ========================================== reduce in INT : 10 - 11 . rewrites: 1 result NzInt: -1 ========================================== reduce in INT : 1 * -2 . rewrites: 1 result NzInt: -2 ========================================== reduce in INT : 1 * -1 . rewrites: 1 result NzInt: -1 ========================================== reduce in INT : 10 quo -4 . rewrites: 1 result NzInt: -2 ========================================== reduce in INT : -10 rem 4 . rewrites: 1 result NzInt: -2 ========================================== reduce in INT : -10 ^ 4 . rewrites: 1 result NzNat: 10000 ========================================== reduce in INT : -2 ^ 7 . rewrites: 1 result NzInt: -128 ========================================== reduce in INT : 2 ^ 7 . rewrites: 1 result NzNat: 128 ========================================== reduce in INT : abs(-140) . rewrites: 1 result NzNat: 140 ========================================== reduce in INT : abs(140) . rewrites: 1 result NzNat: 140 ========================================== reduce in INT : gcd(gcd(X:Nat, -120), gcd(Y:Nat, -140)) . rewrites: 1 result NzNat: gcd(X:Nat, Y:Nat, 20) ========================================== reduce in INT : gcd(124, 768, -346) . rewrites: 1 result NzNat: 2 ========================================== reduce in INT : gcd(8, -10) . rewrites: 1 result NzNat: 2 ========================================== reduce in INT : lcm(lcm(X:Nat, -120), lcm(Y:Nat, -140)) . rewrites: 1 result Nat: lcm(X:Nat, Y:Nat, 840) ========================================== reduce in INT : lcm(124, 768, -346) . rewrites: 1 result NzNat: 4118784 ========================================== reduce in INT : lcm(-8, -10) . rewrites: 1 result NzNat: 40 ========================================== reduce in INT : 1 xor -2 . rewrites: 1 result NzInt: -1 ========================================== reduce in INT : 1 xor -1 . rewrites: 1 result NzInt: -2 ========================================== reduce in INT : 1 xor -1 . rewrites: 1 result NzInt: -2 ========================================== reduce in INT : 1 & -2 . rewrites: 1 result Zero: 0 ========================================== reduce in INT : 1 & -1 . rewrites: 1 result NzNat: 1 ========================================== reduce in INT : 1 & -1 . rewrites: 1 result NzNat: 1 ========================================== reduce in INT : 1 | -2 . rewrites: 1 result NzInt: -1 ========================================== reduce in INT : 1 | -1 . rewrites: 1 result NzInt: -1 ========================================== reduce in INT : 1 | -2 . rewrites: 1 result NzInt: -1 ========================================== reduce in INT : -1 << 3 . rewrites: 1 result NzInt: -8 ========================================== reduce in INT : -128 >> 3 . rewrites: 1 result NzInt: -16 ========================================== reduce in INT : 1 < -2 . rewrites: 1 result Bool: false ========================================== reduce in INT : -1 < 1 . rewrites: 1 result Bool: true ========================================== reduce in INT : 1 <= -2 . rewrites: 1 result Bool: false ========================================== reduce in INT : -1 <= 1 . rewrites: 1 result Bool: true ========================================== reduce in INT : -1 > 2 . rewrites: 1 result Bool: false ========================================== reduce in INT : 1 > -1 . rewrites: 1 result Bool: true ========================================== reduce in INT : 1 >= -2 . rewrites: 1 result Bool: true ========================================== reduce in INT : -1 >= 1 . rewrites: 1 result Bool: false ========================================== reduce in INT : -3 divides 10 . rewrites: 1 result Bool: false ========================================== reduce in INT : 3 divides -9 . rewrites: 1 result Bool: true ========================================== reduce in INT : 1 . rewrites: 0 result NzNat: 1 ========================================== reduce in INT : -1 . rewrites: 0 result NzInt: -1 ========================================== reduce in INT : 2 + -1 . rewrites: 1 result NzNat: 1 ========================================== reduce in INT : -8888888888888888888888888888888888888888888888888888888 . rewrites: 0 result NzInt: -8888888888888888888888888888888888888888888888888888888 ========================================== reduce in INT : -42 . rewrites: 0 result NzInt: -42 ========================================== reduce in INT : - 0 . rewrites: 1 result Zero: 0 ========================================== reduce in INT : s_^2(0) ^ s_^200000000000000000000(0) . rewrites: 0 result NzNat: s_^2(0) ^ s_^200000000000000000000(0) ========================================== reduce in INT : s 0 ^ s_^200000000000000000000(0) . rewrites: 1 result NzNat: s 0 ========================================== reduce in INT : - s 0 ^ s_^200000000000000000000(0) . rewrites: 1 result NzNat: s 0 ========================================== reduce in INT : - s 0 ^ s_^200000000000000000001(0) . rewrites: 1 result NzInt: - s 0 ========================================== reduce in INT : 0 ^ s_^200000000000000000001(0) . rewrites: 1 result Zero: 0 ========================================== reduce in INT : s 0 << s_^200000000000000000001(0) . rewrites: 0 result Nat: s 0 << s_^200000000000000000001(0) ========================================== reduce in INT : 0 << s_^200000000000000000001(0) . rewrites: 1 result Zero: 0 Bye. Maude-Maude3.5.1/tests/BuiltIn/int0000775000175000017510000000031015036121435016302 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/int.maude -no-banner -no-advise \ > int.out 2>&1 diff $srcdir/int.expected int.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/BuiltIn/counters.maude0000664000175000017510000000335315036121435020453 0ustar nileshnileshset show timing off . set show advisories off . mod COUNTER-TEST is inc COUNTER . sort List . subsort Nat < List . op __ : List List -> List [assoc id: nil] . op nil : -> List . op f : Nat -> List . var N : Nat . eq f(s N) = counter f(N) . eq f(0) = nil . endm rew counter . rew f(11) . rew f(11) . set clear rules off . rew f(11) . set clear rules on . rew f(11) . mod COUNTER-TEST2 is inc COUNTER . inc RANDOM . sort List . subsort Nat < List . op __ : List List -> List [assoc id: nil] . op nil : -> List . op f : Nat -> List . var N : Nat . eq f(s N) = random(counter) f(N) . eq f(0) = nil . endm rew random(counter) . rew f(11) . rew f(100) . mod FOO is sort Foo . ops a b c d e : -> Foo . rl a => b . rl a => c . rl a => d . rl a => e . endm rew a . rew a . set clear rules off . rew a . rew a . rew a . rew a . set clear rules on . rew a . mod COUNTER-TEST3 is inc COUNTER . sort List . subsort Nat < List . op __ : List List -> List [assoc id: nil] . op nil : -> List . op f : Nat -> List . var N : Nat . eq f(s N) = counter f(N) . eq f(0) = nil . endm debug rew f(4) . step . step . step . step . step . step . step . rew counter . resume . debug frew f(4) . step . step . step . step . step . step . step . rew counter . resume . rew [4] f(8) . cont . mod COUNTER-TEST4 is inc COUNTER . inc COUNTER * (op counter to counter2) . sort List . subsort Nat < List . op __ : List List -> List [assoc id: nil] . op nil : -> List . op f : Nat -> List . var N : Nat . eq f(s N) = counter (counter2 f(N)) . eq f(0) = nil . endm rew f(4) . search f(4) =>* L:List . red in META-LEVEL : metaRewrite(['COUNTER-TEST4], '__['counter.Nat, 'counter.Nat], 2) . Maude-Maude3.5.1/tests/BuiltIn/counters.expected0000664000175000017510000001156715036121435021167 0ustar nileshnilesh========================================== rewrite in COUNTER-TEST : counter . rewrites: 1 result Zero: 0 ========================================== rewrite in COUNTER-TEST : f(11) . rewrites: 23 result List: 0 1 2 3 4 5 6 7 8 9 10 ========================================== rewrite in COUNTER-TEST : f(11) . rewrites: 23 result List: 0 1 2 3 4 5 6 7 8 9 10 ========================================== rewrite in COUNTER-TEST : f(11) . rewrites: 23 result List: 11 12 13 14 15 16 17 18 19 20 21 ========================================== rewrite in COUNTER-TEST : f(11) . rewrites: 23 result List: 0 1 2 3 4 5 6 7 8 9 10 ========================================== rewrite in COUNTER-TEST2 : random(counter) . rewrites: 2 result NzNat: 2357136044 ========================================== rewrite in COUNTER-TEST2 : f(11) . rewrites: 34 result List: 2357136044 2546248239 3071714933 3626093760 2588848963 3684848379 2340255427 3638918503 1819583497 2678185683 2774094101 ========================================== rewrite in COUNTER-TEST2 : f(100) . rewrites: 301 result List: 2357136044 2546248239 3071714933 3626093760 2588848963 3684848379 2340255427 3638918503 1819583497 2678185683 2774094101 1650906866 1879422756 1277901399 3830135878 243580376 4138900056 1171049868 1646868794 2051556033 3400433126 3488238119 2271586391 2061486254 2439732824 1686997841 3975407269 3590930969 305097549 1449105480 374217481 2783877012 86837363 1581585360 3576074995 4110950085 3342157822 602801999 3736673711 3736996288 4203133778 2034131043 3432359896 3439885489 1982038771 2235433757 3352347283 2915765395 507984782 3095093671 2748439840 2499755969 615697673 2308000441 4057322111 3258229280 2241321503 454869706 1780959476 2034098327 1136257699 800291326 3325308363 3165039474 1959150775 930076700 2441405218 580757632 80701568 1392175012 2652724277 642848645 2628931110 954863080 2649711348 1659957521 4053367119 3876630916 2928395881 1932520490 1544074682 2633087519 1877037944 3875557633 2996303169 426405863 258666409 4165298233 2863741219 2805215078 2880367735 734051083 903586222 1538251858 553734235 3224172416 1354754446 2610612835 1562125877 1396067212 ========================================== rewrite in FOO : a . rewrites: 1 result Foo: b ========================================== rewrite in FOO : a . rewrites: 1 result Foo: b ========================================== rewrite in FOO : a . rewrites: 1 result Foo: c ========================================== rewrite in FOO : a . rewrites: 1 result Foo: d ========================================== rewrite in FOO : a . rewrites: 1 result Foo: e ========================================== rewrite in FOO : a . rewrites: 1 result Foo: b ========================================== rewrite in FOO : a . rewrites: 1 result Foo: b ========================================== debug rewrite in COUNTER-TEST3 : f(4) . *********** equation eq f(s N) = counter f(N) . N --> 3 f(4) ---> counter f(3) *********** equation eq f(s N) = counter f(N) . N --> 2 f(3) ---> counter f(2) *********** equation eq f(s N) = counter f(N) . N --> 1 f(2) ---> counter f(1) *********** equation eq f(s N) = counter f(N) . N --> 0 f(1) ---> counter f(0) *********** equation eq f(0) = nil . empty substitution f(0) ---> nil *********** rule (built-in rule for symbol counter) counter ---> 0 0 *********** rule (built-in rule for symbol counter) counter ---> 1 1 ========================================== rewrite in COUNTER-TEST3 : counter . rewrites: 1 result Zero: 0 rewrites: 9 result List: 0 1 1 2 ========================================== debug frewrite in COUNTER-TEST3 : f(4) . *********** equation eq f(s N) = counter f(N) . N --> 3 f(4) ---> counter f(3) *********** equation eq f(s N) = counter f(N) . N --> 2 f(3) ---> counter f(2) *********** equation eq f(s N) = counter f(N) . N --> 1 f(2) ---> counter f(1) *********** equation eq f(s N) = counter f(N) . N --> 0 f(1) ---> counter f(0) *********** equation eq f(0) = nil . empty substitution f(0) ---> nil *********** rule (built-in rule for symbol counter) counter ---> 0 0 *********** rule (built-in rule for symbol counter) counter ---> 1 1 ========================================== rewrite in COUNTER-TEST3 : counter . rewrites: 1 result Zero: 0 rewrites: 9 result List: 0 1 1 2 ========================================== rewrite [4] in COUNTER-TEST3 : f(8) . rewrites: 13 result [List]: 0 1 2 3 counter counter counter counter rewrites: 4 result List: 0 1 2 3 4 5 6 7 ========================================== rewrite in COUNTER-TEST4 : f(4) . rewrites: 13 result List: 0 0 1 1 2 2 3 3 ========================================== search in COUNTER-TEST4 : f(4) =>* L:List . No solution. states: 1 rewrites: 5 ========================================== reduce in META-LEVEL : metaRewrite(['COUNTER-TEST4], '__['counter.Nat, 'counter.Nat], 2) . rewrites: 4 result ResultPair: {'__['0.Zero, 's_['0.Zero]], 'List} Bye. Maude-Maude3.5.1/tests/BuiltIn/counters0000775000175000017510000000033415036121435017360 0ustar nileshnilesh#!/bin/sh MAUDE_LIB=$srcdir/../../src/Main export MAUDE_LIB ../../src/Main/maude \ < $srcdir/counters.maude -no-banner -no-advise \ > counters.out 2>&1 diff $srcdir/counters.expected counters.out > /dev/null 2>&1 Maude-Maude3.5.1/tests/BuiltIn/Makefile.am0000664000175000017510000000053715036121435017631 0ustar nileshnileshTESTS = \ nat \ int \ rat \ string \ counters \ stringOps MAUDE_FILES = \ nat.maude \ int.maude \ rat.maude \ string.maude \ counters.maude \ stringOps.maude RESULT_FILES = \ nat.expected \ int.expected \ rat.expected \ string.expected \ counters.expected \ stringOps.expected EXTRA_DIST = $(TESTS) $(MAUDE_FILES) $(RESULT_FILES) Maude-Maude3.5.1/src/0000775000175000017510000000000015036121435013647 5ustar nileshnileshMaude-Maude3.5.1/src/Variable/0000775000175000017510000000000015036121435015374 5ustar nileshnileshMaude-Maude3.5.1/src/Variable/variableTerm.hh0000664000175000017510000000544315036121435020340 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2024 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for variable terms. // #ifndef _variableTerm_hh_ #define _variableTerm_hh_ #include "term.hh" #include "namedEntity.hh" #include "variableSymbol.hh" class VariableTerm : public Term, public NamedEntity { NO_COPYING(VariableTerm); public: VariableTerm(VariableSymbol* symbol, int name); RawArgumentIterator* arguments() const; void deepSelfDestruct(); Term* deepCopy2(SymbolMap* translator) const; Term* normalize(bool full, bool& changed); int compareArguments(const Term* other) const; int compareArguments(const DagNode* other) const; void findEagerVariables(bool atTop, NatSet& eagerVariables) const; void analyseConstraintPropagation(NatSet& boundUniquely) const; LhsAutomaton* compileLhs2(bool matchAtTop, const VariableInfo& variableInfo, NatSet& boundUniquely, bool& subproblemLikely); void markEagerArguments(int nrVariables, const NatSet& eagerVariables, Vector& problemVariables); DagNode* dagify2(); void findAvailableTerms(TermBag& availableTerms, bool eagerContext, bool atTop); int compileRhs2(RhsBuilder& rhsBuilder, VariableInfo& variableInfo, TermBag& availableTerms, bool eagerContext); // // Optional stuff that is easy to define for variable terms. // bool subsumes(const Term* other, bool sameVariableSet) const; int partialCompareUnstable(const Substitution& partialSubstitution, DagNode* other) const; // // Needed because we actually do the instantiation of variables. // Term* instantiate2(const Vector& varBindings, SymbolMap* translator); // // Functions particular to variable terms. // Sort* getSort() const; int getIndex() const; void setIndex(int indx); private: int index; }; inline Sort* VariableTerm::getSort() const { return safeCastNonNull(symbol())->getSort(); } inline int VariableTerm::getIndex() const { return index; } inline void VariableTerm::setIndex(int indx) { index = indx; } #endif Maude-Maude3.5.1/src/Variable/variableTerm.cc0000664000175000017510000001143215036121435020321 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2024 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class VariableTerm. // // utility stuff #include "macros.hh" #include "vector.hh" // forward declarations #include "interface.hh" #include "core.hh" // interface class definitions #include "symbol.hh" #include "dagNode.hh" #include "term.hh" #include "lhsAutomaton.hh" #include "rhsAutomaton.hh" // core class definitions #include "variableInfo.hh" #include "symbolMap.hh" #include "termBag.hh" #include "substitution.hh" // variable class definitions #include "variableSymbol.hh" #include "variableTerm.hh" #include "variableDagNode.hh" #include "variableLhsAutomaton.hh" VariableTerm::VariableTerm(VariableSymbol* symbol, int name) : Term(symbol), NamedEntity(name) { index = UNDEFINED; } RawArgumentIterator* VariableTerm::arguments() const { return 0; } void VariableTerm::deepSelfDestruct() { delete this; } Term* VariableTerm::deepCopy2(SymbolMap* translator) const { VariableSymbol* vs = safeCastNonNull((translator == 0 ? symbol() : translator->translate(symbol()))); VariableTerm* vt = new VariableTerm(vs, id()); // // Usually we need the index to be UNDEFINED so that statement analysis works; but if the term is part // of an op to term mapping we may need the index preserved. // if (translator != 0 && translator->preserveVariableIndices()) vt->index = index; return vt; } Term* VariableTerm::instantiate2(const Vector& varBindings, SymbolMap* translator) { return varBindings[index]->deepCopy(translator); } Term* VariableTerm::normalize(bool /* full */, bool& changed) { changed = false; setHashValue(hash(symbol()->getHashValue(), id())); return this; } int VariableTerm::compareArguments(const Term* other) const { return id() - safeCastNonNull(other)->id(); } int VariableTerm::compareArguments(const DagNode* other) const { return id() - safeCastNonNull(other)->id(); } void VariableTerm::findEagerVariables(bool /* atTop */, NatSet& eagerVariables) const { eagerVariables.insert(index); } void VariableTerm::analyseConstraintPropagation(NatSet& boundUniquely) const { boundUniquely.insert(index); } LhsAutomaton* VariableTerm::compileLhs2(bool matchAtTop, const VariableInfo& variableInfo, NatSet& boundUniquely, bool& subproblemLikely) { boundUniquely.insert(index); subproblemLikely = false; bool copyToAvoidOverwriting = matchAtTop /* && variableInfo.rhsVariables().contains(index) */; return new VariableLhsAutomaton(index, getSort(), copyToAvoidOverwriting); } void VariableTerm::markEagerArguments(int nrVariables, const NatSet& eagerVariables, Vector& problemVariables) { } DagNode* VariableTerm::dagify2() { return new VariableDagNode(symbol(), id(), index); } bool VariableTerm::subsumes(const Term* other, bool sameVariableSet) const { // // If "this" and "other" are using the same set of variables // then a variable can subsume itself. // if (sameVariableSet && symbol() == other->symbol() && id() == safeCastNonNull(other)->id()) return true; // // Otherwise a variable must be linear and have large enough // sort. // return !(occursInContext().contains(index)) && getComponent()->leq(other->getSortIndex(), getSortIndex()); } int VariableTerm::partialCompareUnstable(const Substitution& partialSubstitution, DagNode* other) const { DagNode* d = partialSubstitution.value(index); if (d == 0) return Term::UNKNOWN; int r = d->compare(other); if (r < 0) return LESS; if (r > 0) return GREATER; return EQUAL; } void VariableTerm::findAvailableTerms(TermBag& availableTerms, bool eagerContext, bool atTop) { if (!atTop) availableTerms.insertMatchedTerm(this, eagerContext); } int VariableTerm::compileRhs2(RhsBuilder& /* rhsBuilder */, VariableInfo& /* variableInfo */, TermBag& /* availableTerms */, bool /* eagerContext */) { CantHappen("should never be called"); return 0; } Maude-Maude3.5.1/src/Variable/variableSymbol.hh0000664000175000017510000000453415036121435020676 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for variable symbols. // #ifndef _variableSymbol_hh_ #define _variableSymbol_hh_ #include "symbol.hh" class VariableSymbol : public Symbol { NO_COPYING(VariableSymbol); public: VariableSymbol(int id); Term* makeTerm(const Vector& args); DagNode* makeDagNode(const Vector& args); bool eqRewrite(DagNode* subject, RewritingContext& context); void computeBaseSort(DagNode* subject); void normalizeAndComputeTrueSort(DagNode* subject, RewritingContext& context); Term* termify(DagNode* dagNode); // // Unification stuff. // void computeGeneralizedSort(const SortBdds& sortBdds, const Vector& realToBdd, DagNode* subject, Vector& generalizedSort); void computeGeneralizedSort2(const SortBdds& sortBdds, const Vector& realToBdd, DagNode* subject, Vector& outputBdds); bool isStable() const; bool determineGround(DagNode* dagNode); // // Hash cons stuff. // DagNode* makeCanonical(DagNode* original, HashConsSet* /* hcs */); DagNode* makeCanonicalCopy(DagNode* original, HashConsSet* /* hcs */); // // VariableSymbol specific functions. // Sort* getSort(); }; inline Sort* VariableSymbol::getSort() { // // Temporary hack until sorts mechanism revised. // const Vector& s = getOpDeclarations(); Assert(s.length() == 1, "s.length() != 1"); const Vector& v = s[0].getDomainAndRange(); Assert(v.length() == 1, "v.length() != 1"); return v[0]; } #endif Maude-Maude3.5.1/src/Variable/variableSymbol.cc0000664000175000017510000000760715036121435020670 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class VariableSymbol. // // utility stuff #include "macros.hh" #include "vector.hh" // forward declarations #include "interface.hh" #include "core.hh" // interface class definitions #include "symbol.hh" #include "dagNode.hh" #include "term.hh" // core class definitions #include "sortBdds.hh" // variable class definitions #include "variableSymbol.hh" #include "variableTerm.hh" #include "variableDagNode.hh" VariableSymbol::VariableSymbol(int id) : Symbol(id, 0) { } Term* VariableSymbol::makeTerm(const Vector& args) { Assert(false, "makeTerm() not useable on variable symbol " << this); return 0; } DagNode* VariableSymbol::makeDagNode(const Vector& args) { Assert(false, "makeDagNode() not useable on variable symbol " << this); return 0; } bool VariableSymbol::eqRewrite(DagNode* subject, RewritingContext& context) { return applyReplace(subject, context); } void VariableSymbol::computeBaseSort(DagNode* subject) { subject->setSortIndex(getSort()->index()); } void VariableSymbol::normalizeAndComputeTrueSort(DagNode* subject, RewritingContext& context) { fastComputeTrueSort(subject, context); } Term* VariableSymbol::termify(DagNode* dagNode) { VariableDagNode* v = safeCastNonNull(dagNode); return new VariableTerm(this, v->id()); } // // Unification code. // void VariableSymbol::computeGeneralizedSort(const SortBdds& sortBdds, const Vector& realToBdd, DagNode* subject, Vector& generalizedSort) { int firstVariable = realToBdd[safeCastNonNull(subject)->getIndex()]; // first BDD variable for this variable int nrVariables = sortBdds.getNrVariables(rangeComponent()->getIndexWithinModule()); // number of BDD variables depends on sort sortBdds.makeVariableVector(firstVariable, nrVariables, generalizedSort); } void VariableSymbol::computeGeneralizedSort2(const SortBdds& sortBdds, const Vector& realToBdd, DagNode* subject, Vector& outputBdds) { sortBdds.appendVariableVector(realToBdd[safeCastNonNull(subject)->getIndex()], // first BDD variable sortBdds.getNrVariables(rangeComponent()->getIndexWithinModule()), // # BDD variables outputBdds); } bool VariableSymbol::isStable() const { return false; } bool VariableSymbol::determineGround(DagNode* /* dagNode */) { return false; } // // Hash cons code. // DagNode* VariableSymbol::makeCanonical(DagNode* original, HashConsSet* /* hcs */) { // // No arguments that could be non-canonical so we can make the original // instance into the canonical instance. // return original; } DagNode* VariableSymbol::makeCanonicalCopy(DagNode* original, HashConsSet* /* hcs */) { // // We have a unreduced node - copy forced - in principle variable could rewrite to something else! // VariableDagNode* v = safeCastNonNull(original); VariableDagNode* n = new VariableDagNode(this, v->id(), v->getIndex()); n->copySetRewritingFlags(original); n->setSortIndex(original->getSortIndex()); return n; } Maude-Maude3.5.1/src/Variable/variableLhsAutomaton.hh0000664000175000017510000000300415036121435022036 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for left hand side automata when lhs is a bare variable. // #ifndef _variableLhsAutomaton_hh_ #define _variableLhsAutomaton_hh_ #include "lhsAutomaton.hh" class VariableLhsAutomaton : public LhsAutomaton { NO_COPYING(VariableLhsAutomaton); public: VariableLhsAutomaton(int index, const Sort* sort, bool copyToAvoidOverwriting); bool match(DagNode* subject, Substitution& solution, Subproblem*& returnedSubproblem, ExtensionInfo* extensionInfo); #ifdef DUMP void dump(ostream& s, const VariableInfo& variableInfo, int indentLevel); #endif private: const int index; const Sort* const sort; const bool copyToAvoidOverwriting; }; #endif Maude-Maude3.5.1/src/Variable/variableLhsAutomaton.cc0000664000175000017510000000435315036121435022034 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for VariableLhsAutomaton. // // utility stuff #include "macros.hh" #include "vector.hh" #include "indent.hh" // forward declarations #include "interface.hh" #include "core.hh" // interface class definitions #include "symbol.hh" #include "dagNode.hh" #include "lhsAutomaton.hh" // core class definitions #include "variableSymbol.hh" #include "variableInfo.hh" #include "substitution.hh" #include "variableLhsAutomaton.hh" VariableLhsAutomaton::VariableLhsAutomaton(int index, const Sort* sort, bool copyToAvoidOverwriting) : index(index), sort(sort), copyToAvoidOverwriting(copyToAvoidOverwriting) { } bool VariableLhsAutomaton::match(DagNode* subject, Substitution& solution, Subproblem*& returnedSubproblem, ExtensionInfo* extensionInfo) { return subject->matchVariable(index, sort, copyToAvoidOverwriting, solution, returnedSubproblem, extensionInfo); } #ifdef DUMP void VariableLhsAutomaton::dump(ostream& s, const VariableInfo& variableInfo, int indentLevel) { s << Indent(indentLevel) << "Begin{VariableLhsAutomaton}\n"; s << Indent(indentLevel + 1) << "index = " << index << " \"" << variableInfo.index2Variable(index) << "\"\tsort = " << sort << "\tcopyToAvoidOverwriting = " << copyToAvoidOverwriting << '\n'; s << Indent(indentLevel) << "End{VariableLhsAutomaton}\n"; } #endif Maude-Maude3.5.1/src/Variable/variableDagNode.hh0000664000175000017510000000574015036121435020732 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2024 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for DAG nodes that are variables. // #ifndef _variableDagNode_hh_ #define _variableDagNode_hh_ #include "dagNode.hh" #include "namedEntity.hh" #include "variableSymbol.hh" class VariableDagNode : public DagNode, public NamedEntity { NO_COPYING(VariableDagNode); public: VariableDagNode(Symbol* symbol, int name, int index); RawDagArgumentIterator* arguments(); size_t getHashValue(); int compareArguments(const DagNode* other) const; void overwriteWithClone(DagNode* old); DagNode* makeClone(); DagNode* copyWithReplacement(int argIndex, DagNode* replacement); DagNode* copyWithReplacement(Vector& redexStack, int first, int last); // // Unification member functions. // ReturnResult computeBaseSortForGroundSubterms(bool warnAboutUnimplemented); bool computeSolvedForm2(DagNode* rhs, UnificationContext& solution, PendingUnificationStack& pending); void insertVariables2(NatSet& occurs); DagNode* instantiate2(const Substitution& substitution, bool maintainInvariants); // // Narrowing member functions. // bool indexVariables2(NarrowingVariableInfo& indicies, int baseIndex); DagNode* instantiateWithCopies2(const Substitution& substitution, const Vector& eagerCopies); // // Function needed for variant matching. // void indexVariables(VariableInfo& indicies); // // Functions specific to VariableDagNode. // int getIndex() const; VariableSymbol* symbol() const; VariableDagNode* lastVariableInChain(Substitution& solution); private: DagNode* markArguments(); DagNode* copyEagerUptoReduced2(); DagNode* copyAll2(); void clearCopyPointers2(); bool safeVirtualReplacement(VariableDagNode* oldVar, VariableDagNode* newVar, UnificationContext& solution, PendingUnificationStack& pending); int index; }; inline VariableDagNode::VariableDagNode(Symbol* symbol, int name, int index) : DagNode(symbol), NamedEntity(name), index(index) { } inline VariableSymbol* VariableDagNode::symbol() const { return safeCastNonNull(DagNode::symbol()); } inline int VariableDagNode::getIndex() const { return index; } #endif Maude-Maude3.5.1/src/Variable/variableDagNode.cc0000664000175000017510000001755715036121435020731 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2020 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class VariableDagNode // // utility stuff #include "macros.hh" #include "vector.hh" // forward declarations #include "interface.hh" #include "core.hh" #include "variable.hh" // interface class definitions #include "symbol.hh" #include "dagNode.hh" // core class definitions #include "substitution.hh" #include "variableInfo.hh" #include "narrowingVariableInfo.hh" #include "unificationContext.hh" // variable class definitions #include "variableSymbol.hh" #include "variableDagNode.hh" RawDagArgumentIterator* VariableDagNode::arguments() { return 0; } size_t VariableDagNode::getHashValue() { return hash(symbol()->getHashValue(), id()); } int VariableDagNode::compareArguments(const DagNode* other) const { return id() - safeCastNonNull(other)->id(); } DagNode* VariableDagNode::markArguments() { return 0; } DagNode* VariableDagNode::copyEagerUptoReduced2() { return new VariableDagNode(symbol(), id(), index); } DagNode* VariableDagNode::copyAll2() { return new VariableDagNode(symbol(), id(), index); } void VariableDagNode::clearCopyPointers2() { } void VariableDagNode::overwriteWithClone(DagNode* old) { VariableDagNode* d = new(old) VariableDagNode(symbol(), id(), index); d->copySetRewritingFlags(this); d->setSortIndex(getSortIndex()); } DagNode* VariableDagNode::makeClone() { VariableDagNode* d = new VariableDagNode(symbol(), id(), index); d->copySetRewritingFlags(this); d->setSortIndex(getSortIndex()); return d; } DagNode* VariableDagNode::copyWithReplacement(int /* argIndex */, DagNode* /* replacement */) { CantHappen("should never be called"); return 0; } DagNode* VariableDagNode::copyWithReplacement(Vector& /* redexStack */, int /* first */, int /* last */) { CantHappen("should never be called"); return 0; } // // Unification code. // DagNode::ReturnResult VariableDagNode::computeBaseSortForGroundSubterms(bool /* warnAboutUnimplemented */) { return NONGROUND; } bool VariableDagNode::computeSolvedForm2(DagNode* rhs, UnificationContext& solution, PendingUnificationStack& pending) { DebugEnter((DagNode*) this << " vs " << rhs); // // In this version we only handle variable vs variable unfication and // punt on everything else. // if (VariableDagNode* v = dynamic_cast(rhs)) { VariableDagNode* lv = lastVariableInChain(solution); VariableDagNode* rv = v->lastVariableInChain(solution); if (lv->equal(rv)) return true; // // We are preferentially going to bind lv |-> rv // In order to maximally constrain the seach we want rv to // have the lowest sort if they are comparable and unequal. // We do this by ensuring rv has the largest sort index. // if (lv->symbol()->getSort()->index() > rv->symbol()->getSort()->index()) swap(lv, rv); // // Need to replace one variable by the other throughout the problem. We do this // virtually and must check for implicit occurs check problems. // // Might need to check we never map an original variable to a fresh variable. // DagNode* lt = solution.value(lv->index); if (lt == 0) return safeVirtualReplacement(lv, rv, solution, pending); DagNode* rt = solution.value(rv->index); if (rt == 0) return safeVirtualReplacement(rv, lv, solution, pending); // // Both variables are bound. // return safeVirtualReplacement(lv, rv, solution, pending) && lt->computeSolvedForm(rt, solution, pending); } // // Calling computeSolvedForm() would just kick the problem back to us if // rhs is ground, since this is a variable, and this would cause an infinite recursion. // return rhs->computeSolvedForm2(this, solution, pending); } bool VariableDagNode::safeVirtualReplacement(VariableDagNode* oldVar, VariableDagNode* newVar, UnificationContext& solution, PendingUnificationStack& pending) { // // We want to replace all occurrences of oldVar by newVar. We assume oldVar is the last // variable in its chain and is unbound (or has a binding which can be ignored because the // caller is dealing with it) and newVar is the last variable in its chain. // We do this by binding oldVar to newVar and since whenever we access a variable, // we look for the last variable in the chain, accessing oldVar will give us newVar. // // There is however a problem. If newVar is bound and its binding contains oldVar // (or a variable equivalent to it) we generate an implicit occur check issue. We // could un-solve and re-solve its binding, but if there is no occur check issue, // re-solving could give us a similar variable replacement problem, also resulting in // non-termination. // // So we check the binding of newVar to see if it contains oldVar, and only then // do we unsolve it. // solution.unificationBind(oldVar, newVar); DagNode* newBinding = solution.value(newVar->index); if (newBinding == 0 || newBinding->isGround()) return true; NatSet occurs; newBinding->insertVariables(occurs); for (int index : occurs) { if (VariableDagNode* v = dynamic_cast(solution.value(index))) { if (v->lastVariableInChain(solution)->equal(newVar)) { // // We have an occur check issue. We unsolve newVar |-> newBinding and re-solve it. // solution.bind(newVar->index, 0); return newBinding->computeSolvedForm2(newVar, solution, pending); } } } // // No implicit occurs check issue found. Leave the binding of newVar as it was. // return true; } void VariableDagNode::insertVariables2(NatSet& occurs) { occurs.insert(index); } DagNode* VariableDagNode::instantiate2(const Substitution& substitution, bool /* maintainInvariants */) { return substitution.value(index); } VariableDagNode* VariableDagNode::lastVariableInChain(Substitution& solution) { // // If a variable has been bound to anther variable, it is notionally // replaced by that variable thoughout the problem, and in particular // we need chase the replacement chain and find out what variable is // notionally in its place. // VariableDagNode* v = this; for (;;) { DagNode* d = solution.value(v->index); if (d == 0) break; VariableDagNode* n = dynamic_cast(d); if (n == 0) break; Assert(v != n, "variable " << (DagNode*) v << " is bound to itself in a chain starting at " << (DagNode*) this); v = n; } return v; } // // Narrowing code. // bool VariableDagNode::indexVariables2(NarrowingVariableInfo& indices, int baseIndex) { index = baseIndex + indices.variable2Index(this); return false; } DagNode* VariableDagNode::instantiateWithCopies2(const Substitution& /* substitution */, const Vector& eagerCopies) { // // We must be in an eager position so use the eager copy. // return eagerCopies[index]; } // // Variant match code. // void VariableDagNode::indexVariables(VariableInfo& indicies) { index = indicies.variable2Index(this); } Maude-Maude3.5.1/src/Variable/variable.hh0000664000175000017510000000202415036121435017500 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Forward declarations for core classes // #ifndef _variable_hh_ #define _variable_hh_ class VariableSymbol; class VariableTerm; class VariableDagNode; class VariableLhsAutomaton; #endif Maude-Maude3.5.1/src/Variable/Makefile.am0000664000175000017510000000064715036121435017437 0ustar nileshnileshnoinst_LIBRARIES = libvariable.a libvariable_a_CPPFLAGS = \ -I$(top_srcdir)/src/Utility \ -I$(top_srcdir)/src/Interface \ -I$(top_srcdir)/src/Core \ -I$(top_srcdir)/src/FullCompiler libvariable_a_SOURCES = \ variableSymbol.cc \ variableTerm.cc \ variableDagNode.cc \ variableLhsAutomaton.cc noinst_HEADERS = \ variable.hh \ variableDagNode.hh \ variableLhsAutomaton.hh \ variableSymbol.hh \ variableTerm.hh Maude-Maude3.5.1/src/Variable/ChangeLog0000664000175000017510000007206615036121435017161 0ustar nileshnilesh2024-03-12 Steven Eker * variableDagNode.hh (class VariableDagNode): deleted old commented out computeSolvedForm2() decl 2024-03-11 Steven Eker * variableDagNode.cc (VariableDagNode::computeSolvedForm2): avoid casting now that we have a VariableDagNode specific symbol() * variableDagNode.hh (symbol): added 2024-03-05 Steven Eker * variableTerm.hh (class VariableTerm): made arguments() const * variableTerm.cc (VariableTerm::arguments): made const ===================================Maude158=========================================== 2023-07-24 Steven Eker * variableSymbol.cc (VariableSymbol::determineGround): added * variableSymbol.hh (class VariableSymbol): added decl for determineGround() ===================================Maude151=========================================== 2023-02-20 Steven Eker * variableTerm.cc (VariableTerm::deepCopy2): honor preserveVariableIndices() 2020-12-11 Steven Eker * variableDagNode.cc (VariableDagNode::instantiate2): take maintainInvariants argument * variableDagNode.hh (class VariableDagNode): updated decl for instantiate2() ===================================Maude132=========================================== 2020-09-30 Steven Eker * variableDagNode.cc (VariableDagNode::computeSolvedForm2): prefer to bind from variables of small sort index (large sort) to variables of large sort index (small sort) in order to maximally constraint search 2020-09-28 Steven Eker * variableDagNode.cc (VariableDagNode::safeVirtualReplacement): use range-based for loop ===================================Maude131=========================================== 2020-08-18 Steven Eker * variableDagNode.cc (VariableDagNode::indexVariables): added VariableInfo version * variableDagNode.hh (class VariableDagNode): added decl for VariableInfo version of indexVariables() ===================================Maude129=========================================== 2020-05-13 Steven Eker * variableDagNode.cc (VariableDagNode::lastVariableInChain): use Assert() rather that hardcoded check for a variable bound to itself ===================================Maude128a=========================================== 2019-12-03 Steven Eker * variableTerm.cc (deepCopy2): use safeCastNonNull<>() (compareArguments): use safeCastNonNull<>() (both versions) (subsumes): use safeCastNonNull<>() * variableSymbol.cc (termify): use safeCastNonNull<>() (computeGeneralizedSort): use safeCastNonNull<>() (computeGeneralizedSort2): use safeCastNonNull<>() (makeCanonicalCopy): use safeCastNonNull<>() * variableDagNode.cc (compareArguments): use safeCastNonNull<>() * variableTerm.hh (getSort): use safeCastNonNull<>() 2019-11-11 Steven Eker * variableDagNode.cc (computeBaseSortForGroundSubterms): take warnAboutUnimplemented arg * variableDagNode.hh (NamedEntity): updated decl for computeBaseSortForGroundSubterms() ===================================Maude125=========================================== 2017-02-17 Steven Eker * variableDagNode.cc (stackArguments): deleted * variableDagNode.hh (NamedEntity): deleted decl for stackArguments() * variableSymbol.hh (Symbol): deleted decl for stackArguments() * variableSymbol.cc (stackArguments): deleted ===================================Maude111b=========================================== 2016-11-10 Steven Eker * variableDagNode.hh (NamedEntity): added decl for copyAll2() * variableDagNode.cc (copyAll2): added ===================================Maude111=========================================== 2016-03-24 Steven Eker * variableSymbol.hh (Symbol): added decl for computeGeneralizedSort2() * variableSymbol.cc (computeGeneralizedSort2): added ===================================Maude110=========================================== 2014-06-23 Steven Eker * variableDagNode.cc (safeVirtualReplacement): update comment, since we are assume that oldVar is the last variable it its chain ===================================Maude104=========================================== 2013-01-04 Steven Eker * variableDagNode.hh (NamedEntity): added decl for safeVirtualReplacement() * variableDagNode.cc: force unsolving and re-solving to avoid occurs check problem cause by implicit variable renaming (safeVirtualReplacement): added (computeSolvedForm2): use safeVirtualReplacement() ===================================Maude96c=========================================== 2012-04-13 Steven Eker * variableDagNode.hh (NamedEntity): added declaration for instantiateWithCopies2() * variableDagNode.cc (instantiateWithCopies2): added 2012-03-29 Steven Eker * variableSymbol.hh (Symbol): added declaration for termify() * variableSymbol.cc (termify): added ===================================Maude96=========================================== 2010-10-19 Steven Eker * variableSymbol.cc (VariableSymbol::makeCanonicalCopyEagerUptoReduced): becomes makeCanonicalCopy() - no change in semantics needed * variableSymbol.hh (class VariableSymbol): makeCanonicalCopyEagerUptoReduced() -> makeCanonicalCopy() ===================================Maude95a=========================================== 2010-09-29 Steven Eker * variableSymbol.hh (class VariableSymbol): added decl for makeCanonicalCopyEagerUptoReduced() * variableSymbol.cc (Variable_Symbol::makeCanonicalCopyEagerUptoReduced): added 2010-08-18 Steven Eker * variableDagNode.cc (VariableDagNode::computeSolvedForm2): deleted (VariableDagNode::computeSolvedForm2): deleted commented out old version * variableDagNode.hh (class VariableDagNode): deleted decl for nonVariableSize() ===================================Maude95=========================================== 2010-08-11 Steven Eker * variableDagNode.cc (VariableDagNode::computeSolvedForm2): need to check for unifying a variable against itself 2010-08-04 Steven Eker * variableDagNode.cc (VariableDagNode::computeSolvedForm2): use computeSolvedForm() rather than computeSolvedForm2() in two places since the nonvariable object might be ground (VariableDagNode::computeSolvedForm2): reverted since we get infinite loop - no one wants to handle variable vs ground term (VariableDagNode::computeSolvedForm2): the two bound variables case needs to use computeSolvedForm() since the bindings could be ground and are guarenteed not to be variables 2010-08-03 Steven Eker * variableDagNode.cc (VariableDagNode::computeSolvedForm2): rewritten; we now only handle the variable vs variable case and punt the other cases to the nonvariable terms theory ===================================Maude94a=========================================== 2010-06-04 Steven Eker * variableSymbol.hh (class VariableSymbol): added decl for isStable() * variableSymbol.cc (VariableSymbol::isStable): added ===================================Maude94=========================================== 2009-12-03 Steven Eker * variableSymbol.hh (class VariableSymbol): added decl for makeCanonical() * variableSymbol.cc (makeCanonical): added ===================================Maude92b=========================================== 2008-02-08 Steven Eker * variableDagNode.cc (computeSolvedForm2): use unificationBind() (5 places) (computeSolvedForm2): missed one! * variableDagNode.hh (class VariableDagNode): updated decl for computeSolvedForm2() 2008-02-05 Steven Eker * variableDagNode.cc (computeSolvedForm2): rewritten * variableDagNode.hh (class VariableDagNode): updated decl for computeSolvedForm2() ===================================Maude90=========================================== 2007-11-01 Steven Eker * variableDagNode.cc (instantiate2): updated * variableDagNode.hh (class VariableDagNode): updated decl for instantiate2() 2007-10-26 Steven Eker * variableDagNode.hh (class VariableDagNode): decl for indexVariables() becomes indexVariables2() * variableDagNode.cc (indexVariables): becomes indexVariables2(); return bool 2007-10-15 Steven Eker * variableDagNode.hh (class VariableDagNode): adde decl for indexVariables() * variableDagNode.cc (indexVariables): added ===================================Maude89h=========================================== 2007-08-24 Steven Eker * variableDagNode.cc (computeBaseSortForGroundSubterms): updated * variableDagNode.hh (class VariableDagNode): updated decl for computeBaseSortForGroundSubterms() 2007-08-23 Steven Eker * variableDagNode.cc (computeSolvedForm): becomes computeSolvedForm2() * variableDagNode.hh (class VariableDagNode): added decl for nonVariableSize() (class VariableDagNode): computeSolvedForm() -> computeSolvedForm2() * variableDagNode.cc (nonVariableSize): added, now that default returns 1 ===================================Maude89g=========================================== 2007-07-09 Steven Eker * variableDagNode.cc (computeSolvedForm): detect and warn about unimplemented bare variable case 2007-06-28 Steven Eker * variableDagNode.cc (computeSolvedForm): added extensionInfo arg * variableDagNode.hh (class VariableDagNode): updated decl for computeSolvedForm() ===================================Maude89c=========================================== 2007-03-16 Steven Eker * variableDagNode.cc (occurs2, unify): deleted * variableDagNode.hh (class VariableDagNode): deleted decls for unify(), occurs2() 2007-03-15 Steven Eker * variableSymbol.cc (computeGeneralizedSort): pass realToBdd by ref * variableSymbol.hh (class VariableSymbol): fix decl for computeGeneralizedSort() ===================================Maude89a=========================================== 2007-02-27 Steven Eker * variableDagNode.cc (insertVariables2): added * variableDagNode.hh (class VariableDagNode): added decl for insertVariables2() 2007-02-26 Steven Eker * variableDagNode.cc (computeSolvedForm): fix sortIndex != bug * variableDagNode.hh (class VariableDagNode): added decl for lastVariableInChain() * variableDagNode.cc (lastVariableInChain): added (computeSolvedForm): added * variableDagNode.hh (class VariableDagNode): added decl for computeSolvedForm() ===================================Maude89=========================================== 2007-02-02 Steven Eker * variableDagNode.cc: use unificationBind(); this fixes the bug where we bind a variable X to a variable Y that is already bound to X and fail the occurs check 2007-01-31 Steven Eker * variableDagNode.cc (unify): clear returnedSubproblem; pass 0 extensionInfo on recursive call 2007-01-30 Steven Eker * variableDagNode.cc (unify): do sort check when getting bound to ground variable * variableDagNode.hh (class VariableDagNode): occurs() -> occurs2() * variableDagNode.cc (instantiate): becomes instantiate2() (occurs): becomes occurs2() * variableDagNode.hh (class VariableDagNode): instantiate() -> instantiate2() * variableDagNode.cc (computeBaseSortForGroundSubterms): added * variableDagNode.hh (class VariableDagNode): added decl for computeBaseSortForGroundSubterms() ===================================Maude88e=========================================== 2007-01-16 Steven Eker * variableDagNode.cc (unify): handle the case where we unify an unbound variable against itself 2007-01-04 Steven Eker * variableSymbol.cc (computeGeneralizedSort): added * variableSymbol.hh (class VariableSymbol): added decl for computeGeneralizedSort() 2006-12-11 Steven Eker * variableDagNode.cc (occurs): added (unify): do occurs check * variableDagNode.hh (class VariableDagNode): added decls for occurs() and instantiate() * variableDagNode.cc (instantiate): added (unify): use instantiate() (unify): use update() 2006-12-08 Steven Eker * variableDagNode.cc (unify): added 2006-12-07 Steven Eker * variableDagNode.cc (makeClone, overwriteWithClone) (copyEagerUptoReduced2): pass index to VariableDagNode() * variableTerm.cc (dagify2): pass index to VariableDagNode() * variableDagNode.hh (class VariableDagNode): added data member index (getIndex): added (VariableDagNode): handle index ===================================Maude88d=========================================== 2005-06-24 Steven Eker * variableTerm.hh (class VariableTerm): updated decl for deepCopy2() * variableTerm.cc (deepCopy2): changed arg name * variableTerm.hh (class VariableTerm): updated decl for instantiate2() * variableTerm.cc (instantiate2): new calling convention 2005-06-22 Steven Eker * variableTerm.cc (instantiate2): added * variableTerm.hh (class VariableTerm): added decl for instantiate2() ===================================Maude86b=========================================== 2003-05-06 Steven Eker * variableTerm.cc (partialCompareUnstable): use Term::UNKNOWN 2003-05-01 Steven Eker * variableDagNode.cc (overwriteWithClone): use copySetRewritingFlags() (makeClone): use copySetRewritingFlags() ===================================Maude80=========================================== 2003-02-24 Steven Eker * variableSymbol.cc (makeTerm): updated Assert() (makeDagNode): updated Assert() * variableSymbol.hh (getSort): updated Assert()s * variableTerm.cc: removed #pragma * variableTerm.hh: removed #pragma * variableSymbol.cc: removed #pragma * variableSymbol.hh: removed #pragma * variableLhsAutomaton.cc: removed #pragma * variableLhsAutomaton.hh: removed #pragma * variableDagNode.cc: removed #pragma * variableDagNode.hh: removed #pragma ===================================Maude79=========================================== 2003-01-07 Steven Eker * variableTerm.cc (partialCompareUnstable): added * variableTerm.hh (class VariableTerm): added decl for partialCompareUnstable() ===================================Engine78=========================================== 2002-10-08 Steven Eker * variableDagNode.cc (copyWithReplacement): (both versions) use CantHappen() macro 2002-10-04 Steven Eker * variableDagNode.cc (copyWithReplacement): complex version: changed last (unused) arg * variableDagNode.hh (class VariableDagNode): updated decl for complex version of copyWithReplacement() 2002-10-03 Steven Eker * variableDagNode.hh (class VariableDagNode): updated decl for stackArguments() * variableDagNode.cc (stackArguments): take respectFrozen flag ===================================Engine76================================================== 2002-08-26 Steven Eker * variableSymbol.hh (getSort): updated "temporary hack" to use class OpDeclaration 2002-08-23 Steven Eker * variableTerm.hh (class VariableTerm): deleted superfluous decl for compileRhs() 2002-08-21 Steven Eker * variableTerm.cc (compileRhs2): CantHappen() replaces Assert() ===================================Engine75================================================== 2002-07-24 Steven Eker * variableTerm.cc (subsumes): rewritten to handle sameVariableSet arg * variableTerm.hh (class VariableTerm): updated decl for subsumes() ===================================Engine74================================================== 2001-04-03 Steven Eker * variableDagNode.hh (class VariableDagNode): added decl for Vector version of copyWithReplacement() * variableDagNode.cc (copyWithReplacement): added (Vector version) ===================================Engine66================================================== 2001-03-07 Steven Eker * variableSymbol.hh (class VariableSymbol): added decl for stackArguments() * variableSymbol.cc (stackArguments): added ===================================Engine65================================================== 2001-01-26 Steven Eker * variableDagNode.hh (class VariableDagNode): updated markArguments() decl and made it private * variableDagNode.cc (markArguments): return 0 ===================================Engine64================================================== 2000-07-25 Steven Eker * variableTerm.cc (VariableTerm): don't set modifiedIndex (markEagerArguments): becomes the empty function * variable.hh: deleted forward decl for class VariableRhsAutomaton * variableTerm.hh (class VariableTerm): deleted decl for compileRhs() (class VariableTerm): deleted data member modifiedIndex; index becomes an int (setIndex): don't set modifiedIndex (getModifiedIndex): deleted (class VariableTerm): deleted decl for getModifiedIndex() * variableTerm.cc (compileRhs): deleted * variableRhsAutomaton.cc: deleted * variableRhsAutomaton.hh: deleted ===================================Engine60================================================== 2000-07-18 Steven Eker * variableRhsAutomaton.cc (dump): varIndex -> index * variableTerm.cc (compileLhs2): commented out use of variableInfo.rhsVariables() since we no longer have this 2000-07-12 Steven Eker * variableTerm.hh (class VariableTerm): added decls for findAvailableTerms() and compileRhs2() * variableTerm.cc (findAvailableTerms): added (compileRhs2): added ===================================Engine59================================================== 2000-07-05 Steven Eker * variableTerm.hh (class VariableTerm): compileLhs() -> compileLhs2() * variableTerm.cc (compileLhs): becomes compileLhs2() 2000-06-23 Steven Eker * variableTerm.hh (getSort): made const * variableRhsAutomaton.hh (class VariableRhsAutomaton): made index const * variableRhsAutomaton.cc (VariableRhsAutomaton): use index (construct): use index (replace): use index (dump): use index * variableRhsAutomaton.hh (class VariableRhsAutomaton): varIndex -> index * variableDagNode.hh (class VariableDagNode): use NO_COPYING() macro * variableTerm.cc (compareArguments): use safeCast() (both versions) (dagify2): pass id() * variableDagNode.cc (getHashValue): use id() in hash computation (compareArguments): compare ids() (copyEagerUptoReduced2): copy id() (overwriteWithClone): copy id() (makeClone): copy id() * variableDagNode.hh (class VariableDagNode): derive from class NamedEntity; ctor takes name arg (VariableDagNode): pass name to NamedEntity * variableTerm.hh (getSort): use safeCast() macro * variableTerm.cc (deepCopy2): use safeCast() macro * variableTerm.hh (class VariableTerm): added decl for getSort() (getSort): added * variableTerm.cc (VariableTerm): deal with anme arg; use index and modifiedIndex (deepCopy2): pass id() to new VariableTerm() (normalize): include id() in hash calculation (compareArguments): compare id()s (both versions) (findEagerVariables): use index (analyseConstraintPropagation): use index (compileLhs): use index and getSort() (markEagerArguments): use index and modifiedIndex (compileRhs): use modifiedIndex (subsumes): compare id()s and use index (lookupSort): deleted * variableTerm.hh (downCast): deleted (index): becomes getIndex() (modifiedIndex): becomes getModifiedIndex() (class VariableTerm): data members varIndex and modifiedVarIndex become index and modifiedIndex (setIndex): set index and modifiedIndex (class VariableTerm): ctor takes name arg 2000-06-21 Steven Eker * variableTerm.hh (class VariableTerm): derive from NamedEntity, use NO_COPYING() macro (class VariableTerm): deleted decls for downCast() and lookupSort() * variableSymbol.hh (class VariableSymbol): use NO_COPYING() macro * variableSymbol.cc (makeTerm): now a dummy function (makeDagNode): now a dummy function ===================================Engine58================================================== 2000-03-17 Steven Eker * variableRhsAutomaton.cc (dump): ifdef'd * variableRhsAutomaton.hh (class VariableRhsAutomaton): use NO_COPYING() macro; ifdef'd dump() decls * variableLhsAutomaton.cc (dump): ifdef'd * variableLhsAutomaton.hh (class VariableLhsAutomaton): use NO_COPYING() macro; ifdef'd dump() decls 1999-10-29 Steven Eker * variableSymbol.cc: deleted variableString (VariableSymbol): call Symbol with new conventions (VariableSymbol): don't pass memoFlag arg to Symbol * variableSymbol.hh: deleted static data member variableString ===================================Engine53================================================== 1999-10-26 Steven Eker * variableSymbol.hh (dynamicCast): deleted (class VariableSymbol): deleted decl for dynamicCast() * variableTerm.hh (downCast): rewritten using dynamic_cast() (dynamicCast): deleted (class VariableTerm): deleted decl for dynamicCast() 1999-10-19 Steven Eker * variableDagNode.cc (getHashValue): added * variableDagNode.hh (class VariableDagNode): added decl for getHashValue() ===================================Engine52================================================== 1999-05-12 Steven Eker * variableSymbol.hh (class VariableSymbol): computeTrueSort() -> normalizeAndComputeTrueSort() * variableSymbol.cc (computeTrueSort): become normalizeAndComputeTrueSort() (normalizeAndComputeTrueSort): use fastComputeTrueSort() ===================================Engine49================================================== 1999-01-16 Steven Eker * variableTerm.hh (class VariableTerm): made varIndex and modifiedVarIndex shorts to save memory ===================================Engine46================================================== Fri Nov 6 16:26:56 1998 Steven Eker * variableTerm.cc (deepCopy): -> deepCopy2() * variableTerm.hh (class VariableTerm): deepCopy() -> deepCopy2() ===================================Engine43================================================== Thu Sep 17 17:27:06 1998 Steven Eker * variableSymbol.cc (computeBaseSort): setSortInfo() -> setSortIndex() * variableTerm.cc (subsumes): use ConnectedComponent::leq() * variableDagNode.cc (overwriteWithClone): setSortInfo() -> setSortIndex() (makeClone): setSortInfo() -> setSortIndex() ===================================Engine40================================================== Tue Jul 21 10:42:34 1998 Steven Eker * variableTerm.hh (class VariableTerm): aded decl for deepCopy() * variableTerm.cc (deepCopy): added ===================================Engine39================================================== Wed Jun 10 18:21:38 1998 Steven Eker * variableTerm.hh (class VariableTerm): updated normalize() decl * variableTerm.cc (normalize): clear changed flag Tue Jun 9 18:13:41 1998 Steven Eker * variableTerm.cc: IntSet -> NatSet * variableTerm.hh: IntSet -> NatSet ===================================Engine38================================================== Thu Dec 4 13:13:01 1997 Steven Eker * variableSymbol.cc (VariableSymbol): don't pass inert arg to Symbol() Sun Nov 23 16:15:06 1997 Steven Eker * variableLhsAutomaton.cc (dump): rewritten * variableRhsAutomaton.cc (dump): rewritten * variableRhsAutomaton.hh (class VariableRhsAutomaton): added variableInfo arg * variableLhsAutomaton.hh (class VariableLhsAutomaton): rearranged dump() args ===================================Engine33================================================== Tue Oct 21 11:48:48 1997 Steven Eker * variableTerm.cc (dagify2): switch to new convention * variableTerm.hh (class VariableTerm): switch dagify2() decl to new convention Thu Oct 16 12:16:26 1997 Steven Eker * variableSymbol.cc: variableString changed from array to pointer to get around some slippery C++ semantics * variableSymbol.hh (class VariableSymbol): variableString changed from array to pointer to get around some slippery C++ semantics Wed Oct 15 12:11:49 1997 Steven Eker * variableTerm.hh (class VariableTerm): added decl for dynamicCast() (dynamicCast): added Tue Oct 14 11:15:46 1997 Steven Eker * variableTerm.hh (downCast): use VariableSymbol::dynamicCast() * variableSymbol.cc (makeTerm): ErrorCheck() changed to Assert() * variableSymbol.hh (getSort): added * variableSymbol.cc (computeBaseSort): use getSort(); * variableSymbol.hh (class VariableSymbol): added decls for getSort() and dynamicCast() (class VariableSymbol): added variableString static data member (dynamicCast): added Fri Oct 10 17:52:59 1997 Steven Eker * variableLhsAutomaton.cc (dump): VariableIndex -> VariableInfo, index2Symbol() -> index2Variable() * variableLhsAutomaton.hh (class VariableLhsAutomaton): VariableIndex -> VariableInfo ===================================Engine30================================================== Tue Oct 7 15:47:52 1997 Steven Eker * variableSymbol.cc (makeDagNode): added * variableSymbol.hh (class VariableSymbol): added decl for makeDagNode() Fri Oct 3 18:58:01 1997 Steven Eker * variableTerm.cc (compileRhs): DataSet -> TermSet (dagify2): DataSet -> TermSet * variableTerm.hh (class VariableTerm): DataSet -> TermSet ===================================Engine29================================================== Thu Oct 2 18:31:02 1997 Steven Eker * variableTerm.hh (class VariableTerm): updated compileRhs() decl * variableTerm.cc (compileRhs): adapted to DataSet& compiled Tue Sep 30 12:42:45 1997 Steven Eker * variableTerm.hh (class VariableTerm): dagify() decl becomes dagify2() * variableTerm.cc (normalize): set hash value (dagify2): adapted from dagify() Thu Sep 25 16:32:49 1997 Steven Eker * variableTerm.cc (lookupSort): use getOpDeclarations() * variableSymbol.cc (computeBaseSort): use getOpDeclarations() ===================================Engine28================================================== Wed Jul 23 11:36:19 1997 Steven Eker * variableTerm.cc (normalize): added full flag * variableTerm.hh (class VariableTerm): added full flag to normalize() Mon Jul 21 19:17:26 1997 Steven Eker * variableDagNode.cc (normalizeEagerUptoReduced2): deleted * variableDagNode.hh (class VariableDagNode): deleted normalizeEagerUptoReduced2() decl ===================================Engine26b================================================== Fri Jul 18 15:55:29 1997 Steven Eker * variableDagNode.cc (normalizeEagerUpToReduced2): added * variableDagNode.hh (class VariableDagNode): added decl for normalizeEagerUpToReduced2() Tue Jul 15 15:26:54 1997 Steven Eker * variableSymbol.cc (VariableSymbol): pass inert = true to Symbol() ===================================Engine26================================================== Mon Jun 30 11:09:58 1997 Steven Eker * variableTerm.cc (markEagerArguments): handle case where varIndex is UNDEFINED (VariableTerm): initialize varIndex = modifiedVarIndex = UNDEFINED Fri Jun 27 16:24:21 1997 Steven Eker * variableDagNode.hh (class VariableDagNode): copyEagerUptoReduced2() and clearCopyPointers2() made private Wed Jun 25 14:32:29 1997 Steven Eker * variableSymbol.cc (acceptSortConstraint): deleted (acceptEquation): deleted (acceptRule): deleted * variableSymbol.hh (class VariableSymbol): deleted acceptSortConstraint(), acceptEquation() and acceptRule() decls Tue Jun 24 11:04:05 1997 Steven Eker * variableSymbol.cc (eqRewrite): now do right thing (computeTrueSort): now do right thing (computeBaseSort): now do right thing * variableTerm.cc (dagify): now make VaraibleDagNode s * variableDagNode.cc: created * variableDagNode.hh: created * variableSymbol.cc (makeTerm): use VariableTerm rather than Variable * variableTerm.cc: created from old variable.cc * variableTerm.hh: created from old variable.hh * variable.hh: created to provide forward decls for variable classes Maude-Maude3.5.1/src/Utility/0000775000175000017510000000000015036121435015312 5ustar nileshnileshMaude-Maude3.5.1/src/Utility/wordSystem.hh0000664000175000017510000000625215036121435020020 0ustar nileshnilesh/* This file is part of the Maude 2 interpreter. Copyright 1997-2015 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class to solve systems of word equations using the Plotkin/PIG-PUG // algorithm for single equations with forward and backward substitution, // together with various heuristics: left and right cancellation, orienting, // ordering and known solutions to special forms. // // In order to ensure termination, non-unifier preserving transformations // might be made in which case a incompleteness flag is set. // #include "pigPug.hh" #include "wordLevel.hh" #ifndef _wordSystem_hh_ #define _wordSystem_hh_ class WordSystem { public: enum OutcomeFlags { FAILURE = 0, // no solution was found SUCCESS = 1, // solution was found INCOMPLETE = 2 // solutions may have been missed }; // // Local names for PigPug data type. // typedef PigPug::Word Word; typedef PigPug::Subst Subst; WordSystem(int nrVariables, int nrEquations, bool identityOptimizations = false); void setTheoryConstraint(int variable, int theoryIndex); void setUpperBound(int variable, int upperBound); void setTakeEmpty(int variable); void addAssignment(int variable, const Word& value); void addEquation(int index, const Word& lhs, const Word& rhs); void addNullEquation(const Word& word); int findNextSolution(); const Word& getAssignment(int variable) const; int getNrVariables() const; private: typedef Vector> LevelStack; std::unique_ptr current; LevelStack levelStack; int incompletenessFlag; }; inline void WordSystem::setTheoryConstraint(int variable, int theoryIndex) { current->setTheoryConstraint(variable, theoryIndex); } inline void WordSystem::setUpperBound(int variable, int upperBound) { current->setUpperBound(variable, upperBound); } inline void WordSystem::setTakeEmpty(int variable) { current->setTakeEmpty(variable); } inline void WordSystem::addAssignment(int variable, const Word& value) { current->addAssignment(variable, value); } inline void WordSystem::addEquation(int index, const Word& lhs, const Word& rhs) { current->addEquation(index, lhs, rhs); } inline void WordSystem::addNullEquation(const Word& word) { current->addNullEquation(word); } inline const WordSystem::Word& WordSystem::getAssignment(int variable) const { return current->getAssignment(variable); } inline int WordSystem::getNrVariables() const { return current->getNrVariables(); } #endif Maude-Maude3.5.1/src/Utility/wordSystem.cc0000664000175000017510000000411515036121435020002 0ustar nileshnilesh/* This file is part of the Maude 2 interpreter. Copyright 1997-2015 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class WordSystem. // #include "macros.hh" #include "vector.hh" #include "wordSystem.hh" WordSystem::WordSystem(int nrVariables, int nrEquations, bool identityOptimizations) { current.reset(new WordLevel(WordLevel::INITIAL, nrVariables, nrEquations, identityOptimizations)); // maybe use make_unique() incompletenessFlag = 0; } int WordSystem::findNextSolution() { for (;;) { //cout << "Solving level " << levelStack.size() << endl; WordLevel::ResultPair result = current->findNextPartialSolution(); if (result.first & INCOMPLETE) incompletenessFlag = INCOMPLETE; if (result.first & SUCCESS) { if (result.second == 0) return SUCCESS | incompletenessFlag; // current holds a complete solution // // Need to put current problem aside and solve residual problem. // levelStack.push_back(std::move(current)); current = std::move(result.second); } else { if (levelStack.empty()) break; // // Need to discard unsolvable current problem and look for another solution // to the previous residual problem. // int top = levelStack.size() - 1; current = std::move(levelStack[top]); levelStack.resize(top); } } return FAILURE | incompletenessFlag; } Maude-Maude3.5.1/src/Utility/wordLevel.hh0000664000175000017510000002150715036121435017603 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class to store and simplify a level in the solution of a word system. // // A level constains a map from variable to constraints, partial solution and a set // of unsolved equations. // // As we solve equations, we may introduce new variables, or in the worst case // constrain existing variables to ensure termination. We will generate bindings // for unbound variables, and substitute new bindings into existing bindings // and unsolved equations. // // Whenever we make a nondeterministic choice we need a new level so we can backtrack // to the old level to consider the other choices. // #include #include #include #include "natSet.hh" #include "pigPug.hh" #ifndef _wordLevel_hh_ #define _wordLevel_hh_ class WordLevel { public: enum LevelType { INITIAL, // first level in search, can use selection or PigPug to branch SELECTION, // second level in search if it appears, produced by selection PIGPUG // second or higher level, produced by PigPug }; enum OutcomeFlags { FAILURE = 0, // no solution found SUCCESS = 1, // solution was found INCOMPLETE = 2 // solutions may have been missed }; typedef std::pair> ResultPair; // // Local names for PigPug data types. // typedef PigPug::Word Word; typedef PigPug::Subst Subst; typedef PigPug::ConstraintMap ConstraintMap; WordLevel(LevelType levelType, int nrVariables, int nrEquations, bool identityOptimizations, WordLevel* parent = nullptr); void setTheoryConstraint(int variable, int theoryIndex); void setUpperBound(int variable, int upperBound); void setTakeEmpty(int variable); void addAssignment(int variable, const Word& value); void addEquation(int index, const Word& lhs, const Word& rhs); void addNullEquation(const Word& word); ResultPair findNextPartialSolution(); const Word& getAssignment(int variable) const; int getNrVariables() const; void dump(ostream& s, int indentLevel = 0); void dumpWord(ostream& s, const Word& word); private: enum Result { FAIL, // occur-check fail or constraint clash - need to fall back to last decision point DONE, // successful completion, no change to partial solution CHANGED, // successful completion, partial solution changed CONTINUE, // successful step, maybe more work to do UNSAFE // no work done because on unsafeAssignment }; enum EquationIndex { NOT_YET_CHOSEN = -2 // initial value; we use NONE (= -1) if there is no equation to chose }; enum Linearity { NONLINEAR = 0, STRICT_LEFT_LINEAR = 1, STRICT_RIGHT_LINEAR = 2, LINEAR = STRICT_LEFT_LINEAR | STRICT_RIGHT_LINEAR }; struct Equation { Word lhs; Word rhs; }; typedef Vector EquationVec; typedef list NullEquationQueue; // // Code for handling assignments in the normal case. // WordLevel::Result checkAssignmentNormalCase(int i); bool checkAssignmentsNormalCase(); bool reallyExpandAssignmentNormalCase(int i); WordLevel::Result expandAssignmentNormalCase(int i); WordLevel::Result expandAssignmentsNormalCase(); bool expandAssignmentsToFixedPointNormalCase(); // // Code for handling assignments in the collapse case. // WordLevel::Result checkAssignmentCollapseCase(int i); WordLevel::Result checkAssignmentsCollapseCase(); bool checkAssignmentsToFixedPointCollapseCase(); bool reallyExpandAssignmentCollapseCase(int i); WordLevel::Result expandAssignmentCollapseCase(int i); WordLevel::Result expandAssignmentsCollapseCase(); bool expandAssignmentsToFixedPointCollapseCase(); bool simplify(); // // Selection (for identity assignment). // bool systemLinear(); void computePinches(const Word& pincher, const Word& pinched, NatSet& pinchedVariables); void determinePinchedVariables(NatSet& pinchedVariables); void chooseVariablesToSelectFrom(); WordLevel::ResultPair trySelection(); WordLevel::ResultPair exploreSelections(); std::unique_ptr makeNewLevel(const Subst& unifier, const ConstraintMap& newConstraintMap, int nextFreshVariable); int chooseEquation(); void checkUnconstrainedVariables(const Word& word, NatSet& occurs, NatSet& nonlinear); void makePigPug(int linearity); // // Functions for dealing with the empty word. // bool handleNullEquations(); bool resolveOccursCheckFailure(int index, const Word& newValue); bool makeEmptyAssignment(int i); // // Functions for simplifying partial solution. // bool handleInitialOccursCheckFailure(); bool fullyExpandAssignments(); bool append(Word& newWord, const Word& word, int var); // // Functions for simplifying equations. // Result simplifyEquations(); Result simplifyEquation(Equation& equation); void expandWord(Word& newWord, const Word& oldWord); void append(Word& newWord, const Word& word); void updateRemainder(Word& word, int leftCursor, int rightCursor); Result cancel(int lhsVar, int rhsVar); Result checkForNull(const Word& newLhs, const Word& newRhs); Result checkForSingleton(const Word& newLhs, int lhsLeftCursor, int lhsRightCursor, const Word& newRhs, int rhsLeftCursor, int rhsRightCursor); Result unifyVariables(int lhsVar, int rhsVar); Result makeAssignment(int variable, const Word& source, int leftCursor, int rightCursor); void copyBack(Word& destination, const Word& source, int leftCursor, int rightCursor); // // Checks. // bool feasibleWithoutCollapse(const Word& lhs, const Word& rhs) const; bool levelFeasibleWithoutCollapse() const; bool insertCombination(const Subst& substitution); const LevelType levelType; const bool identityOptimizations; ConstraintMap constraintMap; NullEquationQueue nullEquations; Subst partialSolution; NatSet unsafeAssignments; EquationVec unsolvedEquations; // // If there are unsolved equations we need to pick one and solve it with PigPug. // int chosenEquation; std::unique_ptr pigPug; int incompletenessFlag; // to record the use of a transformation that does not preserve completeness // // If we are the INITIAL level and there are variables that can take empty // which were not set to empty during simplification, after PigPug fails (or // if there are no equations left to be solved with PigPug) we look at // selections of these variables to set to identity. // Vector idVariables; int selection; int nrSelections; set finalCombinations; // // If we are a SELECTION level we keep a pointer the INITIAL level that // created us. This is ugly because this level really belongs to a unique_ptr<> // but we rely on not dereferencing this pointer unless the INITIAL level still exists. // WordLevel* parent; }; inline void WordLevel::setTheoryConstraint(int variable, int theoryIndex) { constraintMap[variable].setTheoryConstraint(theoryIndex); } inline void WordLevel::setUpperBound(int variable, int upperBound) { constraintMap[variable].setUpperBound(upperBound); } inline void WordLevel::setTakeEmpty(int variable) { constraintMap[variable].setTakeEmpty(); } inline void WordLevel::addAssignment(int variable, const Word& value) { Word& rhs = partialSolution[variable]; if (rhs.size() == 1 && rhs[0] == variable) partialSolution[variable] = value; // deep copy else { // // Already have an assignement for variable so turn extra assignment into an equation. // int nrEquations = unsolvedEquations.size(); unsolvedEquations.expandBy(1); addEquation(nrEquations, value, rhs); } } inline void WordLevel::addEquation(int index, const Word& lhs, const Word& rhs) { Equation& e = unsolvedEquations[index]; e.lhs = lhs; // deep copy e.rhs = rhs; // deep copy } inline void WordLevel::addNullEquation(const Word& word) { nullEquations.push_back(word); } inline const WordLevel::Word& WordLevel::getAssignment(int variable) const { return partialSolution[variable]; } inline int WordLevel::getNrVariables() const { return partialSolution.size(); } #endif Maude-Maude3.5.1/src/Utility/wordLevel.cc0000664000175000017510000002703315036121435017571 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class WordSystem. // #include "macros.hh" #include "vector.hh" #include "wordLevel.hh" #include "indent.hh" #include "natSet.hh" // our stuff #include "wordLevel-normalCase.cc" #include "wordLevel-collapseCase.cc" #include "wordLevel-null.cc" #include "wordLevel-simplifyAssignments.cc" #include "wordLevel-simplifyEquations.cc" #include "wordLevel-selections.cc" #include "wordLevel-feasible.cc" WordLevel::WordLevel(LevelType levelType, int nrVariables, int nrEquations, bool identityOptimizations, WordLevel* parent) : levelType(levelType), identityOptimizations(identityOptimizations), constraintMap(nrVariables), partialSolution(nrVariables), unsolvedEquations(nrEquations), parent(parent) { // // Unbound variables must be bound to themselves; // by default variables are unconstrained. // for (int i = 0; i < nrVariables; ++i) partialSolution[i].append(i); chosenEquation = NOT_YET_CHOSEN; incompletenessFlag = 0; selection = 0; } WordLevel::ResultPair WordLevel::findNextPartialSolution() { if (selection != 0) { // // This level is finished with PigPug; but we still need to // explore selections. // return exploreSelections(); } if (chosenEquation == NOT_YET_CHOSEN) { // // Must be first call for the level. // if (!simplify()) { // // occurs-check failure or constraint clash during simplification. // return ResultPair(FAILURE, nullptr); } // // Need to check that all assignments are legal without // collapse and all equations are feasible without collapse. // // If we're a PIGPUG level then: // (1) PigPug only made collapse free legal assignments. // (2) Any assignment expansions were checked. // (3) Any assignments produced by equation simplification were checked. // (4) Any equation simplfications were checked. // // If we are an INITIAL or SELECTION level: // (1) We can't assume every equation and assignment were checked. // (2) Any checks were done assuming collapse was allowed. // Therefore we need to do a full check. // if (levelType != PIGPUG && !levelFeasibleWithoutCollapse()) { // // If we get a failure there is no point solving with PigPug. // However if we are in the INITIAL level we may be able to // make a SELECTION level. // return levelType == INITIAL ? trySelection() : ResultPair(FAILURE, nullptr); } if (levelType == SELECTION && !(parent->insertCombination(partialSolution))) { // // We're a SELECTION level and the set of variables set to empty // that we have after simplification has already been tried so // don't generate duplicate solutions. // return ResultPair(FAILURE, nullptr); } // // Need to chose an equation and create a PigPug. // int linearity = chooseEquation(); if (chosenEquation == NONE) return ResultPair(SUCCESS, nullptr); // no equations left to solve // // FIXME: If strictLeftLinear == false and we have more that one // equation, we might want to do a Diophantine check here, because // otherwise we are likely going to hit incompleteness. // makePigPug(linearity); } if (pigPug == 0) { // // We didn't make a PigPug; therefore we can't have any // unsolved equations and we must have returned the only solution // already. However if we are the INITIAL level we need to try // selecting variables to take empty. // if (levelType == INITIAL) return trySelection(); else return ResultPair(FAILURE, nullptr); } // // Get next PigPug solution; create a new WordLevel. // Subst unifier; ConstraintMap newConstraintMap; PigPug::ResultPair result = pigPug->getNextUnifier(unifier, newConstraintMap); int nextFreshVariable = result.second; if (nextFreshVariable == NONE) { // // No more solutions from PigPug. However if we are the INITIAL // level we need to try selecting variables to take empty. PigPug // may have returned an incompleteness flag and we have to keep // that to return to the caller. // if (levelType == INITIAL) { ResultPair r = trySelection(); r.first |= result.first; // preserve any incompleteness flag from last PigPug return return r; } else return ResultPair(result.first, nullptr); // failure } return ResultPair(result.first, makeNewLevel(unifier, newConstraintMap, nextFreshVariable)); } bool WordLevel::simplify() { // // We start by simplifying the partial solution. // if (levelType == INITIAL && !handleInitialOccursCheckFailure()) return false; if (levelType != PIGPUG && !handleNullEquations()) return false; if (!fullyExpandAssignments()) return false; // // Then we simplify the equations until there is no change in the partial solution. // for (;;) { Result result = simplifyEquations(); if (result == FAIL) return false; if (result == DONE) break; } return true; } std::unique_ptr WordLevel::makeNewLevel(const Subst& unifier, const ConstraintMap& newConstraintMap, int nextFreshVariable) { // // We have a PigPug solution - need to copy old stuff and new solution // into a new WordLevel object. // // First we count how many unsolved equations are left. // int equationCount = 0; for (const Equation& i : unsolvedEquations) { if (!(i.lhs.empty())) ++equationCount; } std::unique_ptr newLevel(new WordLevel(PIGPUG, nextFreshVariable, equationCount - 1, identityOptimizations)); // // Copy in partial substitution and unifier. // newLevel->constraintMap = newConstraintMap; // deep copy int nrVariables = partialSolution.size(); for (int i = 0; i < nrVariables; ++i) { DebugInfo("x" << i << " = " << unifier[i] << " newConstraint = " << newConstraintMap[i]); const Word& u = unifier[i]; if (u.size() == 1 && u[0] == i) // didn't get an assignment in unifier newLevel->addAssignment(i, partialSolution[i]); else // did get an assignment in unifier newLevel->addAssignment(i, u); } // // Copy in the equations we haven't solved yet. // int equationIndex = 0; int nrEquations = unsolvedEquations.size(); for (int i = 0; i < nrEquations; ++i) { if (i != chosenEquation) { Equation& e = unsolvedEquations[i]; if (!(e.lhs.empty())) { newLevel->addEquation(equationIndex, e.lhs, e.rhs); ++equationIndex; } } } return newLevel; } int WordLevel::chooseEquation() { // // Chosen an unsolved equation and set chosenEquation to it. // If there are no unsolved equations set chosenEquation to NONE. // Returns NONLINEAR, STRICT_LEFT_LINEAR, or LINEAR depending on the // chosen equation. // chosenEquation = NONE; // if we don't find one int nrEquations = unsolvedEquations.size(); for (int i = 0; i < nrEquations; ++i) { Equation& e = unsolvedEquations[i]; if (!(e.lhs.empty())) { // // Examine unconstrained variables. // NatSet lhsOccurs; NatSet lhsNonlinear; checkUnconstrainedVariables(e.lhs, lhsOccurs, lhsNonlinear); NatSet rhsOccurs; NatSet rhsNonlinear; checkUnconstrainedVariables(e.rhs, rhsOccurs, rhsNonlinear); if (lhsOccurs.disjoint(rhsOccurs)) { // // No unbounded variable occurs in both the lhs and rhs. // if (lhsNonlinear.empty()) { // // We found a strict left-linear equation so choose it. // chosenEquation = i; return rhsNonlinear.empty() ? LINEAR : STRICT_LEFT_LINEAR; } if (rhsNonlinear.empty()) { // // We found a strict right-linear equation so flip it into a // strict left-linear equation and choose it. // e.lhs.swap(e.rhs); chosenEquation = i; return STRICT_LEFT_LINEAR; } chosenEquation = i; // prefer an equation with disjoint lhs/rhs variable sets } if (chosenEquation == NONE) chosenEquation = i; // we'll take this one if we don't see anything better } } return NONLINEAR; // we didn't find a strict left-linear equation } void WordLevel::checkUnconstrainedVariables(const Word& word, NatSet& occurs, NatSet& nonlinear) { // // We look at the contents of a word and compile the set of unbounded // variables that occur and the subset of unbounded variables that occur // more than once. // for (int index : word) { if (constraintMap[index].isUnbounded()) { if (occurs.contains(index)) nonlinear.insert(index); else occurs.insert(index); } } } void WordLevel::makePigPug(int linearity) { Equation& e = unsolvedEquations[chosenEquation]; int nrVariables = partialSolution.size(); // // The PigPug equate optimization produces an incomplete set // of A-unifiers that is complete with respect to AU-subsumption // (rather than A-subsumption which corresponds to normal completeness). // That case in which I know it doesn't affect overall AU-completeness // is very restrictive. // bool useEquateOptimization = identityOptimizations && (linearity == LINEAR) && // maybe more conservative than needed unsolvedEquations.size() == 1; // maybe more conservative than needed pigPug.reset(new PigPug(e.lhs, e.rhs, constraintMap, nrVariables - 1, nrVariables, linearity, useEquateOptimization)); // might use make_unique() in future //dump(cerr, 0); } void WordLevel::dump(ostream& s, int indentLevel) { s << Indent(indentLevel) << "begin{WordLevel}" << endl; { s << Indent(indentLevel + 1) << "constraintMap = " << endl; int nrVariables = constraintMap.size(); for (int i = 0; i < nrVariables; ++i) { s << Indent(indentLevel + 2) << "X" << i << " : " << constraintMap[i] << endl; } } { s << Indent(indentLevel + 1) << "partialSolution = " << endl; int nrVariables = partialSolution.size(); for (int i = 0; i < nrVariables; ++i) { s << Indent(indentLevel + 2) << "x" << i << " |-> "; dumpWord(s, partialSolution[i]); s << endl; } } { s << Indent(indentLevel + 1) << "unsolvedEquations = " << endl; int nrEquations = unsolvedEquations.size(); for (int i = 0; i < nrEquations; ++i) { s << Indent(indentLevel + 2) << "e" << i << " : "; if (unsolvedEquations[i].lhs.empty()) s << "(cancelled)" << endl; else { dumpWord(s, unsolvedEquations[i].lhs); s << " =? "; dumpWord(s, unsolvedEquations[i].rhs); s << endl; } } } s << Indent(indentLevel) << "end{WordLevel}" << endl; } void WordLevel::dumpWord(ostream& s, const Word& word) { for (int index : word) s << "x" << index << " "; } Maude-Maude3.5.1/src/Utility/wordLevel-simplifyEquations.cc0000664000175000017510000003607315036121435023320 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2019 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for simplfying equations in a level. // WordLevel::Result WordLevel::simplifyEquations() { // // Try to simplify equations, expanding any changes the partial solution as we go. // Return values: // DONE : no changes to partial solution // CHANGED : partial solution changed // FAIL : variable constraint clash or occur-check failure // bool changed = false; for (Equation& eq : unsolvedEquations) { Result result = simplifyEquation(eq); if (result == FAIL) return FAIL; if (result == CHANGED) { // // Partial solution may now be denormalized. // changed = true; if (!fullyExpandAssignments()) return FAIL; } } return changed ? CHANGED : DONE; } void WordLevel::append(Word& newWord, const Word& word) { for (int i : word) newWord.append(i); } void WordLevel::expandWord(Word& newWord, const Word& oldWord) { // // We replace each variable in oldWord by its assignment // unless the assignment is marked as unsafe. This is to // avoid replacing a constrained variable with a word that // cannot meet the constraint without collapse and yet does // not have a unique collapse that could be forced. // In particular if we have // A |-> X Y Z // where A is theory constrained, we don't want to replace // an abstraction (say of an alien) with a bunch of variables // into which we cannot propagate the constriant. // for (int i : oldWord) { if (unsafeAssignments.contains(i)) newWord.append(i); else append(newWord, partialSolution[i]); } } void WordLevel::updateRemainder(Word& word, int leftCursor, int rightCursor) { // // We update the remainer of the word. Note that we have already // used all safe substitutions except any we just made; and they // will be variable for variable. // for (; leftCursor <= rightCursor; ++leftCursor) { int original = word[leftCursor]; if (!(unsafeAssignments.contains(original))) word[leftCursor] = partialSolution[original][0]; } } void WordLevel::copyBack(Word& destination, const Word& source, int leftCursor, int rightCursor) { int nrVariables = rightCursor - leftCursor + 1; destination.resize(nrVariables); for (int i = 0; i < nrVariables; ++i, ++leftCursor) destination[i] = source[leftCursor]; } WordLevel::Result WordLevel::checkForNull(const Word& newLhs, const Word& newRhs) { Assert(levelType != PIGPUG, "shouldn't be called for PIGPUG level"); DebugEnter(newLhs << " =? " << newRhs); // // Handle the case where one or both unificands has been expanded to empty. // Return values: // DONE : handled null =? null case // CHANGED : handled null case, null equation created // CONTINUE : non-null equation // if (newLhs.empty()) { if (newRhs.empty()) return DONE; // both sides became null nullEquations.push_back(newRhs); return CHANGED; } if (newRhs.empty()) { nullEquations.push_back(newLhs); return CHANGED; } return CONTINUE; } WordLevel::Result WordLevel::simplifyEquation(Equation& equation) { DebugEnter(equation.lhs << " =? " << equation.rhs); #if 0 int nrVariables = partialSolution.size(); for (int i = 0; i < nrVariables; ++i) { cerr << "x" << i << " |-> " << partialSolution[i] << " " << constraintMap[i]; if (unsafeAssignments.contains(i)) cerr << " (UNSAFE)"; cerr << endl; } #endif // // Try to simplify equation by left and right cancellation. // Return values: // DONE : either no cancellation or cancellation didn't change partial solution. // CHANGED : cancellation and partial solution or null equations changed // FAIL : variable constraint clash or occur-check failure // if (equation.lhs.empty()) return DONE; // equation already simplified away // // First we substitute in any assignments to the lhs and rhs. // Word newLhs; expandWord(newLhs, equation.lhs); Word newRhs; expandWord(newRhs, equation.rhs); DebugInfo("after expansion " << newLhs << " =? " << newRhs); if (levelType == PIGPUG) { // // We should not have new null assignments in a PIGPUG level // because PigPug does not make null bindings and simplyEquations() // isn't allowed to (to avoid duplicating work that will be done // in a SELECTION level). // Thus substituting in an equation that didn't previously have // a null unificand should not produce a null unificand. // Assert(!newLhs.empty() , "lhs of equation exanded to empty in PIGPUG level"); Assert(!newRhs.empty() , "rhs of equation exanded to empty in PIGPUG level"); } else { // // Check for the possibility that one or both sides may // have become null. This can happen in the INITIAL level // or in a SELECTION level because of null assignments. // Result result = checkForNull(newLhs, newRhs); if (result == CHANGED) { if (!handleNullEquations()) return FAIL; } if (result != CONTINUE) { equation.lhs.clear(); equation.rhs.clear(); return result; } } // // We mark the non-cancelled portion of each word with cursors. // int lhsLeftCursor = 0; int lhsRightCursor = newLhs.size() - 1; int rhsLeftCursor = 0; int rhsRightCursor = newRhs.size() - 1; // // First we check for singleton case. // { Result result = checkForSingleton(newLhs, lhsLeftCursor, lhsRightCursor, newRhs, rhsLeftCursor, rhsRightCursor); if (result == FAIL) return FAIL; if (result == UNSAFE) return DONE; // give up with this simplification if (result != CONTINUE) { // // Singleton case - equation disappears. // equation.lhs.clear(); equation.rhs.clear(); return result; } } // // Now we work from the ends, cancelling equal variables and // variables that are both constrained. // bool changed = false; // // Left cancellation // for (;;) { Result result = cancel(newLhs[lhsLeftCursor], newRhs[rhsLeftCursor]); if (result == FAIL) return FAIL; // variable theory clash if (result == DONE) break; // no cancellation // // We cancelled. // ++lhsLeftCursor; ++rhsLeftCursor; DebugInfo("cancelled at left end " << lhsLeftCursor << " ~ " << rhsLeftCursor); if (result == CHANGED) { // // We know that the only possible change is a constrained variable to // constrained variable assignment, so we can do a cheap update on the remainders. // changed = true; updateRemainder(newLhs, lhsLeftCursor, lhsRightCursor); updateRemainder(newRhs, rhsLeftCursor, rhsRightCursor); } result = checkForSingleton(newLhs, lhsLeftCursor, lhsRightCursor, newRhs, rhsLeftCursor, rhsRightCursor); if (result == FAIL) return FAIL; if (result == UNSAFE) { // // We've gotten the equation simplified to a singleton case // but the singleton variable has an unsafe assignment so // we have to postpone any further simplification until // constraint propagation or selection have resolved the unsafe // binding. We just save the work we did back into the equation. // copyBack(equation.lhs, newLhs, lhsLeftCursor, lhsRightCursor); copyBack(equation.rhs, newRhs, rhsLeftCursor, rhsRightCursor); DebugInfo("Can't turn " << equation.lhs << " =? " << equation.rhs << " into an assignment because an unsafe assignment already exists"); return changed ? CHANGED : DONE; } if (result != CONTINUE) { // // Singleton case - equation disappears. // equation.lhs.clear(); equation.rhs.clear(); return changed ? CHANGED : result; } } // // Right cancellation // for (;;) { Result result = cancel(newLhs[lhsRightCursor], newRhs[rhsRightCursor]); if (result == FAIL) return FAIL; // variable theory clash if (result == DONE) break; // no cancellation // // We cancelled. // --lhsRightCursor; --rhsRightCursor; DebugInfo("cancelled at right end " << lhsRightCursor << " ~ " << rhsRightCursor); if (result == CHANGED) { // // We know that the only possible change is a constrained variable to // constraint variable assignment, so we can do a cheap update on the remainders. // changed = true; updateRemainder(newLhs, lhsLeftCursor, lhsRightCursor); updateRemainder(newRhs, rhsLeftCursor, rhsRightCursor); } result = checkForSingleton(newLhs, lhsLeftCursor, lhsRightCursor, newRhs, rhsLeftCursor, rhsRightCursor); if (result == FAIL) return FAIL; if (result == UNSAFE) { // // We've gotten the equation simplified to a singleton case // but the singleton variable has an unsafe assignment so // we have to postpone any further simplification until // constraint propagation or selection have resolved the unsafe // binding. We just save the work we did back into the equation. // copyBack(equation.lhs, newLhs, lhsLeftCursor, lhsRightCursor); copyBack(equation.rhs, newRhs, rhsLeftCursor, rhsRightCursor); return changed ? CHANGED : DONE; } if (result != CONTINUE) { // // Singleton case - equation disappears. // equation.lhs.clear(); equation.rhs.clear(); return changed ? CHANGED : result; } } // // If we reach here, we have fully cancelled and both sides are non-singleton. // copyBack(equation.lhs, newLhs, lhsLeftCursor, lhsRightCursor); copyBack(equation.rhs, newRhs, rhsLeftCursor, rhsRightCursor); if (levelType == PIGPUG && !feasibleWithoutCollapse(equation.lhs, equation.rhs)) return FAIL; return changed ? CHANGED : DONE; } WordLevel::Result WordLevel::cancel(int lhsVar, int rhsVar) { DebugEnter("x" << lhsVar << " =? x" << rhsVar); // // Try to cancel lhsVar and rhsVar by unifying them. // Return values: // DONE : no cancellation possible // CHANGED : cancellation caused change to partial solution // FAIL : incompatible constrained variables // CONTINUE : cancellation, no change to partial solution // if (lhsVar == rhsVar) return CONTINUE; // cancel variable else { // // If both variables are constrained to unify with exactly one other // variable we cancel them via an assignment or we have a clash. // VariableConstraint lhsConstraint = constraintMap[lhsVar]; VariableConstraint rhsConstraint = constraintMap[rhsVar]; if (lhsConstraint.getUpperBound() == 1 && rhsConstraint.getUpperBound() == 1) { // // Forced unification if we in a PIGPUG level or // neither variable can take empty nor has an unsafe assignment. // if (levelType == PIGPUG || !(lhsConstraint.canTakeEmpty() || unsafeAssignments.contains(lhsVar) || rhsConstraint.canTakeEmpty() || unsafeAssignments.contains(rhsVar))) { // // Both variables should be unbound because we already substituted // any safe bindings in. // Word& assignment = partialSolution[lhsVar]; Assert(assignment.size() == 1 && assignment[0] == lhsVar, "unexpected bound variable"); // // It doesn't matter which way around we may the assigment // because we're going to check/propagate constraints // afterwards. // assignment[0] = rhsVar; Result result = (levelType == PIGPUG) ? checkAssignmentNormalCase(lhsVar) : checkAssignmentCollapseCase(lhsVar); return (result == FAIL) ? FAIL : CHANGED; } } } return DONE; } WordLevel::Result WordLevel::checkForSingleton(const Word& newLhs, int lhsLeftCursor, int lhsRightCursor, const Word& newRhs, int rhsLeftCursor, int rhsRightCursor) { // // Handle cases when one or both unificands has been cancelled down to a single variable. // Return values: // DONE : handled singleton case, but partial solution didn't change (equal variables) // CHANGED : handled singleton, partial solution changed // FAIL : handled singleton case, variable constraint clash or occur-check failure // CONTINUE : non-singleton equation // UNSAFE : singleton case that can't be handled because of unsafe assignment(s). // bool singleton = false; if (lhsLeftCursor == lhsRightCursor) { int var = newLhs[lhsLeftCursor]; // // We can't assign to the lhs variable if it has an // unsafe assignment already. // if (!(unsafeAssignments.contains(var))) return makeAssignment(var, newRhs, rhsLeftCursor, rhsRightCursor); DebugInfo("lhs x" << var << " has an unsafe assignment " << partialSolution[var]); DebugInfo("unsafeAssignments = " << unsafeAssignments); singleton = true; } if (rhsLeftCursor == rhsRightCursor) { int var = newRhs[rhsLeftCursor]; // // We can't assign to the rhs variable if it has an // unsafe assignment already. // if (!(unsafeAssignments.contains(var))) return makeAssignment(var, newLhs, lhsLeftCursor, lhsRightCursor); DebugInfo("rhs x" << var << " has an unsafe assignment " << partialSolution[var]); DebugInfo("unsafeAssignments = " << unsafeAssignments); return UNSAFE; } return singleton ? UNSAFE : CONTINUE; } WordLevel::Result WordLevel::makeAssignment(int variable, const Word& source, int leftCursor, int rightCursor) { Word& destination = partialSolution[variable]; Assert(destination.size() == 1 && destination[0] == variable, "should be free"); int nrVariables = rightCursor - leftCursor + 1; if (nrVariables == 1 && source[leftCursor] == variable) return DONE; // equal variables destination.resize(nrVariables); if (levelType == PIGPUG) { for (int i = 0; i < nrVariables; ++i, ++leftCursor) { int var = source[leftCursor]; if (var == variable) return FAIL; // occurs-check failure destination[i] = var; } return (checkAssignmentNormalCase(variable) == FAIL) ? FAIL : CHANGED; } // // In INITIAL and SELECTION levels we try to resolve occurs-checks failure. // bool occursCheckFailure = false; for (int i = 0; i < nrVariables; ++i, ++leftCursor) { int var = source[leftCursor]; if (var == variable) occursCheckFailure = true; destination[i] = var; } if (occursCheckFailure) return resolveOccursCheckFailure(variable, destination) ? CHANGED : FAIL; return (checkAssignmentCollapseCase(variable) == FAIL) ? FAIL : CHANGED; } Maude-Maude3.5.1/src/Utility/wordLevel-simplifyAssignments.cc0000664000175000017510000000365415036121435023642 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for expanding the assignments in a level. // bool WordLevel::handleInitialOccursCheckFailure() { // // We never create assignments that look like // X |-> ... X ... // other than X |-> X which indicates X is unbound. // // However it is possible for a user to pass in such an // assignment so we need to resolve those up front. // int nrAssignments = partialSolution.size(); for (int i = 0; i < nrAssignments; ++i) { Word& word = partialSolution[i]; if (word.size() > 1) { for (int j : word) { if (i == j) { if (resolveOccursCheckFailure(i, word)) break; else return false; } } } } return true; } bool WordLevel::fullyExpandAssignments() { if (levelType == PIGPUG) return expandAssignmentsToFixedPointNormalCase(); return expandAssignmentsToFixedPointCollapseCase(); } bool WordLevel::append(Word& newWord, const Word& word, int var) { bool occursCheckFail = false; for (int i : word) { newWord.append(i); if (i == var) occursCheckFail = true; } return occursCheckFail; } Maude-Maude3.5.1/src/Utility/wordLevel-selections.cc0000664000175000017510000002251615036121435021740 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for expanding selections of variables to set to empty. // bool WordLevel::systemLinear() { // // Variables in an unsafe binding are considered pseudo-constrained. // They will either be eliminated by an empty assignment or constrained // by the pass that removed the unsafe designation before PigPug runs. // NatSet pseudoConstrained; for (int i : unsafeAssignments) { for (int index : partialSolution[i]) pseudoConstrained.insert(index); } // // Check if no unconstrained variable appears more than once in the // system of equations. Pseudo-constrained variables are treated as // being constrained for this computation. // NatSet seenVariables; for (const Equation& e : unsolvedEquations) { if (!(e.lhs.empty())) // simplification may have disposed of some equations { for (int index : e.lhs) { if (constraintMap[index].isUnbounded() && !(pseudoConstrained.contains(index))) { if (seenVariables.contains(index)) return false; seenVariables.insert(index); } } for (int index : e.rhs) { if (constraintMap[index].isUnbounded() && !(pseudoConstrained.contains(index))) { if (seenVariables.contains(index)) return false; seenVariables.insert(index); } } } } return true; } void WordLevel::computePinches(const Word& pincher, const Word& pinched, NatSet& pinchedVariables) { int pincherSize = pincher.size(); int pinchedSize = pinched.size(); if (!(constraintMap[pincher[0]].isUnbounded())) { // // Left end of pincher is a constrained variable. This can pinch // from the left end until it hits a variable that can't take empty // or the right end variable. // for (int i = 0; i < pinchedSize - 1; ++i) { int index = pinched[i]; if (!(constraintMap[index].canTakeEmpty())) break; // can't pinch past this variable pinchedVariables.insert(index); } } if (!(constraintMap[pincher[pincherSize - 1]].isUnbounded())) { // // Right end of pincher is a constrained variable. This can pinch // from the right end until it hits a variable that can't take empty // or the left end variable. // int pinchedSize = pinched.size(); for (int i = pinchedSize - 1; i > 0; --i) { int index = pinched[i]; if (!(constraintMap[index].canTakeEmpty())) break; // can't pinch past this variable pinchedVariables.insert(index); } } for (int i = pincherSize - 1; i > 0; --i) { if (!(constraintMap[pincher[i]].isUnbounded()) && !(constraintMap[pincher[i - 1]].isUnbounded())) { // // Adjacent pair of constrained variables is assumed to // pinch everything other than the ends (which they may // have already pinched above. // for (int j = pinchedSize - 2; j > 0; --j) pinchedVariables.insert(pinched[j]); break; } } } void WordLevel::determinePinchedVariables(NatSet& pinchedVariables) { // // A variable is considered to be "pinched" if // it can be hemmed in by constrained variables in // the other unificand and forced to identity. // // We don't have a precise operational way // to determine pinched variables so we compute // an over-approximation. // for (const Equation& e : unsolvedEquations) { if (!(e.lhs.empty())) // simplification may be disposed of some equations { computePinches(e.lhs, e.rhs, pinchedVariables); computePinches(e.rhs, e.lhs, pinchedVariables); } } // // Unsafe assignments can pinch variables since they // don't respect constraints on the assumption they will // be resolved by collapse. // for (int i : unsafeAssignments) { for (int index : partialSolution[i]) pinchedVariables.insert(index); } } void WordLevel::chooseVariablesToSelectFrom() { int nrOriginalVariables = partialSolution.size(); if (identityOptimizations && systemLinear()) { // // Actually an over-approximation. // NatSet pinchedVariables; determinePinchedVariables(pinchedVariables); // // Only variables that are potentially pinched will // be considered for identity assignment. Identity // assignment to a variable X that can't be pinched // must produce a unifier that is less general than // one where the X takes a fresh variable #1 and // the #1 is also added to the assignment for some // Y variable in the other unificand without disturbing // the other assignments. // // This can happen because Y doesn't appear anywhere // else and Y is guaranteed to exist because X can't // be pinched between two constrained variables or // a constrained variable and a word end in the other // unificand. // // But there is also the possibility of an assignment, // say A |-> X Y Z, pinching X Y Z if A is constrained. // The assignment is made because we are assuming potential // collapses which must be explored. // for (int i = 0; i < nrOriginalVariables; ++i) { Word& binding = partialSolution[i]; if (constraintMap[i].canTakeEmpty() && pinchedVariables.contains(i) && binding.size() == 1 && binding[0] == i) { DebugInfo("x" << i << " can take empty, is potentially pinched and is free"); idVariables.append(i); } } } else { // // All variables that can take the identity and are free // must be considered. This will usually lead to an // explosion of redundant unifiers. // for (int i = 0; i < nrOriginalVariables; ++i) { Word& binding = partialSolution[i]; if (constraintMap[i].canTakeEmpty() && binding.size() == 1 && binding[0] == i) { DebugInfo("x" << i << " can take empty and is free"); idVariables.append(i); } } } } WordLevel::ResultPair WordLevel::trySelection() { chooseVariablesToSelectFrom(); int nrIdVariables = idVariables.size(); nrSelections = (1 << nrIdVariables) - 1; DebugInfo("idVariables.size() = " << nrIdVariables << " nrSelections = " << nrSelections); return (nrIdVariables == 0) ? ResultPair(FAILURE, nullptr) : exploreSelections(); } WordLevel::ResultPair WordLevel::exploreSelections() { ++selection; if (selection > nrSelections) return ResultPair(FAILURE, nullptr); DebugInfo("-------- Trying selection " << selection << " --------"); // // Count the number of equations that survived simplification. // int equationCount = 0; for (const Equation& i : unsolvedEquations) { if (!(i.lhs.empty())) ++equationCount; } // // Make a selection WordLevel. // std::unique_ptr newLevel(new WordLevel(SELECTION, partialSolution.size(), equationCount, identityOptimizations, // passing this pointer is ugly since // we're owned by a unique_ptr<> this)); newLevel->constraintMap = constraintMap; // deep copy { int index = 0; int bitMask = 1; Word emptyWord; int nrIdVariables = idVariables.size(); int nrVariables = partialSolution.size(); for (int i = 0; i < nrVariables; ++i) { if (index < nrIdVariables && i == idVariables[index]) { int oldBitMask = bitMask; ++index; bitMask <<= 1; if (selection & oldBitMask) { // // We're going to null variable i because it is part of // our selection. // DebugInfo("setting x" << i << " to null"); newLevel->addAssignment(i, emptyWord); continue; } } newLevel->addAssignment(i, partialSolution[i]); } } { int equationIndex = 0; int nrEquations = unsolvedEquations.size(); for (int i = 0; i < nrEquations; ++i) { Equation& e = unsolvedEquations[i]; if (!(e.lhs.empty())) { newLevel->addEquation(equationIndex, e.lhs, e.rhs); ++equationIndex; } } } // // Creating a selection level cannot introduce incompleteness itself. // return ResultPair(SUCCESS, std::move(newLevel)); } bool WordLevel::insertCombination(const Subst& substitution) { Assert(levelType == INITIAL, "levelType = " << levelType); int code = 0; int bitMask = 1; int index = 0; int nrIdVariables = idVariables.size(); int nrOriginalVariables = partialSolution.size(); for (int i = 0; i < nrOriginalVariables; ++i) { if (index < nrIdVariables && i == idVariables[index]) { // // One of the variables we are selecting over. // if (substitution[i].empty()) code |= bitMask; ++index; bitMask <<= 1; } } return finalCombinations.insert(code).second; } Maude-Maude3.5.1/src/Utility/wordLevel-null.cc0000664000175000017510000001040115036121435020530 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2020-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for handling empty assignments, null equations and occurs-check failure. // bool WordLevel::makeEmptyAssignment(int i) { // // Assigns the empty word to variable i. Returns true // if assignment made and false if the i was already assigned // the empty word. // Word& currentAssignment = partialSolution[i]; if (!(currentAssignment.empty())) { if (currentAssignment.size() == 1 && currentAssignment[0] == i) ; // maps to itself so can update without issue else { // // Maps to something else so we need to create a new null equation. // nullEquations.push_back(currentAssignment); } currentAssignment.clear(); return true; // assignment made } return false; // no change } bool WordLevel::handleNullEquations() { Assert(levelType != PIGPUG, "should not be called in PIGPUG level"); // // Resolve existing null equations, which may create new null equations // until we encounter failure or there are no null equations left. // There can only be finitely many new null equations created since // each one results from a variable being assigned empty. // while (!(nullEquations.empty())) { for (int i : nullEquations.front()) { if (constraintMap[i].canTakeEmpty()) (void) makeEmptyAssignment(i); else { // // We needed x_i to take the empty word but this is // forbidden by its constraint so the whole WordLevel // will fail so we don't care about leaving it in an // inconsistent state. // return false; } } // // Null equation at the front of the queue has been resolved. // nullEquations.pop_front(); } // // All null equations sucessfully resolved. // return true; } bool WordLevel::resolveOccursCheckFailure(int index, const Word& newValue) { Assert(levelType != PIGPUG, "should not be called in PIGPUG level"); // // We want to assign newValue to variable index, but newValue // contains index. We see if this can be resolved via collapse. // May update assignments and create new null equations. // int nrOccurrences = 0; for (int i : newValue) { if (i == index) ++nrOccurrences; else { if (constraintMap[i].canTakeEmpty()) (void) makeEmptyAssignment(i); else { // // We needed x_i to take the empty word but this is // forbidden by its constraint so the whole WordLevel // will fail so we don't care about leaving it in an // inconsistent state. // return false; } } } Assert(nrOccurrences >= 1, "must have occurrence for an occur-check failure"); if (nrOccurrences > 1) { // // Variable index occurs multiple time so it must take empty itself. // if (constraintMap[index].canTakeEmpty()) { // // We assume we can freely replace the value of variable index // because that's what were called to do. // DebugInfo("binding x" << index << " to empty to solve multiple occurs-check failure"); partialSolution[index].clear(); } else { // // As above, we can bail and leave things in an inconsistent state. // return false; } } else { // // Variable index becomes free because everything else has collapsed. // Word& currentAssignment = partialSolution[index]; currentAssignment.resize(1); currentAssignment[0] = index; } return handleNullEquations(); } Maude-Maude3.5.1/src/Utility/wordLevel-normalCase.cc0000664000175000017510000001344515036121435021655 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for handling checking and inter-reducing assignments where // collapse to empty is not allowed. // WordLevel::Result WordLevel::checkAssignmentNormalCase(int i) { // // Check the assignment to variable i. // We can FAIL if assignment can't satisfy its constraint. // We can tighten constraints on variables in the assignment. // // Return values: // FAIL : no consistent - whole layer fails // DONE : no changes // CHANGED : at least one constraint or binding changed. // // See if we actually have an upperbound constraint to enforce. // VariableConstraint lhsConstraint = constraintMap[i]; int upperBound = lhsConstraint.getUpperBound(); if (upperBound == 0) return DONE; // no constraint to enforce // // Three cases depending on the size of the binding: 0, 1 or many variables. // Word& word = partialSolution[i]; int wordSize = word.size(); if (wordSize == 0) { // // This can happen if the variable got an empty assignment // during simplification in the INITIAL level, during selection // or during simplification in the SELECTION level. // return DONE; } if (wordSize == 1) { int rhs = word[0]; if (rhs == i) return DONE; // bound to self - i.e. free // // We have X |-> Y // We propagate the constraint of X on to Y. // VariableConstraint lhsConstraint = constraintMap[i]; VariableConstraint rhsConstraint = constraintMap[rhs]; if (!(rhsConstraint.intersect(lhsConstraint))) return FAIL; // incompatible if (constraintMap[rhs] == rhsConstraint) return DONE; // no change constraintMap[rhs] = rhsConstraint; // update return CHANGED; // might trigger more propagations } if (wordSize > upperBound) return FAIL; // without collapse there is no way to satisfy the constraint // // Constraint is satisfied but we might be able to tighten constraints // on rhs variables. // Result result = DONE; int newBound = upperBound - wordSize + 1; for (int j : word) { VariableConstraint& rhsConstraint = constraintMap[j]; int rhsBound = rhsConstraint.getUpperBound(); if (rhsBound == 0 || newBound < rhsBound) { //cout << "lowered bound from " << rhsBound << " to " << newBound << endl; rhsConstraint.setUpperBound(newBound); result = CHANGED; } } return result; } bool WordLevel::checkAssignmentsNormalCase() { // // Check all assignments once. Because all assignments // are fully interreduced, all rhs variables are free and // thus any constrains propagated from lhs to rhs cannot // propagate any further, so once is enough. // int nrAssignments = partialSolution.size(); for (int i = 0; i < nrAssignments; ++i) { if (checkAssignmentNormalCase(i) == FAIL) return false; } return true; } bool WordLevel::reallyExpandAssignmentNormalCase(int i) { // // Returns false if this provokes level failure. // Word& word = partialSolution[i]; Word newWord; for (int j : word) { Assert(j != i, "occurs-check issue for assignment variable x" << i << " |-> " << word); Word& assigned = partialSolution[j]; if (assigned.size() == 1 && assigned[0] == j) newWord.append(j); // j is assigned itself else if (append(newWord, assigned, i)) return false; // occur-check failure can't be solved without collapse } // // Replace old assignment with new assignment. // word.swap(newWord); return true; } WordLevel::Result WordLevel::expandAssignmentNormalCase(int i) { // // Check if assignment needs expansion, i.e. that a variable in // rhs has an assignment different from itself. // Word& word = partialSolution[i]; for (int j : word) { if (j == i) { Assert(word.size() == 1, "already dealt with occurs-check failure"); return DONE; } Word& assigned = partialSolution[j]; if (!(assigned.size() == 1 && assigned[0] == j)) return reallyExpandAssignmentNormalCase(i) ? CHANGED : FAIL; } return DONE; } WordLevel::Result WordLevel::expandAssignmentsNormalCase() { bool changed = false; int nrAssignments = partialSolution.size(); for (int i = 0; i < nrAssignments; ++i) { Result result = expandAssignmentNormalCase(i); if (result == FAIL) return FAIL; if (result == CHANGED) changed = true; } return changed ? CHANGED : DONE; } bool WordLevel::expandAssignmentsToFixedPointNormalCase() { // // We keep expanding assignments until fixed point. // This is needed beause we could have something like // X |-> Y a // Y |-> Z b // Z |-> c // and after one pass through we would still have // X |-> Z b a // where Z appears in the range but is bound to something // other than itself. // for (;;) { Result result = expandAssignmentsNormalCase(); if (result == FAIL) return false; if (result == DONE) break; } // // Check and propagate constraints. // return checkAssignmentsNormalCase(); } Maude-Maude3.5.1/src/Utility/wordLevel-feasible.cc0000664000175000017510000000603415036121435021337 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2020-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for checking feasibility of equations and system. // bool WordLevel::feasibleWithoutCollapse(const Word& lhs, const Word& rhs) const { int nrVariables = partialSolution.size(); Vector counts(nrVariables); for (int& count : counts) count = 0; // // lhs is positive. // for (int i : lhs) ++(counts[i]); // // rhs is negative. // for (int i : rhs) --(counts[i]); // // Now we compute min-needed and max-can-take values // for each side of the equation. // int lhsMinNeeded = 0; int lhsMaxCanTake = 0; int rhsMinNeeded = 0; int rhsMaxCanTake = 0; for (int i = 0; i < nrVariables; ++i) { int balance = counts[i]; if (balance != 0) { // // Variable didn't cancel completely so it will play a role in // the feasibility calculation. // VariableConstraint vc = constraintMap[i]; if (balance > 0) { lhsMinNeeded += balance; if (lhsMaxCanTake != UNBOUNDED) // once we get to UNBOUNDED we stay there { int upperBound = vc.getUpperBound(); if (upperBound == 0) lhsMaxCanTake = UNBOUNDED; // unbounded case else lhsMaxCanTake += upperBound * balance; } } else { rhsMinNeeded -= balance; if (rhsMaxCanTake != UNBOUNDED) // once we get to UNBOUNDED we stay there { int upperBound = vc.getUpperBound(); if (upperBound == 0) rhsMaxCanTake = UNBOUNDED; // unbounded case else rhsMaxCanTake -= upperBound * balance; } } } } // // We're feasible if there is no conflict among these values. // return lhsMinNeeded <= rhsMaxCanTake && rhsMinNeeded <= lhsMaxCanTake; } bool WordLevel::levelFeasibleWithoutCollapse() const { // // First we check for bounds issues with partial solution. // // We already propagate constraints on assignments and either // fail bad assignments (PIGPUG levels) or marked them as // unsafe (INITIAL and SELECTION levels). // if (!(unsafeAssignments.empty())) return false; // // Then we check that each unsolved equation is feasible on its own. // for (const Equation& e : unsolvedEquations) { if (!feasibleWithoutCollapse(e.lhs, e.rhs)) return false; } return true; } Maude-Maude3.5.1/src/Utility/wordLevel-collapseCase.cc0000664000175000017510000002006315036121435022161 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for handling checking and inter-reducing assignments where // collapse to empty is allowed. // WordLevel::Result WordLevel::checkAssignmentCollapseCase(int i) { // // Check the assignment to variable i. // We can FAIL if assignment can't satisfy its constraint. // We can force empty assignments for variables in the assignment. // We can create null equations. // We can tighten constraints on variables in the assignment. // We can mark assignments as being unsafe to substitute in other // assignments and equations. // // Return values: // FAIL : no consistent - whole layer fails // DONE : no changes // CHANGED : at least one constraint or binding changed. // // We about to recheck the safety of this assignment so // we assume it is safe until proven otherwise. // unsafeAssignments.subtract(i); // // See if we actually have an upperbound constraint to enforce. // VariableConstraint lhsConstraint = constraintMap[i]; int upperBound = lhsConstraint.getUpperBound(); if (upperBound == 0) return DONE; // no constraint to enforce // // Three cases depending on the size of the binding: 0, 1 or many variables. // Word& word = partialSolution[i]; int wordSize = word.size(); if (wordSize == 0) return DONE; if (wordSize == 1) { int rhs = word[0]; if (rhs == i) return DONE; // bound to self - i.e. free // // We have X |-> Y // We propagate the constraint of X on to Y. // VariableConstraint lhsConstraint = constraintMap[i]; VariableConstraint rhsConstraint = constraintMap[rhs]; if (!(rhsConstraint.intersect(lhsConstraint))) return FAIL; // incompatible if (constraintMap[rhs] == rhsConstraint) return DONE; // no change constraintMap[rhs] = rhsConstraint; // update return CHANGED; // might trigger more propagations } // // First we calculate the bound we need if all variables // that can take empty actually do so. // int neededBound = 0; for (int j : word) { if (!(constraintMap[j].canTakeEmpty())) ++neededBound; } if (neededBound > upperBound) { // // Even with collapse, there is no way to meet our bound. // return FAIL; } if (neededBound == upperBound) { // // Our bound is tight so we can force a unique collapse. // This puts all rhs variables that can take empty to empty // and places a bound of 1 on all others. // bool changed = false; for (int j : word) { if (constraintMap[j].canTakeEmpty()) { if (makeEmptyAssignment(j)) // may introduce null equations changed = true; } else { if (constraintMap[j].getUpperBound() != 1) { constraintMap[j].setUpperBound(1); changed = true; } } } if (changed) return handleNullEquations() ? CHANGED : FAIL; return DONE; } // // Bound is loose so there may be multiple ways to satisfy it. // if (wordSize > upperBound) { // // Current assignment doesn't satisfy bound so it could // produce unnecessarily hard equations and incompleteness // if we substitututed. But there is currently no unique // resolution that we can force without losing solutions. // We defer consideration of this assignment until it is // resolved by constraint propagation or selection. // unsafeAssignments.insert(i); return DONE; } // // Constraint is satisfied but we might be able to tighten constraints // on rhs variables. // Result result = DONE; int boundForTakeEmpty = upperBound - neededBound; for (int j : word) { VariableConstraint& rhsConstraint = constraintMap[j]; int rhsBound = rhsConstraint.getUpperBound(); // // Bound for variables that can take the empty assignment // is one variable tighter than those that can't. // int newBound = constraintMap[j].canTakeEmpty() ? boundForTakeEmpty : (boundForTakeEmpty + 1); if (rhsBound == 0 || newBound < rhsBound) { rhsConstraint.setUpperBound(newBound); result = CHANGED; } } return result; } WordLevel::Result WordLevel::checkAssignmentsCollapseCase() { // // Check all assignments once. // bool changed = false; int nrAssignments = partialSolution.size(); for (int i = 0; i < nrAssignments; ++i) { Result result = checkAssignmentCollapseCase(i); if (result == FAIL) return FAIL; if (result == CHANGED) changed = true; } return changed ? CHANGED : DONE; } bool WordLevel::checkAssignmentsToFixedPointCollapseCase() { // // Keep propagating constraints to fixed point. // for (;;) { Result result = checkAssignmentsCollapseCase(); if (result == FAIL) return false; if (result == DONE) break; } return true; } bool WordLevel::reallyExpandAssignmentCollapseCase(int i) { // // Returns false if this provokes level failure. // Word& word = partialSolution[i]; Word newWord; bool occursCheckFail = false; for (int j : word) { Assert(j != i, "occurs-check issue for assignment variable x" << i << " |-> " << word); if (unsafeAssignments.contains(j)) newWord.append(j); // don't replace j by its assignment else { Word& assigned = partialSolution[j]; if (assigned.size() == 1 && assigned[0] == j) newWord.append(j); // j is assigned itself else occursCheckFail |= append(newWord, assigned, i); } } if (occursCheckFail) return resolveOccursCheckFailure(i, newWord); // // Replace old assignment with new assignment. // word.swap(newWord); Result result = checkAssignmentCollapseCase(i); return result == DONE || (result == CHANGED && checkAssignmentsToFixedPointCollapseCase()); } WordLevel::Result WordLevel::expandAssignmentCollapseCase(int i) { // // Check if assignment needs expansion, i.e. that a variable in // rhs has an assignment different from itself. // Word& word = partialSolution[i]; for (int j : word) { if (j == i) { Assert(word.size() == 1, "already dealt with occurs-check failure"); return DONE; } if (!unsafeAssignments.contains(j)) { Word& assigned = partialSolution[j]; if (!(assigned.size() == 1 && assigned[0] == j)) return reallyExpandAssignmentCollapseCase(i) ? CHANGED : FAIL; } } return DONE; } WordLevel::Result WordLevel::expandAssignmentsCollapseCase() { bool changed = false; int nrAssignments = partialSolution.size(); for (int i = 0; i < nrAssignments; ++i) { Result result = expandAssignmentCollapseCase(i); if (result == FAIL) return FAIL; if (result == CHANGED) changed = true; } return changed ? CHANGED : DONE; } bool WordLevel::expandAssignmentsToFixedPointCollapseCase() { // // First we check and maximally propagate constraints. // if (!checkAssignmentsToFixedPointCollapseCase()) return false; // // Then we keep expanding assignments until fixed point. Any // time we change an assignment, we will check it and if // might affect constraints we maximally propagate them again. // for (;;) { Result result = expandAssignmentsCollapseCase(); if (result == FAIL) return false; if (result == DONE) break; } return true; } Maude-Maude3.5.1/src/Utility/vector.hh0000664000175000017510000003301215036121435017134 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class template for vectors with optional bounds checking. // #ifndef _vector_hh_ #define _vector_hh_ #include #include #include "preVector.hh" template class Vector { public: typedef T value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef value_type& reference; typedef const value_type& const_reference; typedef size_t size_type; typedef ptrdiff_t difference_type; #ifdef NO_ASSERT typedef pointer iterator; typedef const_pointer const_iterator; #else class iterator; friend class iterator; class const_iterator; friend class const_iterator; #endif Vector(); Vector(size_type length); Vector(const Vector& original); Vector(Vector&& original); // move ctor ~Vector(); Vector& operator=(const Vector& original); Vector& operator=(Vector&& original); // move assignment // // We don't support rbegin()/rend() - their semantics are too error prone; or cbegin()/cend()/crbegin()/crend(). // iterator begin(); iterator end(); const_iterator begin() const; const_iterator end() const; // // We don't currently support max_size() or shrink_to_fit(). // size_type size() const; void resize(size_type length); size_type capacity() const; bool empty() const; // significantly slower than isNull() void reserve(size_type n); // // We don't support at() since we support bounds checking as a compile time option. // const T& operator[](size_type i) const; // access for reading T& operator[](size_type i); // access for writing const T& front() const; T& front(); const T& back() const; T& back(); const T* data() const; T* data(); // // We don't support assign(), insert(), erase(), emplace(), emplace_back() // void push_back(const T& item); void push_back(T&& item); // for item that can be moved void pop_back(); void swap(Vector& other); void clear(); // // Non-standard operators without a standard alternative. // void expandTo(size_type newLength); void expandBy(size_type extra); void contractTo(size_type newLength); bool isNull() const; // superfast test for capacity() == 0 // // Legacy stuff; don't use in new code. // int length() const; void append(const T& item); void append(T&& item); // for item that can be moved private: void reallocate(size_t neededBytes, size_type oldLength); PreVector pv; }; template inline Vector::Vector() { pv.initEmpty(); } template inline Vector::Vector(size_type length) { if (length == 0) pv.initEmpty(); else { pv.initAllocate(length * sizeof(T)); pv.setLength(length); T* vec = static_cast(pv.getBase()); size_type i = 0; do (void) new(vec + i) T(); // call default constructor on each element while (++i < length); } } template inline Vector::Vector(const Vector& original) { size_type originalLength = original.length(); if (originalLength == 0) pv.initEmpty(); else { size_t neededBytes = originalLength * sizeof(T); pv.initAllocate(neededBytes); pv.setLength(originalLength); if (std::is_trivially_copyable::value) std::memcpy(pv.getBase(), original.pv.getBase(), neededBytes); else { T* vec = static_cast(pv.getBase()); const T* originalVec = static_cast(original.pv.getBase()); size_type i = 0; do new(vec + i) T(originalVec[i]); // call copy constructor on each element while (++i != originalLength); } } } template inline Vector::Vector(Vector&& original) { // // Move ctor; sets original to null Vector. // pv.initSteal(original.pv); original.pv.initEmpty(); } template inline Vector::~Vector() { T* vec = static_cast(pv.getBase()); if (vec != nullptr) { size_type length = pv.getLength(); for (size_type i = 0; i != length; i++) vec[i].~T(); // call destructor on each object in array pv.freeMemory(); } } template inline typename Vector::size_type Vector::size() const { return pv.getLength(); } template inline typename Vector::size_type Vector::capacity() const { return pv.getAllocatedBytes() / sizeof(T); } template inline const T* Vector::data() const { return static_cast(pv.getBase()); } template inline T* Vector::data() { return static_cast(pv.getBase()); } template inline const T& Vector::front() const { Assert(!empty(), "empty vector"); return *(data()); } template inline T& Vector::front() { Assert(!empty(), "empty vector"); return *(data()); } template inline const T& Vector::back() const { Assert(!empty(), "empty vector"); return data()[size() - 1]; } template inline T& Vector::back() { Assert(!empty(), "empty vector"); return data()[size() - 1]; } template inline const T& Vector::operator[](size_type i) const { Assert(i < size(), "index (" << i << ") too big, size: " << size()); return data()[i]; } template inline T& Vector::operator[](size_type i) { Assert(i < size(), "index (" << i << ") too big, size: " << size()); return data()[i]; } template inline void Vector::reallocate(size_t neededBytes, size_type oldLength) { // // We don't copy the length after reallocation in the expectation that the // caller will set a new length. // PreVector tmp; tmp.initAllocate(neededBytes); void* base = pv.getBase(); if (base != nullptr) { if (std::is_trivially_copyable::value) { // // The destructor is required to be trivial (performs no action) so // we just copy the original as bytes without destructing it. // std::memcpy(tmp.getBase(), base, oldLength * sizeof(T)); } else { T* originalVec = static_cast(base); T* vec = static_cast(tmp.getBase()); for (size_type i = 0; i != oldLength; ++i) { T& objectToMove = originalVec[i]; new(vec + i) T(std::move(objectToMove)); // move or copy each orginal element objectToMove.~T(); // then destroy original. } } pv.freeMemory(); } pv.initSteal(tmp); } template inline void Vector::reserve(size_type n) { size_t neededBytes = n * sizeof(T); if (pv.getAllocatedBytes() < neededBytes) { size_type oldLength = pv.getLength(); reallocate(neededBytes, oldLength); pv.setLength(oldLength); } } template inline void Vector::expandTo(size_type newLength) { size_type oldLength = pv.getLength(); Assert(newLength >= oldLength, "new length < old length: " << newLength << " < " << oldLength); size_t neededBytes = newLength * sizeof(T); if (pv.getAllocatedBytes() < neededBytes) reallocate(neededBytes, oldLength); T* vec = static_cast(pv.getBase()); if (vec != nullptr) { pv.setLength(newLength); for (size_type i = oldLength; i != newLength; ++i) new(vec + i) T(); // call default constructor on each new element } } template inline void Vector::expandBy(size_type extra) { if (extra > 0) expandTo(size() + extra); } template inline void Vector::contractTo(size_type newLength) { size_type oldLength = pv.getLength(); Assert(newLength <= oldLength, "new length > old length: " << newLength << " > " << oldLength); T* vec = static_cast(pv.getBase()); if (vec != nullptr) { pv.setLength(newLength); for (size_type i = newLength; i != oldLength; i++) vec[i].~T(); // call destructor on each "lost" element } } template inline void Vector::clear() { contractTo(0); } template inline void Vector::resize(size_type newLength) { size_type t = pv.getLength(); if (newLength > t) expandTo(newLength); else if (newLength < t) contractTo(newLength); } template inline void Vector::push_back(const T& item) { size_type oldLength = pv.getLength(); size_type newLength = oldLength + 1; size_t neededBytes = newLength * sizeof(T); if (pv.getAllocatedBytes() < neededBytes) reallocate(neededBytes, oldLength); pv.setLength(newLength); T* vec = static_cast(pv.getBase()); new(vec + oldLength) T(item); // use copy constructor to copy item into vector } template inline void Vector::push_back(T&& item) { size_type oldLength = pv.getLength(); size_type newLength = oldLength + 1; size_t neededBytes = newLength * sizeof(T); if (pv.getAllocatedBytes() < neededBytes) reallocate(neededBytes, oldLength); pv.setLength(newLength); T* vec = static_cast(pv.getBase()); new(vec + oldLength) T(std::move(item)); // use move constructor if possible } template inline void Vector::pop_back() { Assert(!empty(), "empty vector"); size_type newLength = pv.getLength() - 1; data()[newLength].~T(); pv.setLength(newLength); } template inline Vector& Vector::operator=(const Vector& original) { // // destroy destination vector // void* base = pv.getBase(); { size_type length = pv.getLength(); T* vec = static_cast(base); for (size_type i = 0; i != length; ++i) vec[i].~T(); // call destructor on each object in destination array } // // reallocate memory if necessary // size_type originalLength = original.pv.getLength(); size_t neededBytes = originalLength * sizeof(T); if (pv.getAllocatedBytes() < neededBytes) { if (base != nullptr) pv.freeMemory(); pv.initAllocate(neededBytes); base = pv.getBase(); } // // make copy of source vector // if (base != nullptr) { pv.setLength(originalLength); if (originalLength != 0) { // // Need to copy objects from original. // const void* originalBase = original.pv.getBase(); if (std::is_trivially_copyable::value) std::memcpy(base, originalBase, neededBytes); else { T* vec = static_cast(base); const T* originalVec = static_cast(originalBase); for (size_type i = 0; i != originalLength; ++i) new(vec + i) T(originalVec[i]); // call copy constructor on original objects } } } return *this; } template inline Vector& Vector::operator=(Vector&& original) { // // Move assignment. // // Destroy destination vector. // T* vec = static_cast(pv.getBase()); if (vec != nullptr) { size_type length = pv.getLength(); for (size_type i = 0; i != length; ++i) vec[i].~T(); // call destructor on each object in array pv.freeMemory(); } // // Move original and set original to null vector. // pv.initSteal(original.pv); original.pv.initEmpty(); return *this; } template inline void Vector::swap(Vector& other) { PreVector t(pv); // default copy ctor pv = other.pv; other.pv = t; } template inline bool Vector::isNull() const { return pv.getBase() == nullptr; } template inline bool Vector::empty() const { return pv.empty(); } #ifdef NO_ASSERT // // Fast, with no runtime checking. // template inline typename Vector::iterator Vector::begin() { return static_cast(pv.getBase()); } template inline typename Vector::iterator Vector::end() { return static_cast(pv.getBase()) + pv.getLength(); } template inline typename Vector::const_iterator Vector::begin() const { return static_cast(pv.getBase()); } template inline typename Vector::const_iterator Vector::end() const { return static_cast(pv.getBase()) + pv.getLength(); } #else #include #endif // // Legacy stuff. // template inline int Vector::length() const { return pv.getLength(); } template inline void Vector::append(const T& item) { size_type oldLength = pv.getLength(); size_type newLength = oldLength + 1; size_t neededBytes = newLength * sizeof(T); if (pv.getAllocatedBytes() < neededBytes) reallocate(neededBytes, oldLength); pv.setLength(newLength); T* vec = static_cast(pv.getBase()); new(vec + oldLength) T(item); // use copy constructor to copy item into vector } template inline void Vector::append(T&& item) { size_type oldLength = pv.getLength(); size_type newLength = oldLength + 1; size_t neededBytes = newLength * sizeof(T); if (pv.getAllocatedBytes() < neededBytes) reallocate(neededBytes, oldLength); pv.setLength(newLength); T* vec = static_cast(pv.getBase()); new(vec + oldLength) T(std::move(item)); // use move constructor if possible } template inline bool operator<(const Vector& lhs,const Vector& rhs) { return lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end()); } #endif Maude-Maude3.5.1/src/Utility/variableConstraint.hh0000664000175000017510000001003315036121435021462 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2019-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for constraints on variables occurring in word problems. // #ifndef _variableConstraint_hh_ #define _variableConstraint_hh_ class VariableConstraint { // // Variable may or may not be able to take the empty word. // A variable may have a bound on the length of the word // it is assigned OR it may have a theory constraint (which // implies a bound of 1). // public: // // The default is that a variable cannot take the empty // word but has no other constraints. // VariableConstraint(); // // Allow the variable to take the empty word. // void setTakeEmpty(); // // Set an upper-bound on the length of word a variable may take. // This will usually be 1, but could be another small positive // integer. An upper-bound of 0 means no upper-bound. // void setUpperBound(int upperBound); // // Set a theory constraint on a variable. This implies // an upper bound of one, and furthermore, two variables // constrained by different theory indices cannot be made equal. // Theory indices are natural numbers starting at 0. // void setTheoryConstraint(int theoryIndex); public: bool none() const; bool operator==(const VariableConstraint& other) const; bool intersect(VariableConstraint other); // // New tests. // bool isUnbounded() const; int getUpperBound() const; // 0 means no upper-bound bool hasTheoryConstraint() const; int getTheoryConstraint() const; // NONE means no theory constraint bool canTakeEmpty() const; private: // // Constraint is stored in a 32-bit unsigned int // (30-bit upper-bound or theory index) (theory flag) (take empty flag) // enum Special { TAKE_EMPTY_FLAG = 1, THEORY_FLAG = 2, INDEX_SHIFT = 2 }; uint32_t constraint; friend ostream& operator<<(ostream& s, VariableConstraint c); // HACK }; inline VariableConstraint::VariableConstraint() { constraint = 0; // TAKE_EMPTY_FLAG, THEORY_FLAG = 0; upper-bound = 0 (unbounded) } inline void VariableConstraint::setTakeEmpty() { constraint |= TAKE_EMPTY_FLAG; } inline void VariableConstraint::setUpperBound(int upperBound) { constraint = (constraint & TAKE_EMPTY_FLAG) | (upperBound << INDEX_SHIFT); } inline void VariableConstraint::setTheoryConstraint(int theoryIndex) { constraint = (constraint & TAKE_EMPTY_FLAG) | THEORY_FLAG | (theoryIndex << INDEX_SHIFT); } inline bool VariableConstraint::canTakeEmpty() const { return constraint & TAKE_EMPTY_FLAG; } inline bool VariableConstraint::hasTheoryConstraint() const { return constraint & THEORY_FLAG; } inline bool VariableConstraint::isUnbounded() const { // // True if THEORY_FLAG clear and bound = 0; i.e. // everything except possibly TAKE_EMPTY_FLAG is 0. // return (constraint & ~TAKE_EMPTY_FLAG) == 0; } inline int VariableConstraint::getUpperBound() const { return (constraint & THEORY_FLAG) ? 1 : (constraint >> INDEX_SHIFT); } inline int VariableConstraint::getTheoryConstraint() const { return (constraint & THEORY_FLAG) ? (constraint >> INDEX_SHIFT) : NONE; } inline bool VariableConstraint::operator==(const VariableConstraint& other) const { return constraint == other.constraint; } ostream& operator<<(ostream& s, VariableConstraint c); #endif Maude-Maude3.5.1/src/Utility/variableConstraint.cc0000664000175000017510000000550415036121435021457 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2019-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class VariableConstraint. // #include "macros.hh" #include "variableConstraint.hh" bool VariableConstraint::intersect(VariableConstraint other) { // // We check if our constraint is compatible with some other // constraint. If not we return false. // If so we return true and our constraint is updated to the intersection; // i.e. the weakest constraint that satisfies both parent constraints. // if (hasTheoryConstraint()) { if (other.hasTheoryConstraint()) { if (getTheoryConstraint() == other.getTheoryConstraint()) { // // Really we are just conjuncting TAKE_EMPTY_FLAG // flags because the other bits are equal. // constraint &= other.constraint; return true; } // // Different theories mean unsatisfiable constraint. // return false; } // // Theory constraint is always tighter that upperBound // constraint so just conjunct in TAKE_EMPTY_FLAG. // constraint &= (other.constraint | ~TAKE_EMPTY_FLAG); return true; } if (other.hasTheoryConstraint()) { // // Theory constraint is always tighter that upperBound // constraint so just conjunct in TAKE_EMPTY_FLAG. // constraint = other.constraint & (constraint | ~TAKE_EMPTY_FLAG); return true; } // // Take the tighter upperBound and the conjunction of the TAKE_EMPTY_FLAGs. // int upperBound = constraint >> INDEX_SHIFT; int otherUpperBound = other.constraint >> INDEX_SHIFT; if (otherUpperBound != 0 && (upperBound == 0 || otherUpperBound < upperBound)) upperBound = otherUpperBound; constraint = (upperBound << INDEX_SHIFT) | (TAKE_EMPTY_FLAG & constraint & other.constraint); return true; } ostream& operator<<(ostream& s, VariableConstraint c) { if (c.hasTheoryConstraint()) s << "theory=" << c.getTheoryConstraint(); else s << "bound=" << c.getUpperBound(); s << " takeEmpty=" << c.canTakeEmpty(); return s; } Maude-Maude3.5.1/src/Utility/unionFind.hh0000664000175000017510000000252615036121435017571 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for Tarjan-style Union-Find data structure // #ifndef _unionFind_hh_ #define _unionFind_hh_ class UnionFind { public: int makeElement(); int findRep(int element) const; void formUnion(int e1, int e2); int elementCount() const; void clear(); private: struct Element { int next; int rank; }; mutable Vector vector; }; inline int UnionFind::elementCount() const { return vector.length(); } inline void UnionFind::clear() { vector.clear(); } #endif Maude-Maude3.5.1/src/Utility/unionFind.cc0000664000175000017510000000323315036121435017553 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class UnionFind. // #include "macros.hh" #include "vector.hh" #include "unionFind.hh" int UnionFind::makeElement() { int e = vector.length(); vector.expandBy(1); vector[e].next = e; vector[e].rank = 0; return e; } int UnionFind::findRep(int element) const { // // Find representative // int r = element; while(vector[r].next != r) r = vector[r].next; // // Compress path // int j; for (int i = element; i != r; i = j) { j = vector[i].next; vector[i].next = r; } return r; } void UnionFind::formUnion(int e1, int e2) { int r1 = findRep(e1); int r2 = findRep(e2); if (vector[r1].rank > vector[r2].rank) vector[r2].next = r1; else { if (vector[r1].rank == vector[r2].rank) ++(vector[r2].rank); vector[r1].next = r2; } } Maude-Maude3.5.1/src/Utility/tty.hh0000664000175000017510000000342415036121435016456 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2024 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class to abstract tty attributes. // #ifndef _tty_hh_ #define _tty_hh_ class Tty { public: enum Attribute { RESET, BRIGHT, DIM, UNDERLINE, BLINK, REVERSE, HIDDEN, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, BKGD_BLACK, BKGD_RED, BKGD_GREEN, BKGD_YELLOW, BKGD_BLUE, BKGD_MAGENTA, BKGD_CYAN, BKGD_WHITE }; Tty(Attribute attr); static void setEscapeSequencesAllowed(bool flag); static void blockEscapeSequences(); static void unblockEscapeSequences(); const char* ctrlSequence() const; private: static const char* const ansiCode[]; static bool allowedFlag; const Attribute attr; }; inline Tty::Tty(Attribute attr) : attr(attr) { } inline void Tty::setEscapeSequencesAllowed(bool flag) { allowedFlag = flag; } inline ostream& operator<<(ostream& s, const Tty& t) { s << t.ctrlSequence(); return s; } #endif Maude-Maude3.5.1/src/Utility/tty.cc0000664000175000017510000000262315036121435016444 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2024 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class Indent // #include "macros.hh" #include "tty.hh" const char* const Tty::ansiCode[] = { "\033[0m", "\033[1m", "\033[2m", "\033[4m", "\033[5m", "\033[7m", "\033[8m", "\033[30m", "\033[31m", "\033[32m", "\033[33m", "\033[34m", "\033[35m", "\033[36m", "\033[37m", "\033[40m", "\033[41m", "\033[42m", "\033[43m", "\033[44m", "\033[45m", "\033[46m", "\033[47m" }; bool Tty::allowedFlag = true; const char* Tty::ctrlSequence() const { if (allowedFlag) return ansiCode[attr]; return ""; } Maude-Maude3.5.1/src/Utility/timer.hh0000664000175000017510000000312415036121435016753 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for timers. // #ifndef _timer_hh_ #define _timer_hh_ #include "timeStuff.hh" class Timer { public: Timer(bool startRunning = false); bool getTimes(Int64& real, Int64& virt, Int64& prof) const; bool isRunning() const; void start(); void stop(); private: enum Constants { CYCLE_LENGTH = 10000000 // length of timer cycle in seconds }; static void startOsTimers(); static Int64 calculateMicroseconds(const itimerval& startTime, const itimerval& stopTime); static bool osTimersStarted; Int64 realAcc; Int64 virtAcc; Int64 profAcc; itimerval realStartTime; itimerval virtStartTime; itimerval profStartTime; bool running; bool valid; }; inline bool Timer::isRunning() const { return running; } #endif Maude-Maude3.5.1/src/Utility/timer.cc0000664000175000017510000000774015036121435016751 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class Timer. // #include #include // utility stuff #include "macros.hh" #include "timer.hh" bool Timer::osTimersStarted = false; local_inline Int64 Timer::calculateMicroseconds(const itimerval& startTime, const itimerval& stopTime) { const Int64 M = 1000000; Int64 usec = startTime.it_value.tv_usec - stopTime.it_value.tv_usec + M * (startTime.it_value.tv_sec - stopTime.it_value.tv_sec); if (usec < 0) // timer wrap around usec += M * CYCLE_LENGTH; return usec; } void Timer::startOsTimers() { // // We let the OS timers run continuously and just sample them. // // It would be nice to keep track of cycles for correct handling of // very long time intervals, but this seems hard without introducing // race conditions; so we just ignore all timer interrupts. // signal(SIGALRM, SIG_IGN); signal(SIGVTALRM, SIG_IGN); signal(SIGPROF, SIG_IGN); static itimerval init = { {CYCLE_LENGTH, 0}, {CYCLE_LENGTH, 0} }; setitimer(ITIMER_REAL, &init, 0); setitimer(ITIMER_VIRTUAL, &init, 0); setitimer(ITIMER_PROF, &init, 0); osTimersStarted = true; } Timer::Timer(bool startRunning) { realAcc = 0; virtAcc = 0; profAcc = 0; running = false; valid = true; if (startRunning) { if (!osTimersStarted) startOsTimers(); running = true; getitimer(ITIMER_REAL, &realStartTime); getitimer(ITIMER_VIRTUAL, &virtStartTime); getitimer(ITIMER_PROF, &profStartTime); } } void Timer::start() { if (!running && valid) { if (!osTimersStarted) startOsTimers(); // // We get new start times. // running = true; getitimer(ITIMER_REAL, &realStartTime); getitimer(ITIMER_VIRTUAL, &virtStartTime); getitimer(ITIMER_PROF, &profStartTime); } else valid = false; } void Timer::stop() { if (running && valid) { // // We accumulate the microseconds since last start(). // itimerval realStopTime; itimerval virtStopTime; itimerval profStopTime; getitimer(ITIMER_PROF, &profStopTime); getitimer(ITIMER_VIRTUAL, &virtStopTime); getitimer(ITIMER_REAL, &realStopTime); running = false; realAcc += calculateMicroseconds(realStartTime, realStopTime); virtAcc += calculateMicroseconds(virtStartTime, virtStopTime); profAcc += calculateMicroseconds(profStartTime, profStopTime); } else valid = false; } bool Timer::getTimes(Int64& real, Int64& virt, Int64& prof) const { if (valid) { // // We return the accumulated times plus any time since last start() if we are running. // real = realAcc; virt = virtAcc; prof = profAcc; if (running) { itimerval realStopTime; itimerval virtStopTime; itimerval profStopTime; getitimer(ITIMER_PROF, &profStopTime); getitimer(ITIMER_VIRTUAL, &virtStopTime); getitimer(ITIMER_REAL, &realStopTime); real += calculateMicroseconds(realStartTime, realStopTime); virt += calculateMicroseconds(virtStartTime, virtStopTime); prof += calculateMicroseconds(profStartTime, profStopTime); } return true; } return false; } Maude-Maude3.5.1/src/Utility/timeStuff.hh0000664000175000017510000000322515036121435017603 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Put the time inclusion mess in a single place // (code taken from the autoconf manual). // #ifndef _timeStuff_hh_ #define _timeStuff_hh_ #if HAVE_SYS_TIME_H # include #endif #include inline bool operator<(const timespec& first, const timespec& second) { if (first.tv_sec < second.tv_sec) return true; if (first.tv_sec > second.tv_sec) return false; return first.tv_nsec < second.tv_nsec; } inline void timespecSubtract(const timespec& first, const timespec& second, timespec& result) { // // Subtract two timespec structs, assuming first >= second // time_t diff = first.tv_sec - second.tv_sec; long ndiff = first.tv_nsec - second.tv_nsec; if (ndiff < 0) { ndiff += 1000000000L; diff -= 1; } result.tv_sec = diff; result.tv_nsec = ndiff; } #endif Maude-Maude3.5.1/src/Utility/stringTable.hh0000664000175000017510000000247715036121435020123 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for dynamic string tables // #ifndef _stringTable_hh_ #define _stringTable_hh_ class StringTable { public: StringTable(int size = 1024); ~StringTable(); int encode(const char* name); const char* name(int code) const; private: static int hash(const char* name); static int hash2(const char* name); void resize(); Vector stringTable; Vector hashTable; }; inline const char* StringTable::name(int code) const { return stringTable[code]; } #endif Maude-Maude3.5.1/src/Utility/stringTable.cc0000664000175000017510000000554715036121435020112 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class StringTable // // We use a hash table to index into the string table, with clashes being // resolved by open addressing (with double hashing) // See Cormen, Lieserson & Rivest p235 // #include "macros.hh" #include "vector.hh" #include "stringTable.hh" inline int StringTable::hash(const char* name) { int h = 0; for (const char* p = name; *p; p++) h = (3 * h) + *p; // NOTE Undefined behavior (integer overflow) return h; } inline int StringTable::hash2(const char* name) // 2nd hash function must always return an odd value { int h = 0; for (const char* p = name; *p; p++) h = (5 * h) ^ *p; // NOTE Undefined behavior (integer overflow) return h | 1; } StringTable::StringTable(int initialSize) { int s = 2; while (s < initialSize) s *= 2; s *= 2; hashTable.expandTo(s); for (int i = 0; i < s; i++) hashTable[i] = UNUSED; } StringTable::~StringTable() { int nrStrings = stringTable.length(); for (int i = 0; i < nrStrings; i++) delete [] stringTable[i]; } int StringTable::encode(const char* name) { int mask = hashTable.length() - 1; int code; int step = 0; for (int i = hash(name);; i += step) { i &= mask; code = hashTable[i]; if (code == UNUSED) { code = stringTable.length(); stringTable.append(strcpy(new char[strlen(name) + 1], name)); if (2 * (code + 1) > hashTable.length()) resize(); else hashTable[i] = code; break; } if (strcmp(name, stringTable[code]) == 0) break; if (step == 0) step = hash2(name); } return code; } void StringTable::resize() { int h = 2 * hashTable.length(); hashTable.expandTo(h); for (int i = 0; i < h; i++) hashTable[i] = UNUSED; int mask = h - 1; int nrStrings = stringTable.length(); for (int i = 0; i < nrStrings; i++) { char* s = stringTable[i]; int j = hash(s) & mask; if (hashTable[j] != UNUSED) { int step = hash2(s); do j = (j + step) & mask; while (hashTable[j] != UNUSED); } hashTable[j] = i; } } Maude-Maude3.5.1/src/Utility/stack.hh0000664000175000017510000000263515036121435016746 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2017 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Template for stacks. // #ifndef _stack_hh_ #define _stack_hh_ #include "vector.hh" template class Stack { public: bool empty() const; const T& top() const; void pop(); void push(const T& item); private: Vector items; }; template inline bool Stack::empty() const { return items.empty(); } template inline const T& Stack::top() const { return items.back(); } template inline void Stack::pop() { items.pop_back(); } template inline void Stack::push(const T& item) { items.push_back(item); } #endif Maude-Maude3.5.1/src/Utility/slowVector.hh0000664000175000017510000000272515036121435020010 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Slow version of certain Vector class template code with extensive runtime checking. // #include template inline typename Vector::iterator Vector::begin() { return iterator(this, 0); } template inline typename Vector::iterator Vector::end() { return iterator(this, pv.getLength()); } #include template inline typename Vector::const_iterator Vector::begin() const { return const_iterator(this, 0); } template inline typename Vector::const_iterator Vector::end() const { return const_iterator(this, pv.getLength()); } Maude-Maude3.5.1/src/Utility/sequencePartition.hh0000664000175000017510000000373415036121435021344 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class to generate sequence partitions associated with A and AU matching. // #ifndef _sequencePartition_hh_ #define _sequencePartition_hh_ class SequencePartition { public: SequencePartition(int sequenceLength, int estNrParts = 0); void insertPart(int minLength, int maxLength); bool solve(); int start(int partNr) const; int end(int partNr) const; int partCount() const; private: struct Part { int minLength; int maxLength; int sumPrevMin; int sumPrevMax; int start; }; bool mainSolve(bool findFirst); const int sequenceLength; Vector parts; int minSum; int maxSum; bool closed; bool failed; }; inline int SequencePartition::start(int partNr) const { Assert(closed, "solve() not called"); Assert(!failed, "non-existent solution"); return parts[partNr].start; } inline int SequencePartition::end(int partNr) const { Assert(closed, "solve() not called"); Assert(!failed, "non-existent solution"); return (partNr == parts.length() - 1) ? sequenceLength - 1 : parts[partNr + 1].start - 1; } inline int SequencePartition::partCount() const { return parts.length(); } #endif Maude-Maude3.5.1/src/Utility/sequencePartition.cc0000664000175000017510000000621215036121435021324 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class SequencePartition // #include "macros.hh" #include "vector.hh" #include "sequencePartition.hh" SequencePartition::SequencePartition(int sequenceLength, int estNrParts) : sequenceLength(sequenceLength) { parts.reserve(estNrParts); minSum = 0; maxSum = 0; closed = false; failed = false; } void SequencePartition::insertPart(int minLength, int maxLength) { Assert(!closed, "system closed"); Assert(minLength >= 0, "minLength < 0"); Assert(minLength <= maxLength, "minLength > maxLength"); int nrParts = parts.length(); parts.expandBy(1); Part& p = parts[nrParts]; p.minLength = minLength; p.maxLength = maxLength; p.sumPrevMin = minSum; p.sumPrevMax = maxSum; minSum += minLength; maxSum = uplus(maxSum, maxLength); } bool SequencePartition::solve() { bool findFirst = !closed; if (findFirst) { Assert(parts.length() > 0, "no parts"); closed = true; if (sequenceLength < minSum || sequenceLength > maxSum) { failed = true; return false; } } return mainSolve(findFirst); } bool SequencePartition::mainSolve(bool findFirst) { int nrParts = parts.length(); int i = nrParts; int nextStart = sequenceLength; if (!findFirst) { // // Try to find a next solution by finding the leftmost start that // could legally be moved rightward and incrementing it. // for (i = 0; i < nrParts; i++) { Part& p = parts[i]; if (p.start < p.sumPrevMax) { nextStart = (i == nrParts - 1) ? sequenceLength : parts[i + 1].start; if (p.start + p.minLength < nextStart) { nextStart = ++p.start; goto finishPartition; } } } failed = true; return false; } finishPartition: // // Finish the partition by moving starts of parts 0,...,i-1 to their leftmost // legal positions. // for (i--; i >= 0; i--) { Part& p = parts[i]; int start = p.sumPrevMin; // leftMost start that leaves enough for previous parts if (nextStart - start > p.maxLength) start = nextStart - p.maxLength; // move right to respect our max length Assert(nextStart - start >= p.minLength, "not enough for part " << i); Assert(start <= p.sumPrevMax, "too much for parts preceeding " << i); p.start = start; nextStart = start; } return true; } Maude-Maude3.5.1/src/Utility/sequenceAssignment.hh0000664000175000017510000000503315036121435021475 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2014 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Classic to solve sequence assignment problems arising from single elementary // linear associative and AU unification problems. // #ifndef _sequenceAssignment_hh_ #define _sequenceAssignment_hh_ class SequenceAssignment { public: SequenceAssignment(int nrLhsVariables, int nrRhsVariables); void setLhsBound(int varIndex, int bound); void setRhsBound(int varIndex, int bound); // // Solutions are recorded as a sequence of moves on a grid. The number // of free variables needed to express the correpsonding unifier is 1 plus // the number of moves. // enum Move { NEXT_RIGHT = 1, NEXT_LEFT = 2, NEXT_BOTH = NEXT_RIGHT | NEXT_LEFT }; static int leftDelta(int move); static int rightDelta(int move); typedef Vector Solution; bool findNextSolution(bool findFirst); const Solution& getSolution() const; private: typedef Vector IntVec; void computeBoundSum(const IntVec& bounds, IntVec& boundSum); bool checkAndMakeMove(int move, int& lIndex, int& rIndex); int unmakeMove(int moveIndex, int& lIndex, int& rIndex); IntVec lhsBounds; IntVec rhsBounds; IntVec lhsBoundSum; IntVec rhsBoundSum; IntVec lhsCount; IntVec rhsCount; Solution currentSolution; }; inline void SequenceAssignment::setLhsBound(int varIndex, int bound) { lhsBounds[varIndex] = bound; } inline void SequenceAssignment::setRhsBound(int varIndex, int bound) { rhsBounds[varIndex] = bound; } inline const SequenceAssignment::Solution& SequenceAssignment::getSolution() const { return currentSolution; } inline int SequenceAssignment::leftDelta(int move) { return move >> 1; } inline int SequenceAssignment::rightDelta(int move) { return move & 1; } #endif Maude-Maude3.5.1/src/Utility/sequenceAssignment.cc0000664000175000017510000001416115036121435021465 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2014 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class SequenceAssignment. // #include "macros.hh" #include "vector.hh" #include "sequenceAssignment.hh" SequenceAssignment::SequenceAssignment(int nrLhsVariables, int nrRhsVariables) : lhsBounds(nrLhsVariables), rhsBounds(nrRhsVariables), lhsBoundSum(nrLhsVariables), rhsBoundSum(nrRhsVariables), lhsCount(nrLhsVariables), rhsCount(nrRhsVariables) { for (int i = 0; i < nrLhsVariables; ++i) { lhsBounds[i] = NONE; lhsCount[i] = 0; } for (int i = 0; i < nrRhsVariables; ++i) { rhsBounds[i] = NONE; rhsCount[i] = 0; } // // Before the first move is made, there is already an implicit assignment to // the first variables on each side. // lhsCount[0] = 1; rhsCount[0] = 1; } void SequenceAssignment::computeBoundSum(const IntVec& bounds, IntVec& boundSum) { #ifndef NO_ASSERT if (globalAdvisoryFlag) cerr << Tty(Tty::GREEN) << "SequenceAssignment::computeBoundSum()"; #endif int sum = 0; for (int i = bounds.size() - 1; i >= 0; --i) { #ifndef NO_ASSERT if (globalAdvisoryFlag) cerr << " " << bounds[i]; #endif if (sum != NONE) { int bound = bounds[i]; if (bound != NONE) sum += bound; else sum = NONE; } boundSum[i] = sum; } #ifndef NO_ASSERT if (globalAdvisoryFlag) cerr << Tty(Tty::RESET) << endl; #endif } bool SequenceAssignment::checkAndMakeMove(int move, int& lIndex, int& rIndex) { int nrLhsVariables = lhsBoundSum.size(); int nrRhsVariables = rhsBoundSum.size(); int lDelta = leftDelta(move); int newLhsIndex = lIndex + lDelta; int rDelta = rightDelta(move); int newRhsIndex = rIndex + rDelta; int remainingLhsVariables = nrLhsVariables - newLhsIndex; int remainingRhsVariables = nrRhsVariables - newRhsIndex; #ifndef NO_ASSERT if (globalAdvisoryFlag) { cerr << Tty(Tty::GREEN) << "SequenceAssignment::checkAndMakeMove() move is " << move << " lDelta is " << lDelta << " rDelta is " << rDelta << Tty(Tty::RESET) << endl; } #endif if (lDelta == 1) { if (newLhsIndex == nrLhsVariables) return false; // ran out of lhs variables } else { if (lhsBounds[lIndex] != NONE && lhsBounds[lIndex] == lhsCount[lIndex]) return false; // lhs variable can't take another binding } if (rDelta == 1) { if (newRhsIndex == nrRhsVariables) return false; // ran out of rhs variables } else { #ifndef NO_ASSERT if (globalAdvisoryFlag) { cerr << Tty(Tty::RED) << "rIndex = " << rIndex << " rhsBounds[rIndex] = " << rhsBounds[rIndex] << " rhsCount[rIndex] = " << rhsCount[rIndex] << Tty(Tty::RESET) << endl; } #endif if (rhsBounds[rIndex] != NONE && rhsBounds[rIndex] == rhsCount[rIndex]) return false; // rhs variable can't take another binding } int lhsCapacityBound = lhsBoundSum[newLhsIndex]; if (lhsCapacityBound != NONE) { if (lhsCapacityBound < remainingRhsVariables) return false; // can't advance to next lhs variable since we don't have enought capacity for rhs variables } int rhsCapacityBound = rhsBoundSum[newRhsIndex]; if (rhsCapacityBound != NONE) { if (rhsCapacityBound < remainingLhsVariables) return false; // can't advance to next lhs variable since we don't have enought capacity for rhs variables } DebugAdvisory("move OK"); // // Move is OK. // currentSolution.append(move); lIndex = newLhsIndex; rIndex = newRhsIndex; ++(lhsCount[lIndex]); ++(rhsCount[rIndex]); return true; } int SequenceAssignment::unmakeMove(int moveIndex, int& lIndex, int& rIndex) { --(lhsCount[lIndex]); --(rhsCount[rIndex]); int move = currentSolution[moveIndex]; currentSolution.resize(moveIndex); lIndex -= leftDelta(move); rIndex -= rightDelta(move); return move; } bool SequenceAssignment::findNextSolution(bool findFirst) { int nrLhsVariables = lhsBoundSum.size(); int nrRhsVariables = rhsBoundSum.size(); int lIndex; int rIndex; int moveIndex; if (findFirst) { computeBoundSum(lhsBounds, lhsBoundSum); if (lhsBoundSum[0] != NONE && lhsBoundSum[0] < nrRhsVariables) return false; // lhs variables don't have enought capacity for the rhs variables computeBoundSum(rhsBounds, rhsBoundSum); if (rhsBoundSum[0] != NONE && rhsBoundSum[0] < nrLhsVariables) return false; // rhs variables don't have enought capacity for the lhs variables lIndex = 0; rIndex = 0; moveIndex = 0; currentSolution.clear(); goto forwards; } else { lIndex = nrLhsVariables - 1; rIndex = nrRhsVariables - 1; moveIndex = currentSolution.size(); goto back; } back: { --moveIndex; if (moveIndex < 0) return false; int move = unmakeMove(moveIndex, lIndex, rIndex); nextMove: if (move == NEXT_BOTH) goto back; ++move; if (!(checkAndMakeMove(move, lIndex, rIndex))) goto nextMove; ++moveIndex; goto forwards; } forwards: { while ((lIndex + 1 < nrLhsVariables) || (rIndex + 1 < nrRhsVariables)) { int move = NEXT_RIGHT; nextMoveForwards: if (!(checkAndMakeMove(move, lIndex, rIndex))) { Assert(move != NEXT_BOTH, "could not find a forwards move"); ++move; goto nextMoveForwards; } ++moveIndex; } } return true; } Maude-Maude3.5.1/src/Utility/rope.hh0000664000175000017510000002234515036121435016606 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2020-2024 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for rope (functional string) data structure. // // This is based on: // Hans-J. Boehm, Russ Atkinson, and Michael Plass, // "Ropes: an Alternative to Strings", // Software—Practice & Experience. New York, NY, USA: John Wiley & Sons, Inc. // 25(12):1315–1330, December 1995. // #ifndef _rope_hh_ #define _rope_hh_ #define DEBUG_REF_COUNT 0 class Rope { public: typedef char value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef value_type& reference; typedef const value_type& const_reference; typedef size_t size_type; typedef ptrdiff_t difference_type; // // We only support const iterators; mutable iterators don't have an efficient implementation. // class const_iterator; friend class const_iterator; Rope(); Rope(const Rope& other); Rope(char c); Rope(const char* cString); Rope(const char* cString, size_type n); Rope(const string& str); ~Rope(); bool operator==(const Rope& other) const; bool operator!=(const Rope& other) const; bool operator<=(const Rope& other) const; bool operator>=(const Rope& other) const; bool operator<(const Rope& other) const; bool operator>(const Rope& other) const; int compare(const Rope& other) const; size_type length() const; void swap(Rope& other); void clear(); bool empty() const; Rope& operator=(const Rope& other); Rope operator+(const Rope& other) const; Rope& operator+=(const Rope& other); Rope substr(size_type offset, size_type length) const; size_type copy(char* buffer) const; char operator[](size_type n) const; const_iterator begin() const; const_iterator end() const; char* makeZeroTerminatedString() const; // caller is responsible for deallocation friend ostream& operator<<(ostream& s, const Rope& r); private: struct Fragment; struct BinNode { Fragment* left; Fragment* right; }; enum Magic { TEXT_SIZE = sizeof(BinNode), END_MARKER = TEXT_SIZE + 1, RELAXATION = 16, // we allow this extra height over Fibonacci rebalance criteria - must be at least 2 #if SIZEOF_UNSIGNED_LONG >= 8 MAX_BALANCED_HEIGHT = 91, // max height of a balanced rope with 2^64-1 characters #else MAX_BALANCED_HEIGHT = 45, // max height of a balanced rope with 2^32-1 characters #endif STACK_SIZE = MAX_BALANCED_HEIGHT + 1 + RELAXATION // number of stack entries to iterate over a rope with relaxed balance }; typedef char TextNode[TEXT_SIZE]; struct Fragment { Fragment(size_type len); int refCount; int height; size_type length; #if DEBUG_REF_COUNT bool deleted; #endif union { BinNode node; TextNode leaf; }; }; Rope(Fragment* p); static Fragment* makeTree(const char* cString, size_type n, size_type nrLeaves); static Fragment* rebalance(Fragment* fragment); static void addFragment(Fragment* fragment, Fragment* forest[]); static void insertFragment(Fragment* fragment, Fragment* forest[]); static Fragment* rawConcat(Fragment* left, Fragment* right); static void dumpForest(Fragment* forest[]); // // Reference count stuff. // static void incCount(Fragment* ptr); static void decCount(Fragment* ptr); static void deepDelete(Fragment* ptr); Fragment* ptr; static const size_type fiboTable[]; }; class Rope::const_iterator { public: // // Types needed by STL algorithms. // typedef random_access_iterator_tag iterator_category; typedef char value_type; typedef const char* pointer; typedef const char& reference; typedef const char* const_pointer; typedef const char& const_reference; typedef size_t size_type; typedef ptrdiff_t difference_type; // // Trivial iterator stuff. // const_iterator(); const_iterator(const const_iterator& other); const_iterator& operator=(const const_iterator& other); bool operator==(const const_iterator& other) const; bool operator!=(const const_iterator& other) const; const_reference operator*() const; const_pointer operator->() const; // // Forward iterator stuff. // const_iterator& operator++(); const_iterator operator++(int); // // Bidirectional iterator stuff. // const_iterator& operator--(); const_iterator operator--(int); // // Random access iterator stuff. // const_iterator& operator+=(difference_type delta); const_iterator operator+(difference_type delta) const; const_iterator& operator-=(difference_type delta); const_iterator operator-(difference_type delta) const; difference_type operator-(const const_iterator& other) const; const_reference operator[](difference_type n) const; bool operator<(const const_iterator& other) const; private: struct Entry { bool right; Fragment* ptr; }; const_iterator(const Rope& ptr); // begin iterator const_iterator(const Rope* ptr); // end iterator void rebuildStack(); size_type absolutePosition; size_type index; Entry* stackPtr; Entry ptrStack[STACK_SIZE]; // an extra slot for leaf node friend class Rope; }; #if DEBUG_REF_COUNT #define CHECK_COUNT(p) \ Assert(p == 0 || (p->refCount > 0 || !(p->deleted)), "p->refCount = " << p->refCount << " p->deleted = " << p->deleted); #else #define CHECK_COUNT(p) #endif inline void Rope::incCount(Fragment* ptr) { if (ptr != 0) ++(ptr->refCount); } inline void Rope::decCount(Fragment* ptr) { if (ptr != 0 && --(ptr->refCount) == 0) deepDelete(ptr); } inline Rope::Fragment::Fragment(size_type len) { refCount = 1; length = len; #if DEBUG_REF_COUNT deleted = false; #endif } inline Rope::Rope() { ptr = 0; } inline Rope::Rope(const Rope& other) { incCount(other.ptr); ptr = other.ptr; } inline Rope::Rope(char c) { ptr = new Fragment(1); ptr->height = 0; ptr->leaf[0] = c; } inline Rope::Rope(Fragment* p) { // // This member function is internal and assumes that the caller has already incremented or set the // reference cound for p appropriately. // ptr = p; } inline Rope::size_type Rope::length() const { return ptr == 0 ? 0 : ptr->length; } inline bool Rope::empty() const { return ptr == 0; } inline void Rope::swap(Rope& other) { Fragment* t = ptr; ptr = other.ptr; other.ptr = t; } inline void Rope::clear() { decCount(ptr); ptr = 0; } inline bool Rope::operator!=(const Rope& other) const { return !(*this == other); } inline bool Rope::operator>=(const Rope& other) const { return other <= *this; } inline bool Rope::operator<(const Rope& other) const { return !(*this >= other); } inline bool Rope::operator>(const Rope& other) const { return !(*this <= other); } inline Rope& Rope::operator=(const Rope& other) { incCount(other.ptr); decCount(ptr); ptr = other.ptr; return *this; } inline Rope& Rope::operator+=(const Rope& other) { *this = *this + other; return *this; } inline Rope::const_iterator Rope::begin() const { return const_iterator(*this); } inline Rope::const_iterator Rope::end() const { return const_iterator(this); } /* * Rope::const_iterator */ inline Rope::const_iterator Rope::const_iterator::operator++(int) { const_iterator dup(*this); operator++(); return dup; } inline Rope::const_iterator Rope::const_iterator::operator--(int) { const_iterator dup(*this); operator--(); return dup; } inline Rope::const_iterator::const_reference Rope::const_iterator::operator[](difference_type n) const { return *(operator+(n)); } inline Rope::const_iterator::const_pointer Rope::const_iterator::operator->() const { Assert(index < END_MARKER, "trying to dereference an end iterator, index = " << index); return &(stackPtr->ptr->leaf[index]); } inline Rope::const_iterator::difference_type Rope::const_iterator::operator-(const const_iterator& other) const { return absolutePosition - other.absolutePosition; } inline Rope::const_iterator& Rope::const_iterator::operator+=(difference_type delta) { absolutePosition += delta; rebuildStack(); return *this; } inline Rope::const_iterator& Rope::const_iterator::operator-=(difference_type delta) { absolutePosition -= delta; rebuildStack(); return *this; } inline bool Rope::const_iterator::operator<(const const_iterator& other) const { return absolutePosition < other.absolutePosition; } inline Rope::const_iterator Rope::const_iterator::operator+(difference_type delta) const { return const_iterator(*this) += delta; } inline Rope::const_iterator Rope::const_iterator::operator-(difference_type delta) const { return const_iterator(*this) -= delta; } #endif Maude-Maude3.5.1/src/Utility/rope.cc0000664000175000017510000004674315036121435016604 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2020-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class Rope. // #include "macros.hh" #include "rope.hh" // // Fibonacci numbers less than max rope length. // // We omit the inital 0, 1. For a rope of height h to be balanced // it must have a length of at least fiboTable[h]. // const Rope::size_type Rope::fiboTable[] = #if SIZEOF_UNSIGNED_LONG >= 8 { // // For 64-bit machines. // 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025, 20365011074, 32951280099, 53316291173, 86267571272, 139583862445, 225851433717, 365435296162, 591286729879, 956722026041, 1548008755920, 2504730781961, 4052739537881, 6557470319842, 10610209857723, 17167680177565, 27777890035288, 44945570212853, 72723460248141, 117669030460994, 190392490709135, 308061521170129, 498454011879264, 806515533049393, 1304969544928657, 2111485077978050, 3416454622906707, 5527939700884757, 8944394323791464, 14472334024676221, 23416728348467685, 37889062373143906, 61305790721611591, 99194853094755497, 160500643816367088, 259695496911122585, 420196140727489673, 679891637638612258, 1100087778366101931, 1779979416004714189, 2880067194370816120, 4660046610375530309, 7540113804746346429, 12200160415121876738UL }; #else { // // For 32-bit machines. // 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073UL }; #endif Rope::Rope(const char* cString) { size_type n = strlen(cString); if (n == 0) { ptr = 0; return; } size_type nrLeaves = (n + (TEXT_SIZE - 1)) / TEXT_SIZE; ptr = makeTree(cString, n, nrLeaves); } Rope::Rope(const char* cString, size_type n) { if (n == 0) { ptr = 0; return; } size_type nrLeaves = (n + (TEXT_SIZE - 1)) / TEXT_SIZE; ptr = makeTree(cString, n, nrLeaves); } Rope::Rope(const string& str) { size_type n = str.size(); if (n == 0) { ptr = 0; return; } size_type nrLeaves = (n + (TEXT_SIZE - 1)) / TEXT_SIZE; ptr = makeTree(str.c_str(), n, nrLeaves); } Rope::~Rope() { decCount(ptr); } void Rope::deepDelete(Fragment* ptr) { if (ptr->height > 0) { decCount(ptr->node.left); decCount(ptr->node.right); } #if DEBUG_REF_COUNT ptr->deleted = true; #else delete ptr; #endif } Rope::Fragment* Rope::makeTree(const char* cString, size_type n, size_type nrLeaves) { Fragment* f = new Fragment(n); if (nrLeaves == 1) { f->height = 0; f->length = n; for (size_type i = 0; i < n; ++i) f->leaf[i] = cString[i]; } else { size_type nrRightLeaves = nrLeaves / 2; size_type nrLeftLeaves = nrLeaves - nrRightLeaves; size_type nrLeftChars = nrLeftLeaves * TEXT_SIZE; size_type nrRightChars = n - nrLeftChars; f->node.left = makeTree(cString, nrLeftChars, nrLeftLeaves); f->height = 1 + f->node.left->height; f->node.right = makeTree(cString + nrLeftChars, nrRightChars, nrRightLeaves); } return f; } bool Rope::operator==(const Rope& other) const { size_type len = length(); if (len != other.length()) return false; if (ptr == other.ptr) return true; const_iterator p(*this); const_iterator q(other); for (int i = len; i > 0; --i, ++p, ++q) { if (*p != *q) return false; } return true; } bool Rope::operator<=(const Rope& other) const { if (ptr == other.ptr) return true; const_iterator p(*this); const const_iterator pe(this); const_iterator q(other); const const_iterator qe(&other); for (; p != pe; ++p, ++q) { if (q == qe) return false; int pc = *p; int qc = *q; if (pc < qc) break; if (pc > qc) return false; } return true; } int Rope::compare(const Rope& other) const { const_iterator p(*this); const const_iterator pe(this); const_iterator q(other); const const_iterator qe(&other); for (; p != pe; ++p, ++q) { if (q == qe) return 1; // other is smalller int d = *p - *q; if (d != 0) return d; } return (q == qe) ? 0 : -1; } Rope Rope::operator+(const Rope& other) const { CHECK_COUNT(ptr); CHECK_COUNT(other.ptr); if (ptr == 0) return Rope(other); if (other.ptr == 0) return Rope(*this); size_type ourLength = ptr->length; size_type otherLength = other.ptr->length; size_type newLength = ourLength + otherLength; if (newLength < ourLength) { // // This happens iff we overflowed size_type. // CantHappen("overflow in rope summation " << ourLength << " + " << otherLength); return *this; // safety } if (other.ptr->height == 0) { if (ptr->height == 0) { // // Leaf + leaf case. // if (newLength <= TEXT_SIZE) { // // Make a new TextNode that is a simple string concat. // Fragment* n = new Fragment(newLength); n->height = 0; char* q = n->leaf; for (size_type i = 0; i < ourLength; ++i, ++q) *q = ptr->leaf[i]; for (size_type i = 0; i < otherLength; ++i, ++q) *q = other.ptr->leaf[i]; return Rope(n); } // // Too big so fall into general case. // } else { Fragment* rightPtr = ptr->node.right; CHECK_COUNT(rightPtr); if (rightPtr->height == 0) { // // (... + leaf) + leaf case. // size_type rightLength = rightPtr->length; size_type newRightLength = rightLength + otherLength; if (newRightLength <= TEXT_SIZE) { // // Make a new TextNode that is a simple string concat. // Fragment* n = new Fragment(newRightLength); n->height = 0; char* q = n->leaf; for (size_type i = 0; i < rightLength; ++i, ++q) *q = rightPtr->leaf[i]; for (size_type i = 0; i < otherLength; ++i, ++q) *q = other.ptr->leaf[i]; // // Make a new summation node. // Fragment* n2 = new Fragment(newLength); Fragment* leftPtr = ptr->node.left; CHECK_COUNT(leftPtr); n2->height = 1 + leftPtr->height; n2->node.left = leftPtr; incCount(leftPtr); n2->node.right = n; return Rope(n2); } } } } // // General case. // Fragment* n = new Fragment(newLength); n->height = 1 + max(ptr->height, other.ptr->height); // // If the new height is too big we need to do rebalancing. // n->node.left = ptr; incCount(ptr); n->node.right = other.ptr; incCount(other.ptr); size_type needed = (n->height) < RELAXATION ? 1 : fiboTable[n->height - RELAXATION]; // relaxed requirement for balance since we won't be returning strictly balanced ropes if (n->length < needed) { DebugSave(len, n->length); #ifdef ROPE_DEBUG cout << "rebalancing because at height " << n->height << " length " << len << " < " << needed << endl; #endif Fragment* b = rebalance(n); decCount(n); // should free old tree n = b; #ifdef ROPE_DEBUG cout << "rebalanced rope has height " << n->height << " length " << n->length << endl; #endif Assert(len == n->length, "length mismatch"); } return Rope(n); } void Rope::dumpForest(Fragment* forest[]) { int i = MAX_BALANCED_HEIGHT; while (i >= 0 && forest[i] == 0) --i; for (; i >= 0; --i) { Fragment* f = forest[i]; if (f == 0) cout << " 0"; else cout << " " << f->length << "," << f->height; } cout << endl; } Rope::Fragment* Rope::rebalance(Fragment* fragment) { CHECK_COUNT(fragment); // // Create a tree that is at most 2 higher than allowed for by the balance condition. // Fragment* forest[MAX_BALANCED_HEIGHT + 1]; for (size_type i = 0; i <= MAX_BALANCED_HEIGHT; ++i) forest[i] = 0; // // Insert initial fragment into forest. // addFragment(fragment, forest); #ifdef DEBUG_ROPE cout << "after fragment addition:" << endl; dumpForest(forest); #endif // // Construct a tree from the forest. // Fragment* result = 0; for (size_type i = 0; i <= MAX_BALANCED_HEIGHT; ++i) { if (forest[i] != 0) { result = rawConcat(forest[i], result); //incCount(forest[i]); } } return result; } void Rope::addFragment(Fragment* fragment, Fragment* forest[]) { CHECK_COUNT(fragment); if (fragment->length >= fiboTable[fragment->height]) { // // Balanced case. Leaves are always trivially balanced since they need // only contain one character. // #if ROPE_DEBUG cout << " balanced case: at height " << fragment->height << " length " << fragment->length << " >= " << fiboTable[fragment->height] << endl; #endif incCount(fragment); // we will resuse fragment in the new tree insertFragment(fragment, forest); #if ROPE_DEBUG dumpForest(forest); #endif } else { // // Unbalanced case - can't be a leaf. // #if ROPE_DEBUG cout << " unbalanced case: at height " << fragment->height << " length " << fragment->length << " < " << fiboTable[fragment->height] << endl; #endif addFragment(fragment->node.left, forest); addFragment(fragment->node.right, forest); } } void Rope::insertFragment(Fragment* fragment, Fragment* forest[]) { // // Need to find appropriate slot and check that all smaller slots are empty. // size_type length = fragment->length; Fragment* smallFry = 0; size_type i = 0; // // If length >= fiboTable[i + 1] then it can't go in slot i; it must go in slot i+1 or later. // Last slot is MAX_BALANCED_HEIGHT; there is no fiboTable[MAX_BALANCED_HEIGH + 1] // - it would be larger than we can store in size_type. // We exit when i = MAX_BALANCED_HEIGHT or we have length < fiboTable[i + 1]. // Any earlier entries have been rolled up in smallFry. // for (; i < MAX_BALANCED_HEIGHT && length >= fiboTable[i + 1]; ++i) { if (forest[i] != 0) { // // Nonempty smaller slot concat it on to the front of small fry. // smallFry = rawConcat(forest[i], smallFry); forest[i] = 0; } } Fragment* insertee = rawConcat(smallFry, fragment); for (;; ++i) { if (forest[i] != 0) { insertee = rawConcat(forest[i], insertee); forest[i] = 0; } if (i == MAX_BALANCED_HEIGHT || insertee->length < fiboTable[i + 1]) break; } forest[i] = insertee; } Rope::Fragment* Rope::rawConcat(Fragment* left, Fragment* right) { if (right == 0) return left; if (left == 0) return right; Fragment* n = new Fragment(left->length + right->length); n->height = 1 + max(left->height, right->height); n->node.left = left; n->node.right = right; return n; } Rope Rope::substr(size_type offset, size_type length) const { if (ptr == 0 || length == 0) return Rope(); // empty rope or empty substring size_type ourLength = ptr->length; if (offset >= ourLength) return Rope(); // substring start is beyond our end so fail gracefully if (offset + length > ourLength) length = ourLength - offset; // substring end is beyond our end so bring it back in range if (offset == 0 && length == ptr->length) { incCount(ptr); return Rope(ptr); // whole thing } if (ptr->height == 0) { // // Make a new text node. // Fragment* n = new Fragment(length); n->height = 0; char* p = ptr->leaf + offset; char* q = n->leaf; for (size_type i = 0; i < length; ++i, ++p, ++q) *q = *p; return Rope(n); } Fragment* left = ptr->node.left; size_type leftLength = left->length; if (offset + length < leftLength) { incCount(left); return Rope(left).substr(offset, length); // substring contained within the left child } Fragment* right = ptr->node.right; if (offset >= leftLength) { incCount(right); return Rope(right).substr(offset - leftLength, length); // substring contained withing the right child } size_type nrLeftChars = leftLength - offset; incCount(left); incCount(right); return Rope(left).substr(offset, nrLeftChars) + Rope(right).substr(0, length - nrLeftChars); // substring spans both children } Rope::size_type Rope::copy(char* buffer) const { const Rope::const_iterator e = end(); for (Rope::const_iterator i = begin(); i != e; ++i, ++buffer) *buffer = *i; return length(); } char* Rope::makeZeroTerminatedString() const { size_type len = length(); char* zeroTerminatedString = new char[len + 1]; copy(zeroTerminatedString); zeroTerminatedString[len] = 0; return zeroTerminatedString; } char Rope::operator[](size_type n) const { Assert(n < length(), "out of bounds " << n << " vs " << length()); Fragment* p = ptr; while (p->height > 0) { size_type leftLength = p->node.left->length; if (n < leftLength) p = p->node.left; else { n -= leftLength; p = p->node.right; } } return p->leaf[n]; } /* * Friend function. */ ostream& operator<<(ostream& s, const Rope& r) { for (char c : r) s << c; return s; } /* * Iterator class. Only const iterators are supported. */ Rope::const_iterator::const_iterator() { stackPtr = 0; // iterator into empty rope absolutePosition = 0; index = END_MARKER; // indicates end } Rope::const_iterator::const_iterator(const const_iterator& other) { absolutePosition = other.absolutePosition; index = other.index; size_t stackSize = other.stackPtr - other.ptrStack; for (size_t i = 0; i <= stackSize; ++i) ptrStack[i] = other.ptrStack[i]; stackPtr = ptrStack + stackSize; } Rope::const_iterator::const_iterator(const Rope& rope) { absolutePosition = 0; // // iterator to first character in a rope. // Fragment* ptr = rope.ptr; stackPtr = ptrStack; stackPtr->right = false; stackPtr->ptr = ptr; if (ptr != 0) { // // stack path to leftmost leaf. // while (ptr->height > 0) { ptr = ptr->node.left; ++stackPtr; stackPtr->right = false; stackPtr->ptr = ptr; } index = 0; } else { // // begin() iterator to empty rope is also end() iterator. // index = END_MARKER; // indicates end } } Rope::const_iterator::const_iterator(const Rope* rope) { absolutePosition = rope->length(); // // Iterator to 1 beyond last character in a rope. // Fragment* ptr = rope->ptr; stackPtr = ptrStack; stackPtr->right = false; stackPtr->ptr = ptr; index = END_MARKER; } Rope::const_iterator& Rope::const_iterator::operator=(const const_iterator& other) { absolutePosition = other.absolutePosition; index = other.index; size_t stackSize = other.stackPtr - other.ptrStack; for (size_t i = 0; i <= stackSize; ++i) ptrStack[i] = other.ptrStack[i]; stackPtr = ptrStack + stackSize; return *this; } bool Rope::const_iterator::operator==(const const_iterator& other) const { return absolutePosition == other.absolutePosition; } bool Rope::const_iterator::operator!=(const const_iterator& other) const { return absolutePosition != other.absolutePosition; } Rope::const_iterator::const_reference Rope::const_iterator::operator*() const { Assert(index < END_MARKER, "trying to dereference an end iterator, index = " << index); return stackPtr->ptr->leaf[index]; } Rope::const_iterator& Rope::const_iterator::operator++() { Assert(index < END_MARKER, "trying to increment an end iterator"); // // Pointer on top of stack should point to a leaf node. // Fragment* f = stackPtr->ptr; ++absolutePosition; ++index; if (index >= f->length) { // // We exhausted this leaf node; now need to find the next leaf in sequence, // by stacking until we find a node that is a left child. // Such a node must have a corresponding right child and the left most // descendant of the right child is the leaf we seek. // for (;;) { if (stackPtr == ptrStack) { // // The end iterator is a pointer to the root of the DAG and in // index of END_MARKER // index = END_MARKER; return *this; } if (!(stackPtr->right)) break; // found a left child; now need to go to the right child --stackPtr; } Fragment* parent = (stackPtr - 1)->ptr; Fragment* ptr = parent->node.right; stackPtr->right = true; stackPtr->ptr = ptr; while (ptr->height > 0) { ptr = ptr->node.left; ++stackPtr; stackPtr->right = false; stackPtr->ptr = ptr; } index = 0; } return *this; } Rope::const_iterator& Rope::const_iterator::operator--() { Fragment* ptr; --absolutePosition; if (index == END_MARKER) { // // Need to point iterator to last character in a rope. // ptr = stackPtr->ptr; Assert(ptr != 0, "trying to decrement iterator into an empty rope"); } else { if (index > 0) { --index; return *this; } // // Pop stack to find a node where we can take a left child. // for (; !(stackPtr->right); --stackPtr) Assert(stackPtr != ptrStack, "decremented past begin() iterator"); Fragment* parent = (stackPtr - 1)->ptr; ptr = parent->node.left; stackPtr->right = false; stackPtr->ptr = ptr; } // // Find right most path to leaf and point at last character in leaf. // while (ptr->height > 0) { ptr = ptr->node.right; ++stackPtr; stackPtr->right = true; stackPtr->ptr = ptr; } Assert(ptr->length > 0, "empty leaf node"); index = ptr->length - 1; return *this; } void Rope::const_iterator::rebuildStack() { // // We assume absolutePosition is correct and the bottom pointer in the stack points to the top-most fragment // in the rope. We fill out the stack and the index. // stackPtr = ptrStack; // bottom of stack Fragment* ptr = stackPtr->ptr; // root fragment of rope Assert(ptr != 0, "trying to add or subtract to an iterator into an empty rope"); Assert(absolutePosition <= ptr->length, "add or subtract makes iterator out of range"); if (absolutePosition == ptr->length) { // // Absolute position at the end of rope. // index = END_MARKER; return; } size_type relPosition = absolutePosition; while (ptr->height > 0) { ++stackPtr; size_type leftLen = ptr->node.left->length; if (relPosition >= leftLen) { stackPtr->right = true; relPosition -= leftLen; ptr = ptr->node.right; } else { stackPtr->right = false; ptr = ptr->node.left; } stackPtr->ptr = ptr; } index = relPosition; } Maude-Maude3.5.1/src/Utility/preVector.hh0000664000175000017510000000623315036121435017610 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for vector memory management. // #ifndef _preVector_hh_ #define _preVector_hh_ // // This is a very low-level class that will only be use by the // Vector template. For efficiency we don't bother with constructors // and destructors but allow objects to temporarily be in a bad state // on the assumption that the user knows what he is doing. // class PreVector { public: // // Initialization members; one must be called to put PreVector into // a safe state. // void initEmpty(); void initAllocate(size_t atLeastBytes); void initSteal(PreVector& victim); // leaves victim in a bad state // // Deinitialization function; leaves dangling pointer; can only be called if // getBase() returns nonzero; can only be followed by // initEmpty(), initAllocate() or initSteal(). // void freeMemory(); // leaves object in bad state // // Remaining operators assume safe state and leave PreVector in safe state. // size_t getAllocatedBytes() const; size_t getLength() const; void setLength(size_t length); const void* getBase() const; void* getBase(); bool empty() const; private: enum MallocSpecificValues // assume Doug Lea's malloc() - need to fix properly { MIN_SIZE = 3 * sizeof(int), // minimum request to pass to malloc() TAG_SIZE = sizeof(size_t) // assume preferred sizes are 2^n - TAG_SIZE }; struct VectorHeader { size_t allocatedBytes; // space allocated in bytes size_t length; // number of objects that are properly initialized }; VectorHeader* ptr; }; inline void PreVector::initEmpty() { ptr = nullptr; } inline void PreVector::initSteal(PreVector& victim) { ptr = victim.ptr; } inline void PreVector::freeMemory() { Assert(ptr != nullptr, "ptr null"); operator delete[](ptr - 1); } inline size_t PreVector::getAllocatedBytes() const { return (ptr == nullptr) ? 0 : ptr[-1].allocatedBytes; } inline size_t PreVector::getLength() const { return (ptr == nullptr) ? 0 : ptr[-1].length; } inline bool PreVector::empty() const { return ptr == nullptr || ptr[-1].length == 0; } inline void PreVector::setLength(size_t length) { Assert(ptr != nullptr, "ptr null"); ptr[-1].length = length; } inline const void* PreVector::getBase() const { return static_cast(ptr); } inline void* PreVector::getBase() { return static_cast(ptr); } #endif Maude-Maude3.5.1/src/Utility/preVector.cc0000664000175000017510000000237015036121435017574 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class PreVector. // #include "macros.hh" #include "preVector.hh" void PreVector::initAllocate(size_t atLeastBytes) { atLeastBytes += TAG_SIZE + sizeof(VectorHeader); size_t i = MIN_SIZE + TAG_SIZE; while (i < atLeastBytes) i *= 2; i -= TAG_SIZE; VectorHeader* n = static_cast(operator new[](i)); n->allocatedBytes = i - sizeof(VectorHeader); ptr = n + 1; } Maude-Maude3.5.1/src/Utility/pointerSet.hh0000664000175000017510000001245515036121435017776 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for hash table based sets of pointers to user data structures. // // By default equality is on pointers (equivalently on unique data structures). // hash(void*) and isEqual(void*, void*) may be overloaded for a coarser // notion of equality that depends on the contents of the data structures. // #ifndef _pointerSet_hh_ #define _pointerSet_hh_ class PointerSet { public: PointerSet(); PointerSet(const PointerSet& original); virtual ~PointerSet(); // // If these four members are never called then we guarentee that // hash(void*) will never be called. These may be useful in situations // where the hash function is expensive and caching it would be awkward. // int insert(void* p); void subtract(void* p); bool contains(void* p) const; int pointer2Index(void *p) const; // // Alternative members - hash value must be provided with the pointer. // int insert(void* p, unsigned int rawHashValue); void subtract(void* p, unsigned int rawHashValue); bool contains(void* p, unsigned int rawHashValue) const; int pointer2Index(void *p, unsigned int rawHashValue) const; void makeEmpty(); void insert(const PointerSet& other); void subtract(const PointerSet& other); void intersect(const PointerSet& other); PointerSet& operator=(const PointerSet& original); bool empty() const; bool contains(const PointerSet& other) const; bool disjoint(const PointerSet& other) const; int cardinality() const; bool operator==(const PointerSet& other) const; bool operator!=(const PointerSet& other) const; void* index2Pointer(int i) const; void swap(PointerSet& other); protected: virtual unsigned int hash(void* pointer) const; virtual bool isEqual(void* pointer1, void* pointer2) const; #ifndef NO_ASSERT // // Allow analysis/debugging of collisions. // virtual void collision(void* pointer1, unsigned int rawHashValue1, void* pointer2, unsigned int rawHashValue2, unsigned int tableSize, unsigned int disputedSlot) const {} #endif private: enum Parameters { STARTING_HASH_TABLE_SIZE = 8 }; struct Pair { void* pointer; unsigned int rawHashValue; }; static int localHash(unsigned int rawHashValue); static int localHash2(unsigned int rawHashValue); bool isEqual(const Pair& pair, void* p, unsigned int rawHashValue) const; int findEntry(void* p, unsigned int rawHashValue) const; void resize(int minSize); void rehash(); Vector pointerTable; Vector hashTable; }; inline PointerSet::PointerSet() { } inline PointerSet::PointerSet(const PointerSet& original) : pointerTable(original.pointerTable), hashTable(original.hashTable) { } // // These are the only four functions that are allowed to call hash(void*). // inline int PointerSet::insert(void* p) { return insert(p, hash(p)); } inline void PointerSet::subtract(void* p) { if (pointerTable.length() != 0) subtract(p, hash(p)); } inline bool PointerSet::contains(void* p) const { return pointerTable.length() != 0 && hashTable[findEntry(p, hash(p))] != UNUSED; } inline int PointerSet::pointer2Index(void *p) const { return (pointerTable.length() != 0) ? hashTable[findEntry(p, hash(p))] : NONE; } // // Alternative versions. // inline bool PointerSet::contains(void* p, unsigned int rawHashValue) const { return pointerTable.length() != 0 && hashTable[findEntry(p, rawHashValue)] != UNUSED; } inline int PointerSet::pointer2Index(void *p, unsigned int rawHashValue) const { return (pointerTable.length() != 0) ? hashTable[findEntry(p, rawHashValue)] : NONE; } // // Remaining member functions // inline void PointerSet::makeEmpty() { pointerTable.contractTo(0); hashTable.contractTo(0); } inline PointerSet& PointerSet::operator=(const PointerSet& original) { pointerTable = original.pointerTable; // deep copy hashTable = original.hashTable; // deep copy return *this; } inline bool PointerSet::empty() const { return pointerTable.length() == 0; } inline int PointerSet::cardinality() const { return pointerTable.length(); } inline bool PointerSet::operator==(const PointerSet& other) const { return pointerTable.length() == other.pointerTable.length() && contains(other); } inline bool PointerSet::operator!=(const PointerSet& other) const { return !(*this == other); } inline void* PointerSet::index2Pointer(int i) const { return pointerTable[i].pointer; } inline void PointerSet::swap(PointerSet& other) { pointerTable.swap(other.pointerTable); hashTable.swap(other.hashTable); } #endif Maude-Maude3.5.1/src/Utility/pointerSet.cc0000664000175000017510000001475515036121435017771 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class PointerSet // #include "macros.hh" #include "vector.hh" #include "pointerSet.hh" PointerSet::~PointerSet() { } inline int PointerSet::localHash(unsigned int rawHashValue) { return rawHashValue ^ (rawHashValue >> 2); } inline int PointerSet::localHash2(unsigned int rawHashValue) { // // Second local hash function must always return an odd value. // return (rawHashValue ^ (rawHashValue >> (WORD_SIZE / 2))) | 1; } local_inline bool PointerSet::isEqual(const Pair& pair, void* p, unsigned int rawHashValue) const { return pair.rawHashValue == rawHashValue && isEqual(pair.pointer, p); } unsigned int PointerSet::hash(void* pointer) const { return reinterpret_cast(pointer) >> NR_PTR_LOSE_BITS; } bool PointerSet::isEqual(void* pointer1, void* pointer2) const { return pointer1 == pointer2; } int PointerSet::insert(void* p, unsigned int rawHashValue) { if (pointerTable.length() == 0) resize(STARTING_HASH_TABLE_SIZE); int i = findEntry(p, rawHashValue); int j = hashTable[i]; if (j == UNUSED) { j = pointerTable.length(); pointerTable.expandBy(1); Pair& pair = pointerTable[j]; pair.pointer = p; pair.rawHashValue = rawHashValue; int size = 2 * (j + 1); //if (size > 2000) // cerr << "size = " << size << '\n'; if (size > hashTable.length()) resize(size); else hashTable[i] = j; } return j; } void PointerSet::insert(const PointerSet& other) { int size = 2 * (pointerTable.length() + other.pointerTable.length()); if (size > hashTable.length()) resize(size); // pre-emptively resize hash table based on estimate for (int i = other.pointerTable.length() - 1; i >= 0; i--) { const Pair& pair = other.pointerTable[i]; void* p = pair.pointer; unsigned int rawHashValue = pair.rawHashValue; int j = findEntry(p, rawHashValue); if (hashTable[j] == UNUSED) { int k = pointerTable.length(); pointerTable.expandBy(1); Pair& pair2 = pointerTable[k]; pair2.pointer = p; pair2.rawHashValue = rawHashValue; hashTable[j] = k; } } } void PointerSet::subtract(void* p, unsigned int rawHashValue) { int n = pointerTable.length(); if (n == 0) return; int i = findEntry(p, rawHashValue); int j = hashTable[i]; if (j == UNUSED) return; --n; pointerTable[j] = pointerTable[n]; pointerTable.contractTo(n); rehash(); // removing an element is expensive } void PointerSet::subtract(const PointerSet& other) { int n = pointerTable.length(); if (n == 0 || other.pointerTable.length() == 0) return; int j = 0; for (int i = 0; i < n; i++) { Pair& pair = pointerTable[i]; void* p = pair.pointer; unsigned int rawHashValue = pair.rawHashValue; if (other.hashTable[other.findEntry(p, rawHashValue)] == UNUSED) { Pair& pair2 = pointerTable[j++]; pair2.pointer = p; pair.rawHashValue = rawHashValue; } } if (j != n) { pointerTable.contractTo(j); rehash(); } } void PointerSet::intersect(const PointerSet& other) { int n = pointerTable.length(); if (n == 0) return; if (other.pointerTable.length() == 0) { pointerTable.contractTo(0); hashTable.contractTo(0); return; } int j = 0; for (int i = 0; i < n; i++) { Pair& pair = pointerTable[i]; void* p = pair.pointer; unsigned int rawHashValue = pair.rawHashValue; if (other.hashTable[other.findEntry(p, rawHashValue)] != UNUSED) { Pair& pair2 = pointerTable[j++]; pair2.pointer = p; pair.rawHashValue = rawHashValue; } } if (j != n) { pointerTable.contractTo(j); rehash(); } } bool PointerSet::contains(const PointerSet& other) const { int i = other.pointerTable.length(); if (i == 0) return true; if (pointerTable.length() < i) return false; for (i--; i >= 0; i--) { const Pair& pair = other.pointerTable[i]; if (hashTable[findEntry(pair.pointer, pair.rawHashValue)] == UNUSED) return false; } return true; } bool PointerSet::disjoint(const PointerSet& other) const { int i = other.pointerTable.length(); if (i == 0 || pointerTable.length() == 0) return true; for (i--; i >= 0; i--) { const Pair& pair = other.pointerTable[i]; if (hashTable[findEntry(pair.pointer, pair.rawHashValue)] != UNUSED) return false; } return true; } int PointerSet::findEntry(void* p, unsigned int rawHashValue) const { Assert(hashTable.length() != 0, "zero length hash table"); int mask = hashTable.length() - 1; int i = localHash(rawHashValue) & mask; int j = hashTable[i]; if (j != UNUSED && !(isEqual(pointerTable[j], p, rawHashValue))) { int step = localHash2(rawHashValue); do { #ifndef NO_ASSERT collision(p, rawHashValue, pointerTable[j].pointer, pointerTable[j].rawHashValue, hashTable.length(), i); #endif i = (i + step) & mask; j = hashTable[i]; } while (j != UNUSED && !(isEqual(pointerTable[j], p, rawHashValue))); } return i; } void PointerSet::resize(int minSize) { int n = hashTable.length(); n = (n == 0) ? STARTING_HASH_TABLE_SIZE : 2 * n; while (n < minSize) n *= 2; hashTable.expandTo(n); rehash(); } void PointerSet::rehash() { int n = hashTable.length(); for (int i = 0; i < n; i++) hashTable[i] = UNUSED; int mask = n - 1; for (int i = pointerTable.length() - 1; i >= 0; i--) { unsigned int rawHashValue = pointerTable[i].rawHashValue; int j = localHash(rawHashValue) & mask; if (hashTable[j] != UNUSED) { int step = localHash2(rawHashValue); do j = (j + step) & mask; while (hashTable[j] != UNUSED); } hashTable[j] = i; } } Maude-Maude3.5.1/src/Utility/pointerMap.hh0000664000175000017510000000254515036121435017757 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2024 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for maps from pointers to pointers // #ifndef _pointerMap_hh_ #define _pointerMap_hh_ class PointerMap { NO_COPYING(PointerMap); public: PointerMap(int size = 8); void* setMap(const void* from, void* to); void* getMap(const void* from) const; private: struct Pair { const void* from; void* to; }; static int hash(const void* pointer); static int hash2(const void* pointer); int findEntry(const void* from) const; void resize(); int used; Vector hashTable; }; #endif Maude-Maude3.5.1/src/Utility/pointerMap.cc0000664000175000017510000000616715036121435017751 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2024 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class PointerMap // // We use a hash table to map void* to void* with // clashes being resolved by open addressing (with double hashing) // See Cormen, Lieserson & Rivest p235 // #include "macros.hh" #include "vector.hh" #include "pointerMap.hh" inline int PointerMap::hash(const void* pointer) { int i = reinterpret_cast(pointer); return (i >> NR_PTR_LOSE_BITS) ^ (i >> (2 * NR_PTR_LOSE_BITS)); } inline int PointerMap::hash2(const void* pointer) // 2nd hash function must always return an odd value { int i = reinterpret_cast(pointer); return ((i >> NR_PTR_LOSE_BITS) ^ (i >> (WORD_SIZE / 2))) | 1; } PointerMap::PointerMap(int size) { int s = 2; while (s < size) s *= 2; s *= 2; hashTable.expandTo(s); for (int i = 0; i < s; ++i) hashTable[i].from = nullptr; used = 0; } void* PointerMap::setMap(const void* from, void* to) { Assert(from != nullptr, "can't map null pointer"); if (hashTable.length() <= 2 * used) resize(); Pair& p = hashTable[findEntry(from)]; void* r; if (p.from == nullptr) { r = nullptr; p.from = from; ++used; } else r = p.to; p.to = to; return r; } void* PointerMap::getMap(const void* from) const { Assert(from != nullptr, "can't map null pointer"); const Pair& p = hashTable[findEntry(from)]; return (p.from == nullptr) ? nullptr : p.to; } int PointerMap::findEntry(const void* from) const { int mask = hashTable.length() - 1; int i = hash(from) & mask; if (hashTable[i].from == nullptr || hashTable[i].from == from) return i; int step = hash2(from); do i = (i + step) & mask; while (hashTable[i].from != nullptr && hashTable[i].from != from); return i; } void PointerMap::resize() { int s = hashTable.length(); int n = 2 * s; Vector newHashTable(n); for (int i = 0; i < n; ++i) newHashTable[i].from = nullptr; int mask = n - 1; for (int i = 0; i < s; ++i) { Pair& p = hashTable[i]; if (p.from != nullptr && p.to != nullptr) { int j = hash(p.from) & mask; if (newHashTable[j].from != nullptr) { int step = hash2(p.from); do j = (j + step) & mask; while (newHashTable[j].from != nullptr); } newHashTable[j] = p; } } hashTable.swap(newHashTable); } Maude-Maude3.5.1/src/Utility/pigPug.hh0000664000175000017510000001745315036121435017100 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class to implement a modified PIG-PUG to solve // associative unification problems with constraints on variables. // // An equation is strict left linear if each variable in the lhs is // either constrained or occurs exactly once in the equation. PIG-PUG // can be shown to terminate on such equation with a finite complete // set of unifiers. // // For other equations we resort to incomplete methods to ensure termination. // #ifndef _pigPug_hh_ #define _pigPug_hh_ #include #include #include #include "natSet.hh" #include "variableConstraint.hh" class PigPug { public: enum Linearity { NONLINEAR = 0, STRICT_LEFT_LINEAR = 1, STRICT_RIGHT_LINEAR = 2, LINEAR = STRICT_LEFT_LINEAR | STRICT_RIGHT_LINEAR }; enum OutcomeFlags { FAILURE = 0, // no solution found SUCCESS = 1, // solution was found INCOMPLETE = 2 // solutions may have been missed }; typedef pair ResultPair; // typedef Vector ConstraintMap; typedef Vector Word; typedef Vector Subst; PigPug(const Word& lhs, const Word& rhs, const ConstraintMap& constraintMap, int lastOriginalVariable, int freshVariableStart, int linearity, bool equateOptimization = false); // // Returns NONE, or the index for the next unused variable, and fills out unifier. // constraintMap is filled out with entries for all variables, original and fresh. // Variables that appear in binding of some other variable (which necessarily // includes all fresh variables) will get a constraint calculated by PigPug. Other // original variables are given their original constraint. // ResultPair getNextUnifier(Subst& unifier, ConstraintMap& constraintMap); static void setDepthBoundMultiplier(double m); private: enum Moves { // // 3 basic moves of PigPug algorithm. // // RHS_PEEL: (x1 x2 ... =? y1 y2 ...) -> (x1 x2 ... =? y2 ...) // LHS_PEEL: (x1 x2 ... =? y1 y2 ...) -> (x2 ... =? y1 y2 ...) // EQUATE: (x1 x2 ... =? y1 y2 ...) -> (x2 ... =? y2 ...) // RHS_PEEL = 1, LHS_PEEL = 2, EQUATE = RHS_PEEL | LHS_PEEL, // // Two final moves. These are forced and never update state. // FINAL = 4, LHS_TAKES_ALL = FINAL | RHS_PEEL, RHS_TAKES_ALL = FINAL | LHS_PEEL, // // Mask for extracting actual move from other details. // BASIC_MOVES = RHS_PEEL | LHS_PEEL, ALL_MOVES = BASIC_MOVES | FINAL, // // EQUATE was done as rhsVar |-> lhsVar // // We OR this flag with EQUATE to indicate that the rhs variable // was instantiated rather than the lhs variable (the usual case). // This happens when the rhs variable is strictly less constrained // than the lhs variable. // RHS_ASSIGN = 8, // // We OR this flag with RHS_PEEL or EQUATE to record the fact // that a modified lhs unificand was pushed on the stack. // PUSH_LHS = 16, // // We OR this flag with LHS_PEEL or EQUATE to record the fact // that a modified rhs unificand was pushed on the stack. // PUSH_RHS = 32, // // We OR this flag with the move anytime we need to push // an updated ConstraintMap on the constraintStack. // PUSH_CONSTRAINT_MAP = 64, // // We OR this flag with EQUATE to indicate a canceling of equal variables. // We need this in the cycle detection case so we don't try to pop a state // that doesn't exist. // CANCEL = 128 }; enum SpecialValues { DELIMITER = -1, // no variable can have this value DEFAULT_DEPTH_BOUND_MULTIPLIER = 1 }; enum Result { NOT_ENTERED = -1, // for cycle detection version only, we didn't enter the state FAIL = 0, // move failed LHS_DONE = 1, // move reduced lhs (and possibly rhs) to a single variable RHS_DONE = 2, // move reduced rhs (but not lhs) to a single variable OK = 4 // move succeeded without hitting an end case }; struct Unificand { int index; // to record the size of the cancelled prefix Word word; // the word of variables }; typedef list UnificandStack; typedef list ConstraintStack; typedef Vector Path; typedef Vector VariableRenaming; // // Cycle detection data structures // //typedef vector CombinedWord; // use STL vector in order to have comparison typedef Vector CombinedWord; typedef map WordMap; typedef Vector StateStack; struct StateInfo { bool onStack; bool onCycle; bool onLivePath; bool dummy; // pad to 4 bytes }; // // PIG-PUG with cycle detection functions. // void makeStateKey(CombinedWord& stateKey); bool variableOccurrencesBoundedBy2(const Word& lhs, const Word& rhs, int maxVarNumber); int firstMoveWithCycleDetection(); int nextMoveWithCycleDetection(); int runWithCycleDetection(int result); bool onCycle(const CombinedWord& key); void depart(); void confirmedLive(); // // PIG-PUG without cycle detection functions. // int firstMove(); int nextMove(); bool doublePeelPossible(); int run(int result); // // Common code. // Result lhsPeel(); Result rhsPeel(); bool feasible(); Result cancel(); Result equate(); bool checkUnificand(UnificandStack& unificandStack, int oldVar, int newVar); bool checkUnificand2(UnificandStack& unificandStack, int oldVar, int newVar, int offset); bool checkConstraintMap(int knownBigVariable, int otherVariable); bool checkConstraintMap(int knownBigVariable, const Unificand& otherSide); int undoMove(); int completed(int status); // // Unifier extraction code. // int extractUnifier(Subst& unifier, ConstraintMap& constraintMap); void compose(Subst& subst, int oldVar, int replacement); bool compose2(Subst& subst, int oldVar, int replacement); bool composeFinal(Subst& subst, int oldVar, const Word& replacement, int index); void renameVariables(Subst& subst, const VariableRenaming& variableRenaming); void collectRangeVariables(const Subst& subst, NatSet& occursInRange); //void checkInvariant(const ConstraintMap& constraintMap, Subst& subst); const int lastOriginalVariable; const int freshVariableStart; const int linearity; const bool equateOptimization; bool cycleDetection; // true means we will use cycle detection int depthBound; // NONE means we will fully explore the search tree int incompletenessFlag; // 0 or INCOMPLETE UnificandStack lhsStack; UnificandStack rhsStack; ConstraintStack constraintStack; Path path; // // Cycle detection data. // WordMap wordMap; Vector stateInfo; StateStack traversalStack; // // Static configuration data. // static double depthBoundMultiplier; }; ostream& operator<<(ostream& s, const PigPug::Word& word); inline void PigPug::setDepthBoundMultiplier(double m) { depthBoundMultiplier = m; } #endif Maude-Maude3.5.1/src/Utility/pigPug.cc0000664000175000017510000001214415036121435017056 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2020 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class PigPug. // #include "macros.hh" #include "vector.hh" #include "pigPug.hh" // our stuff #include "pigPug-search.cc" #include "pigPug-cycleDetection.cc" #include "pigPug-checks.cc" #include "pigPug-stack.cc" #include "pigPug-extract.cc" double PigPug::depthBoundMultiplier = DEFAULT_DEPTH_BOUND_MULTIPLIER; PigPug::PigPug(const Word& lhs, const Word& rhs, const ConstraintMap& constraintMap, int lastOriginalVariable, int freshVariableStart, int linearity, bool equateOptimization) : lastOriginalVariable(lastOriginalVariable), freshVariableStart(freshVariableStart), linearity(linearity), equateOptimization(equateOptimization) { DebugEnter("|lhs| = " << lhs.size() << " |rhs| = " << rhs.size() << " lastOriginalVariable = " << lastOriginalVariable << " freshVariableStart = " << freshVariableStart << " linearity = " << linearity); DebugInfo(lhs << " =? " << rhs); // // We assume we have a real equation; i.e. both sides have at least // two variable occurrences. // Assert(lhs.size() >= 2, "lhs too small " << lhs.size()); Assert(rhs.size() >= 2, "rhs too small " << rhs.size()); // // If there is linearity, it must appear on the left, whether or not // it appears in the right. // Assert(linearity != STRICT_RIGHT_LINEAR, "strict right linear without strict left linearity not supported"); lhsStack.push_back(Unificand()); lhsStack.back().index = 0; lhsStack.back().word = lhs; // deep copy rhsStack.push_back(Unificand()); rhsStack.back().index = 0; rhsStack.back().word = rhs; // deep copy constraintStack.push_back(constraintMap); // deep copy incompletenessFlag = 0; depthBound = NONE; cycleDetection = false; if (!(linearity & STRICT_LEFT_LINEAR)) { // // If we are not strictly left linear then we need either cycle detection // or depth bounded to ensure termination. // Both of these measures introduce the possibility of incompleteness. // if (variableOccurrencesBoundedBy2(lhs, rhs, lastOriginalVariable)) { cycleDetection = true; Verbose("Associative unification using cycle detection."); } else { depthBound = depthBoundMultiplier * (lhs.size() + rhs.size()); Verbose("Associative unification using depth bound of " << depthBound << "."); } } } bool PigPug::variableOccurrencesBoundedBy2(const Word& lhs, const Word& rhs, int maxVarNumber) { const ConstraintMap& constraintMap = constraintStack.back(); // // We are only concerned with unbounded variables. // Vector varCount(maxVarNumber + 1); for (int& i : varCount) i = 0; for (int var : lhs) { if (constraintMap[var].isUnbounded() && ++(varCount[var]) > 2) return false; } for (int var : rhs) { if (constraintMap[var].isUnbounded() && ++(varCount[var]) > 2) return false; } return true; } PigPug::ResultPair PigPug::getNextUnifier(Subst& unifier, ConstraintMap& constraintMap) { // // Returns (SUCCESS | incompleteness flag, index of next unused variable) // and unifier and constraintMap are filled out on success. // Returns (FAILURE | incompleteness flag, NONE) on failure. // int nextFreshVariable; do { int result = cycleDetection ? runWithCycleDetection(path.empty() ? OK : FAIL) : run(path.empty() ? OK : FAIL); if (result == FAIL) return ResultPair(FAILURE | incompletenessFlag, NONE); // // nextFreshVariable == NONE indicates a upperBound violation // was discovered during the construction of the unifier. // // If no violation was found, constraintMap is filled out // with entries for all variables, original and fresh. // Variables that appear in the rhs of the solution other than // as self-mappings (which necessarily includes all fresh // variables) will get a constraint calculated by PigPug. Other // original variables are given their original constraint. // nextFreshVariable = extractUnifier(unifier, constraintMap); } while (nextFreshVariable == NONE); return ResultPair(SUCCESS | incompletenessFlag, nextFreshVariable); } ostream& operator<<(ostream& s, const PigPug::Word& word) { for (int index : word) s << "x" << index << " "; return s; } Maude-Maude3.5.1/src/Utility/pigPug-stack.cc0000664000175000017510000001374215036121435020166 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2019 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for saving stuff on stacks. // bool PigPug::checkUnificand(UnificandStack& unificandStack, int oldVar, int newVar) { // // Check unificand for occurrences of oldVar _from_ current position, and // if necessary push a modified unificand (oldVar |-> newVar) on the stack. // Returns true if a modified unificand is pushed, false if the unificand is // unmodified. // Unificand& unificand = unificandStack.back(); int index = unificand.index; int unificandLength = unificand.word.size(); for (int i = index; i < unificandLength; ++i) { if (unificand.word[i] == oldVar) { // // Another instance of oldVar found - make a new unificand // int remainingUnificand = unificandLength - index; unificandStack.push_back(Unificand()); Unificand& newUnificand = unificandStack.back(); newUnificand.index = 0; newUnificand.word.resize(remainingUnificand); for (int j = 0; j < remainingUnificand; ++j) { int var = unificand.word[j + index]; newUnificand.word[j] = (var == oldVar) ? newVar : var; } return true; } } return false; } bool PigPug::checkUnificand2(UnificandStack& unificandStack, int oldVar, int newVar, int offset) { // // Check unificand for occurrences of oldVar from current position + offset, and // if necessary push a modified unificand (oldVar |-> newVar oldVar) on the stack. // Returns true if a modified unificand is pushed, false if the unificand is // unmodified. We expect that offset will usually be 0 or 1. // Unificand& unificand = unificandStack.back(); int index = unificand.index; int unificandLength = unificand.word.size(); for (int i = index + offset; i < unificandLength; ++i) { if (unificand.word[i] == oldVar) { // // Another instance of oldVar found - make a new unificand // unificandStack.push_back(Unificand()); Unificand& newUnificand = unificandStack.back(); newUnificand.index = 0; for (int j = index; j < i; ++j) newUnificand.word.append(unificand.word[j]); newUnificand.word.append(newVar); newUnificand.word.append(oldVar); for (int j = i + 1; j < unificandLength; ++j) { int var = unificand.word[j]; if (var == oldVar) newUnificand.word.append(newVar); newUnificand.word.append(var); } return true; } } return false; } bool PigPug::checkConstraintMap(int knownBigVariable, int otherVariable) { // // This handles the // knownBigVariable |-> otherVariable knownBigVariable // case. // const ConstraintMap& constraintMap = constraintStack.back(); Assert(!(constraintMap[knownBigVariable].hasTheoryConstraint()), "big variable cannot have theory constraint"); int upperBound = constraintMap[knownBigVariable].getUpperBound(); if (upperBound == 0) return false; // big variable is unbounded, so no update needed Assert(upperBound != 1, "big variable cannot have upperbound of 1"); // // Push a duplicate constraint map on the stack. // constraintStack.push_back(constraintMap); ConstraintMap& newConstraintMap = constraintStack.back(); // // big variable has a finite bound; need to decrement it. // int newUpperBound = upperBound - 1; newConstraintMap[knownBigVariable].setUpperBound(newUpperBound); // // Check if we need to update other variables bound. // Theory constraints always return an upper-bound of 1 so // never get updated. // int otherUpperBound = constraintMap[otherVariable].getUpperBound(); if (otherUpperBound == 0 || otherUpperBound > newUpperBound) newConstraintMap[otherVariable].setUpperBound(newUpperBound); return true; } bool PigPug::checkConstraintMap(int knownBigVariable, const Unificand& otherSide) { // // This handles the // knownBigVariable |-> whole other unificand // case. // const ConstraintMap& constraintMap = constraintStack.back(); Assert(!(constraintMap[knownBigVariable].hasTheoryConstraint()), "big variable cannot have theory constraint"); int upperBound = constraintMap[knownBigVariable].getUpperBound(); if (upperBound == 0) return false; // big variable is unbounded, so no update needed Assert(upperBound != 1, "big variable cannot have upperbound of 1"); // // big variable has a finite bound; need to decrement it. // int newUpperBound = upperBound - 1; // // Check if any variable in the unificand has a looser bound. // int len = otherSide.word.size(); for (int i = otherSide.index; i < len; ++i) { int otherVariable = otherSide.word[i]; int upperBound = constraintMap[otherVariable].getUpperBound(); if (upperBound == 0 || upperBound > newUpperBound) goto needToUpdate; } return false; needToUpdate: // // We're going to update constraint(s) so push a duplicate // constraint map on the stack. // constraintStack.push_back(constraintMap); ConstraintMap& newConstraintMap = constraintStack.back(); for (int i = otherSide.index; i < len; ++i) { int otherVariable = otherSide.word[i]; int upperBound = constraintMap[otherVariable].getUpperBound(); if (upperBound == 0 || upperBound > newUpperBound) newConstraintMap[otherVariable].setUpperBound(newUpperBound); } return true; } Maude-Maude3.5.1/src/Utility/pigPug-search.cc0000664000175000017510000004020315036121435020316 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2019-2020 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for initial search phase. // int PigPug::run(int result) { // // Pass result = OK for start, and result = FAIL for next try. // for (;;) { if (result == OK) result = firstMove(); // make the first available move from this position else { if (result == FAIL || completed(result) == FAIL) { if (path.empty()) break; // no more backtracking possible; we're done result = nextMove(); // backtrack and make the next available move } else { // // Result was something other than OK or FAIL and check for // completion didn't fail. Therefore we have a successful // path. // return result; // must have completed } } } return FAIL; } int PigPug::firstMove() { // // First we cancel any equal variables. // for (;;) { int result = cancel(); if (result == FAIL) break; if (result != OK) return result; } // // Now we check feasibility of remaining equation. // if (!feasible()) return FAIL; if (depthBound != NONE && path.length() >= depthBound) { // // We cut off the seach to ensure termination but // this means that the set of solutions we return // may be incomplete. // if (incompletenessFlag != INCOMPLETE) { incompletenessFlag = INCOMPLETE; Verbose("Associative unification algorithm hit depth bound."); } return FAIL; } // // Try all three moves until we get success. // It is critical that equate comes last; i.e. that it has no successor moves. // This is because cancellation generates the equivalent of equate moves and // we do not want these to have successors. // int result = rhsPeel(); if (result != FAIL) return result; result = lhsPeel(); if (result != FAIL) return result; return equate(); } int PigPug::nextMove() { int previousMove = undoMove() & BASIC_MOVES; // undoMove() never returns FINAL moves if (previousMove == EQUATE) return FAIL; // last move was cancel or equate - no more moves for this state // // Try the one or two remaining moves. // if (previousMove == RHS_PEEL) { // // Last move was rhs peel so we can try lhs peel. // int result = lhsPeel(); if (result != FAIL) return result; } if (equateOptimization && doublePeelPossible()) { // // Currently the equate optimization is only valid for // linear equations where the sort structure cannot interfere // with extra variables taking identity. // // A double peel will get us to the same place as an equate // move, except we introduce a fresh variable which by taking // identity will recover any equate solution. Such a double // peel will already have been initiated by a left peel or // right peel so we're done. We don't test for this in firstMove() // because for a double peel a left peel or right peel have been // made as the first move. // DebugInfo("skipping equate step"); return false; } return equate(); // always final thing to try } bool PigPug::doublePeelPossible() { Unificand& lhs = lhsStack.back(); int lhsVar = lhs.word[lhs.index]; int lhsNextVar = lhs.word[lhs.index + 1]; Unificand& rhs = rhsStack.back(); int rhsVar = rhs.word[rhs.index]; int rhsNextVar = rhs.word[rhs.index + 1]; const ConstraintMap& constraintMap = constraintStack.back(); return (constraintMap[lhsVar].isUnbounded() && constraintMap[rhsNextVar].isUnbounded()) || (constraintMap[rhsVar].isUnbounded() && constraintMap[lhsNextVar].isUnbounded()); } PigPug::Result PigPug::cancel() { // // Check if the current variables on the lhs and rhs are equal. // Unificand& lhs = lhsStack.back(); Unificand& rhs = rhsStack.back(); if (lhs.word[lhs.index] != rhs.word[rhs.index]) return FAIL; // // If so, we cancel them. // ++(lhs.index); ++(rhs.index); path.append(EQUATE | CANCEL); // // Then we check if one side of the equation has been // reduced to a single variable. // if (lhs.index + 1 == lhs.word.length()) return LHS_DONE; if (rhs.index + 1 == rhs.word.length()) return RHS_DONE; return OK; } PigPug::Result PigPug::rhsPeel() { // // Given // x xRest =? y yRest // if x has can take at least two variables we make the step x |-> yx and // then cancel the leading y instances to leave us with // x xRest =? yRest // If we are strict left linear and x is unbounded then this must // be the only occurrence of x; otherwise x may have arbitrary occurences // in both lhs and rhs, so we may need to push modified lhs/rhs. // Either way we consume one rhs variable. // const Unificand& lhs = lhsStack.back(); int lhsVar = lhs.word[lhs.index]; const ConstraintMap& constraintMap = constraintStack.back(); int lhsUpperBound = constraintMap[lhsVar].getUpperBound(); if (lhsUpperBound == 1) return FAIL; // x can't take two variables // // Make the move. // int move = RHS_PEEL; Unificand& rhs = rhsStack.back(); int rhsVar = rhs.word[rhs.index]; ++(rhs.index); // consume y // // Check if we need to make the substitution in yRest or xRest. // if (lhsUpperBound == 0 && (linearity & STRICT_LEFT_LINEAR)) { // // In a strict left-linear system, a lhs variable that is unbounded // can only appear once, and we just handled the single occurrence. // Assert(!(checkUnificand2(rhsStack, lhsVar, rhsVar, 0)), "needed to do replacement in rhs"); Assert(!(checkUnificand2(lhsStack, lhsVar, rhsVar, 1)), "needed to do replacement in lhs"); } else { // // Look for occurances of x in rhs from new rhs.index; // if so we need to save the rhs and expand them. // if (checkUnificand2(rhsStack, lhsVar, rhsVar, 0)) move |= PUSH_RHS; // // Look for occurances of x in lhs from lhs.index + 1 (we already // took care of the instance at lhs.index); if so we need to save // the lhs and expand them. // if (checkUnificand2(lhsStack, lhsVar, rhsVar, 1)) move |= PUSH_LHS; } // // Check if x |-> yx changes bounds on x or y. // if (checkConstraintMap(lhsVar, rhsVar)) move |= PUSH_CONSTRAINT_MAP; // // Move is RHS_PEEL with any of PUSH_LHS, PUSH_RHS, PUSH_CONSTRAINT_MAP // path.append(move); // // Did we get rhs down to one variable? // Unificand& newRhs = rhsStack.back(); return (newRhs.index + 1 == newRhs.word.length()) ? RHS_DONE : OK; } PigPug::Result PigPug::lhsPeel() { // // Given // x xRest =? y yRest // if y is can take at least two variables we make the step y |-> xy // and then cancel leading x instances to leave us with // xRest =? y yRest // If we are strict left linear and y is unbounded than y cannot have // occurrences in lhs; otherwise y may appear on either side. // We may need to push modified lhs/rhs. Either way we consume one lhs variable. // Unificand& rhs = rhsStack.back(); int rhsVar = rhs.word[rhs.index]; const ConstraintMap& constraintMap = constraintStack.back(); int rhsUpperBound = constraintMap[rhsVar].getUpperBound(); if (rhsUpperBound == 1) return FAIL; // y can't take two variables // // Make the move. // int move = LHS_PEEL; Unificand& lhs = lhsStack.back(); int lhsVar = lhs.word[lhs.index]; ++(lhs.index); // consume x // // Check if we need to make the substitution in xRest. // if (rhsUpperBound == 0 && (linearity & STRICT_RIGHT_LINEAR)) { // // // In a strict right linear system, a rhs variable that is unbounded // can only appear once, and we just handled the single occurance. // Assert(!(checkUnificand2(lhsStack, rhsVar, lhsVar, 0)), "needed to do replacement in lhs"); Assert(!(checkUnificand2(rhsStack, rhsVar, lhsVar, 1)), "needed to do replacement in rhs"); } else { // // Look for occurances of x in rhs from rhs.index + 1 // if (checkUnificand2(rhsStack, rhsVar, lhsVar, 1)) move |= PUSH_RHS; // // We weren't strict right linear but we could still be strict left linear. // if (rhsUpperBound == 0 && (linearity & STRICT_LEFT_LINEAR)) { // // In a strict left linear system, unbounded rhs variable cannot // appear in the lhs. // Assert(!(checkUnificand2(lhsStack, rhsVar, lhsVar, 0)), "needed to do replacement in lhs"); } else { // // Look for occurances of y in lhs from new lhs.index // if (checkUnificand2(lhsStack, rhsVar, lhsVar, 0)) move |= PUSH_LHS; } } // // Check if y |-> xy changes bounds on y or x. // if (checkConstraintMap(rhsVar, lhsVar)) move |= PUSH_CONSTRAINT_MAP; // // Move is LHS_PEEL with any of PUSH_LHS, PUSH_RHS, PUSH_CONSTRAINT_MAP // path.append(move); // // Did we get lhs down to one variable? // Unificand& newLhs = lhsStack.back(); return (newLhs.index + 1 == newLhs.word.length()) ? LHS_DONE : OK; } PigPug::Result PigPug::equate() { Unificand& lhs = lhsStack.back(); Unificand& rhs = rhsStack.back(); int lhsVar = lhs.word[lhs.index]; int rhsVar = rhs.word[rhs.index]; const ConstraintMap& constraintMap = constraintStack.back(); VariableConstraint lhsConstraint = constraintMap[lhsVar]; VariableConstraint rhsConstraint = constraintMap[rhsVar]; VariableConstraint meet(lhsConstraint); if (!(meet.intersect(rhsConstraint))) return FAIL; // // Compatible constraints. Use up one variable from each side. // ++(lhs.index); ++(rhs.index); int move = EQUATE; // // Need decide which way around to make the assignment. // if (rhsConstraint == meet) { //cout << "equate: lhsConstraint = " << lhsConstraint << " rhsConstraint = " << rhsConstraint << // " meet = " << meet << endl; //cout << "mapping " << lhsVar << " |-> " << rhsVar << endl; // // rhsConstraint is at least as tight as lhsConstraint so we will // make the assignment lhsVar |-> rhsVar // if ((linearity & STRICT_LEFT_LINEAR) && lhsConstraint.isUnbounded()) { // // In a strict left-linear system, a lhs variable that is unbounded // can only appear once, and we just used up the single occurance. // Assert(!(checkUnificand(lhsStack, lhsVar, rhsVar)), "needed to do replacement in lhs"); Assert(!(checkUnificand(rhsStack, lhsVar, rhsVar)), "needed to do replacement in rhs"); } else { // // Need to replace lhsVar with rhsVar in the remaining equation. // if (checkUnificand(lhsStack, lhsVar, rhsVar)) move |= PUSH_LHS; if (checkUnificand(rhsStack, lhsVar, rhsVar)) move |= PUSH_RHS; } } else if (lhsConstraint == meet) { //cout << "equate: lhsConstraint = " << lhsConstraint << " rhsConstraint = " << rhsConstraint << // " meet = " << meet << endl; //cout << "mapping " << rhsVar << " |-> " << lhsVar << endl; // // lhsConstraint is at least as tight as rhsConstraint so we will // make the assignment rhsVar |-> lhsVar // move |= RHS_ASSIGN; if (checkUnificand(rhsStack, rhsVar, lhsVar)) move |= PUSH_RHS; if ((linearity & STRICT_LEFT_LINEAR) && rhsConstraint.isUnbounded()) { // // In a strict left-linear system, a rhs varible that is unbounded // cannot appear in the lhs. // Assert(!(checkUnificand(lhsStack, rhsVar, lhsVar)), "needed to do replacement in lhs"); } else { if (checkUnificand(lhsStack, rhsVar, lhsVar)) move |= PUSH_LHS; } } else { //cout << "equate: incompable constraints" << endl; DebugAdvisory("*** Incomparable constraints ***"); // // Compatible but incomparable constraints. // // This can only happen when the smaller bounded variable can // take identity and the larger bounded variable cannot, which // is a rather bizarre situation but possible with weird sorting // or a one-sided identity. // // We will need to update the constraintMap whichever way we // decide to make the assignment. // constraintStack.push_back(constraintMap); ConstraintMap& newConstraintMap = constraintStack.back(); move |= PUSH_CONSTRAINT_MAP; if (rhsConstraint.isUnbounded()) { // // Both variables cannot be unbounded. If rhsVar is unbounded then // lhsVar is bounded and we put rhsVar |-> lhsVar // move |= RHS_ASSIGN; if (checkUnificand(rhsStack, rhsVar, lhsVar)) move |= PUSH_RHS; if ((linearity & STRICT_LEFT_LINEAR)) { // // In a strict left-linear system, a rhs variable that is unbounded // cannot appear in the lhs. // Assert(!(checkUnificand(lhsStack, rhsVar, lhsVar)), "needed to do replacement in lhs"); } else { if (checkUnificand(lhsStack, rhsVar, lhsVar)) move |= PUSH_LHS; } newConstraintMap[lhsVar] = meet; } else { // // Otherwise the default is to put lhsVar |-> rhsVar // if ((linearity & STRICT_LEFT_LINEAR) && lhsConstraint.isUnbounded()) { // // In a strict left-linear system, a lhs variable that is unbounded // can only appear once, and we just used up the single occurance. // Assert(!(checkUnificand(lhsStack, lhsVar, rhsVar)), "needed to do replacement in lhs"); Assert(!(checkUnificand(rhsStack, lhsVar, rhsVar)), "needed to do replacement in rhs"); } else { // // Need to replace lhsVar with rhsVar in the remaining equation. // if (checkUnificand(lhsStack, lhsVar, rhsVar)) move |= PUSH_LHS; if (checkUnificand(rhsStack, lhsVar, rhsVar)) move |= PUSH_RHS; } newConstraintMap[rhsVar] = meet; } } path.append(move); Unificand& newLhs = lhsStack.back(); if (newLhs.index + 1 == newLhs.word.length()) return LHS_DONE; // lhs reduced to a single variable Unificand& newRhs = rhsStack.back(); if (newRhs.index + 1 == newRhs.word.length()) return RHS_DONE; // rhs reduced to a single variable return OK; } int PigPug::undoMove() { // // Undo last move. // int pos = path.size() - 1; int move = path[pos]; if (move & FINAL) { // // Final moves are forced, and they are notional - // they don't update anything except possibly the // constraint stack. // if (move & PUSH_CONSTRAINT_MAP) constraintStack.pop_back(); // // Get next move to undo. // --pos; move = path[pos]; } // // Dispose of the move we're undoing // path.resize(pos); // // Possible moves in left linear case: // RHS_PEEL // LHS_PEEL // LHS_PEEL | PUSH_RHS // LHS_PEEL | RHS_PEEL with any combination of RHS_ASSIGN, PUSH_LHS, PUSH_RHS // // In the general case the following is also possible: // RHS_PEEL with any combination of PUSH_LHS, PUSH_RHS, PUSH_CONSTRAINT_MAP // LHS_PEEL with any combination of PUSH_LHS, PUSH_RHS, PUSH_CONSTRAINT_MAP // // In the case that LHS (RHS) is both incremented and pushed, the incrementing // happens before the push, and thus for undo the decrementing must happen after // the pop. // if (move & PUSH_LHS) lhsStack.pop_back(); if (move & LHS_PEEL) --(lhsStack.back().index); if (move & PUSH_RHS) rhsStack.pop_back(); if (move & RHS_PEEL) --(rhsStack.back().index); if (move & PUSH_CONSTRAINT_MAP) constraintStack.pop_back(); return move; } Maude-Maude3.5.1/src/Utility/pigPug-extract.cc0000664000175000017510000002265615036121435020537 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2019-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for second phase, to extract a solution from a path. // /* void PigPug::checkInvariant(const ConstraintMap& constraintMap, Subst& subst) { for (int i = 0; i <= lastOriginalVariable; ++i) { int wordSize = subst[i].size(); int upperBound = constraintMap[i].getUpperBound(); Assert(upperBound == 0 || upperBound >= wordSize, "violation: var " << i << " has upperbound of " << upperBound << " and wordSize " << subst[i]); } } */ int PigPug::extractUnifier(Subst& unifier, ConstraintMap& constraintMap) { // // We found a successful sequence of moves. // Now we need to convert it into a unifier. // UnificandStack::const_iterator lhs = lhsStack.begin(); UnificandStack::const_iterator rhs = rhsStack.begin(); int lhsIndex = 0; int rhsIndex = 0; // // Start with the identity substitution. // unifier.resize(lastOriginalVariable + 1); for (int i = 0; i <= lastOriginalVariable; ++i) { Word& word = unifier[i]; word.resize(1); word[0] = i; } // // Go through the moves recorded in path, generating and composing // the corresponding substitutions. // for (int move : path) { int lhsVar = lhs->word[lhsIndex]; int rhsVar = rhs->word[rhsIndex]; switch (move & ALL_MOVES) { case RHS_PEEL: { // // lhsVar |-> rhsVar lhsVar // //cout << "rhs peel: " << lhsVar << " |-> " << rhsVar << " " << lhsVar << endl; if (!(compose2(unifier, lhsVar, rhsVar))) return NONE; // upperBound violation //checkInvariant(constraintStack.front(), unifier); ++rhsIndex; break; } case LHS_PEEL: { // // rhsVar |-> lhsVar rhsVar // //cout << "lhs peel: " << rhsVar << " |-> " << lhsVar << " " << rhsVar << endl; if (!(compose2(unifier, rhsVar, lhsVar))) return NONE; // upperBound violation //checkInvariant(constraintStack.front(), unifier); ++lhsIndex; break; } case EQUATE: case EQUATE | FINAL: { if (move & RHS_ASSIGN) { // // rhsVar |-> lhsVar // //cout << "equate: " << rhsVar << " |-> " << lhsVar << endl; compose(unifier, rhsVar, lhsVar); //checkInvariant(constraintStack.front(), unifier); } else { // // lhsVar |-> rhsVar (assuming they are distinct) // //cout << "equate: " << lhsVar << " |-> " << rhsVar << endl; if (lhsVar != rhsVar) compose(unifier, lhsVar, rhsVar); //checkInvariant(constraintStack.front(), unifier); } ++lhsIndex; ++rhsIndex; break; } case LHS_TAKES_ALL: { // // lhsVar |-> (rest of rhs word) // //cout << "lhs takes all for " << lhsVar << endl; if (!(composeFinal(unifier, lhsVar, rhs->word, rhsIndex))) return NONE; // upperBound violation //checkInvariant(constraintStack.front(), unifier); break; } case RHS_TAKES_ALL: { // // rhsVar |-> (rest of lhs word) // //cout << "rhs takes all for " << rhsVar << endl; if (!(composeFinal(unifier, rhsVar, lhs->word, lhsIndex))) return NONE; // upperBound violation //checkInvariant(constraintStack.front(), unifier); break; } default: CantHappen("unknown move " << move); } if (move & PUSH_LHS) { ++lhs; lhsIndex = 0; } if (move & PUSH_RHS) { ++rhs; rhsIndex = 0; } } // // Now find out what variables show up in range of substitution. // NatSet occursInRange; collectRangeVariables(unifier, occursInRange); // // Then look for original variables that map to something other than themselves, and // if they occur in the range, rename them. // int nextVariableName = freshVariableStart; VariableRenaming variableRenaming(lastOriginalVariable + 1); // // We start by initializing the constraintMap with a deep copy // of the original constraint map we were given; this may include // constraints for variables that didn't occur in the equation we // just solved. // constraintMap = constraintStack.front(); const ConstraintMap& finalConstraintMap = constraintStack.back(); for (int i = 0; i <= lastOriginalVariable; ++i) { const Word& word = unifier[i]; if (word.size() == 1 && word[0] == i) { // // X |-> X // Still need to rename it to itself and pass back the // latest (and hence tightest) constraint. // variableRenaming[i] = i; constraintMap[i] = finalConstraintMap[i]; DebugInfo("self-mapping for x" << i << " gets " << finalConstraintMap[i]); } else { // // X |-> Y1 .... Yk // if (occursInRange.contains(i)) { // // X appears in the rhs of some assignment; but it's // not really the same X, so we rename the rhs version. // variableRenaming[i] = nextVariableName; DebugInfo("non-self mapping for x" << i << " generates new name x" << nextVariableName << " with constraint " << finalConstraintMap[i]); ++nextVariableName; constraintMap.append(finalConstraintMap[i]); } else { // // Variable doesn't appear in the rhs. We can leave // its renaming uninitialized. // } } } // // Rename rhs variables. // renameVariables(unifier, variableRenaming); //checkInvariant(constraintMap, unifier); /* for (int i = 0; i <= lastOriginalVariable; ++i) { cout << "v" << i << " |-> " << unifier[i] << endl; } */ return nextVariableName; } void PigPug::compose(Subst& subst, int oldVar, int replacement) { // // Compose subst with { oldVar |-> replacement }. // for (int i = 0; i <= lastOriginalVariable; ++i) { for (int& v : subst[i]) { if (v == oldVar) v = replacement; } } } bool PigPug::compose2(Subst& subst, int oldVar, int replacement) { // // Compose subst with { oldVar |-> replacement oldVar }. // Return false if we see an upperbounds violation. // const ConstraintMap& constraintMap = constraintStack.front(); // // Look at all original variables. // for (int i = 0; i <= lastOriginalVariable; ++i) { Word& word = subst[i]; int wordLength = word.size(); // // Does word contain oldVar? // for (int j = 0; j < wordLength; ++j) { if (word[j] == oldVar) { // // Yes, so we need to replace word. // Word newWord(j + 2); for (int k = 0; k < j; ++k) newWord[k] = word[k]; newWord[j] = replacement; newWord[j + 1] = oldVar; for (int k = j + 1; k < wordLength; ++k) { int var = word[k]; if (var == oldVar) newWord.append(replacement); newWord.append(var); } int newWordLength = newWord.size(); int upperBound = constraintMap[i].getUpperBound(); if (upperBound != 0 && newWordLength > upperBound) { //Verbose("compose2(): variable " << i << " has upperBound of " << upperBound << // " vs newWordLength of " << newWordLength); return false; } word.swap(newWord); break; } } } return true; } bool PigPug::composeFinal(Subst& subst, int oldVar, const Word& replacement, int index) { // // Compose subst with { var |-> suffix } where suffix // is the suffix of replacement starting at index. // Return false if we see an upperbounds violation. // const ConstraintMap& constraintMap = constraintStack.front(); int replacementLength = replacement.size(); for (int i = 0; i <= lastOriginalVariable; ++i) { Word& word = subst[i]; int wordLength = word.size(); for (int j = 0; j < wordLength; ++j) { if (word[j] == oldVar) { Word newWord(j); for (int k = 0; k < j; ++k) newWord[k] = word[k]; for (int k = j ; k < wordLength; ++k) { int var = word[k]; if (var == oldVar) { for (int l = index; l < replacementLength; ++l) newWord.append(replacement[l]); } else newWord.append(var); } int newWordLength = newWord.size(); int upperBound = constraintMap[i].getUpperBound(); if (upperBound != 0 && newWordLength > upperBound) { //Verbose("compose(): variable " << i << " has upperBound of " << upperBound << // " vs newWordLength of " << newWordLength); return false; } word.swap(newWord); break; } } } return true; } void PigPug::collectRangeVariables(const Subst& subst, NatSet& occursInRange) { for (const Word& word : subst) { for (int var : word) occursInRange.insert(var); } } void PigPug::renameVariables(Subst& subst, const VariableRenaming& variableRenaming) { for (int i = 0; i <= lastOriginalVariable; ++i) { for (int& v : subst[i]) v = variableRenaming[v]; } } Maude-Maude3.5.1/src/Utility/pigPug-cycleDetection.cc0000664000175000017510000001550215036121435022013 0ustar nileshnilesh /* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for PIG-PUG algorithm with cycle detection. // void PigPug::makeStateKey(CombinedWord& stateKey) { const ConstraintMap& constraintMap = constraintStack.back(); { const Unificand& lhs = lhsStack.back(); const int len = lhs.word.size(); for (int i = lhs.index; i < len; ++i) { const int v = lhs.word[i]; stateKey.push_back(v); stateKey.push_back(constraintMap[v].getUpperBound()); } } stateKey.push_back(DELIMITER); { const Unificand& rhs = rhsStack.back(); const int len = rhs.word.size(); for (int i = rhs.index; i < len; ++i) { const int v = rhs.word[i]; stateKey.push_back(v); stateKey.push_back(constraintMap[v].getUpperBound()); } } } int PigPug::firstMoveWithCycleDetection() { // // First we cancel any equal variables. // for (;;) { int result = cancel(); if (result == FAIL) break; if (result != OK) return result; // can only be LHS_DONE or RHS_DONE } // // Now we check feasibility of remaining equation. // if (!(feasible())) return NOT_ENTERED; // // Check to see if we've reached this state before. // CombinedWord stateKey; makeStateKey(stateKey); if (onCycle(stateKey)) return NOT_ENTERED; // already been here // // Try all three moves until we get success. // It is critcal that equate comes last; i.e. that it has no successor moves. // This is because cancellation generates the equivalent of equate moves and // we do not want these to have successors. // int result = rhsPeel(); if (result != FAIL) return result; result = lhsPeel(); if (result != FAIL) return result; return equate(); } int PigPug::nextMoveWithCycleDetection() { int previousMove = undoMove(); int basicMove = previousMove & BASIC_MOVES; if (basicMove == EQUATE) { // // Last move was cancel or equate - no more moves possible. // However we need to distiguish between them because cancels don't // correspond to fresh states for cycle detection purposes - we only // consider fully canceled states for cycle detection. // return (previousMove & CANCEL) ? NOT_ENTERED : FAIL; } // // Try the one or two remaining moves. // if (basicMove == RHS_PEEL) { // // Last move was rhs peel so we can try lhs peel. // int result = lhsPeel(); if (result != FAIL) return result; } return equate(); // always final thing to try } int PigPug::runWithCycleDetection(int result) { // // Pass result = OK for start, and result = FAIL for next try. // for (;;) { if (result == OK) { // // Simpify and check a state for feasibility before making first move. // result = firstMoveWithCycleDetection(); if (result == FAIL) depart(); // state we just failed to expand is finished continue; } else if (result == LHS_DONE || result == RHS_DONE) { // // Must have gotten down to lone variable on one side. // if (completed(result) != FAIL) { // // Success. // confirmedLive(); return result; } } // // Either the last step was a failure, or we failed to complete. // if (path.empty()) break; // nothing to undo so we're done result = nextMoveWithCycleDetection(); if (result == FAIL) depart(); // state we just failed to expand is finished } return FAIL; } bool PigPug::onCycle(const CombinedWord& key) { // // Returns true if we're not on a cycle and false if we're on a cycle. // int stateNr = stateInfo.size(); pair p = wordMap.insert(WordMap::value_type(key, stateNr)); if (p.second) { // // Saw a new state. // stateInfo.resize(stateNr + 1); StateInfo& s = stateInfo[stateNr]; s.onStack = true; s.onCycle = false; s.onLivePath = false; traversalStack.append(stateNr); return false; } // // Saw an previous state. // int index = p.first->second; if (stateInfo[index].onStack) { // // State is already on our traversal stack so we have a cycle. // We mark all states on the cycle as such. // for (int i = traversalStack.length() - 1;; --i) { int stateNr = traversalStack[i]; StateInfo& s = stateInfo[stateNr]; s.onCycle = true; if (s.onLivePath && incompletenessFlag == 0) { incompletenessFlag = INCOMPLETE; Verbose("Associative unification algorithm detected an infinite family of unifiers."); } if (stateNr == index) break; } return true; } // // We reach the previous state via a parallel path, so we push it on the stack. // stateInfo[index].onStack = true; traversalStack.append(index); return false; } void PigPug::depart() { Assert(!(traversalStack.empty()), "traversalStack empty"); // // Pop top state from traversal stack. // int top = traversalStack.length() - 1; int index = traversalStack[top]; stateInfo[index].onStack = false; traversalStack.resize(top); } void PigPug::confirmedLive() { if (traversalStack.empty()) { // // This can only happen if the initial state was trivial and never got pushed. // This shouldn't happen under normal use since the user of PigPug is expected // to cancel trivial equations. But we check it for robustness. // return; } // // All those states that are currently on the stack have a path to a unifier, // so mark them as live. If there is a state on a cycle then we have a infinite // family of unifiers corresponding to n times around the cycle and then exiting // via the path to the unifier. // int stackSize = traversalStack.size(); for (int i = 0; i < stackSize; ++i) { int stateNr = traversalStack[i]; StateInfo& s = stateInfo[stateNr]; s.onLivePath = true; if (s.onCycle && incompletenessFlag == 0) { incompletenessFlag = INCOMPLETE; Verbose("Associative unification algorithm detected an infinite family of unifiers."); } } } Maude-Maude3.5.1/src/Utility/pigPug-checks.cc0000664000175000017510000001244615036121435020321 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 2019-2020 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Code for feasibility, completion checks. // bool PigPug::feasible() { // // Conservative estimate of whether an equation is solvable. // false means definitely not solvable. // true means possibily solvable. // // First we cancel variables using commutativity. // We count the net occurrences of each variable. // Vector counts(lastOriginalVariable + 1); for (int i = 0; i <= lastOriginalVariable; ++i) counts[i] = 0; { // // lhs is positive. // Unificand& lhs = lhsStack.back(); int length = lhs.word.size(); for (int i = lhs.index; i < length; ++i) ++(counts[lhs.word[i]]); } { // // rhs is negative. // Unificand& rhs = rhsStack.back(); int length = rhs.word.size(); for (int i = rhs.index; i < length; ++i) --(counts[rhs.word[i]]); } // // Now we compute min-needed and max-can-take values // for each side of the equation. // int lhsMinNeeded = 0; int lhsMaxCanTake = 0; int rhsMinNeeded = 0; int rhsMaxCanTake = 0; const ConstraintMap& constraintMap = constraintStack.back(); for (int i = 0; i <= lastOriginalVariable; ++i) { int balance = counts[i]; if (balance != 0) { // // Variable didn't cancel completely so it will play a role in // the feasibility calculation. // VariableConstraint vc = constraintMap[i]; if (balance > 0) { lhsMinNeeded += balance; if (lhsMaxCanTake != UNBOUNDED) // once we get to UNBOUNDED we stay there { int upperBound = vc.getUpperBound(); if (upperBound == 0) lhsMaxCanTake = UNBOUNDED; // unbounded case else lhsMaxCanTake += upperBound * balance; } } else { rhsMinNeeded -= balance; if (rhsMaxCanTake != UNBOUNDED) // once we get to UNBOUNDED we stay there { int upperBound = vc.getUpperBound(); if (upperBound == 0) rhsMaxCanTake = UNBOUNDED; // unbounded case else rhsMaxCanTake -= upperBound * balance; } } } } // // We're feasible if there is no conflict among these values. // return lhsMinNeeded <= rhsMaxCanTake && rhsMinNeeded <= lhsMaxCanTake; } int PigPug::completed(int status) { // // Deal with the case where at least one side of the equation is down // to a single variable. // const ConstraintMap& constraintMap = constraintStack.back(); // // At least side of current equation is down to a single variable; see // if we can make a solution. // Unificand& lhs = lhsStack.back(); Unificand& rhs = rhsStack.back(); if (status == LHS_DONE) { // // lhs is down to one variable. // int lhsVar = lhs.word[lhs.index]; if (rhs.index + 1 == rhs.word.length()) { // // rhs one variable also. Need to check for constraint compatibility. // int rhsVar = rhs.word[rhs.index]; if (lhsVar == rhsVar) { // // We don't put a FINAL move on the stack - if we // did it would be a no-op for extractUnifier() and // would be immediately popped without further action // during backtracking by undoMove(). // return status; } VariableConstraint lhsConstraint = constraintMap[lhsVar]; VariableConstraint rhsConstraint = constraintMap[rhsVar]; VariableConstraint meet(lhsConstraint); if (meet.intersect(rhsConstraint)) { if (rhsConstraint == meet) path.append(EQUATE | FINAL); // rhs is at least as tight as lhs else if (lhsConstraint == meet) path.append(EQUATE | FINAL | RHS_ASSIGN); // lhs is at least as tight as lhs else { // // Compatible but incomparable constraints. // We put lhs |-> rhs but rhs constraint must become the meet. // constraintStack.push_back(constraintMap); ConstraintMap& newConstraintMap = constraintStack.back(); newConstraintMap[rhsVar] = meet; path.append(EQUATE | FINAL | PUSH_CONSTRAINT_MAP); } return status; } } else { // // rhs has more than one variable. // if (feasible()) { int move = LHS_TAKES_ALL; if (checkConstraintMap(lhsVar, rhs)) move |= PUSH_CONSTRAINT_MAP; path.append(move); return status; } } } else { Assert(status == RHS_DONE, "bad status for completed()"); if (feasible()) { int rhsVar = rhs.word[rhs.index]; int move = RHS_TAKES_ALL; if (checkConstraintMap(rhsVar, lhs)) move |= PUSH_CONSTRAINT_MAP; path.append(move); return status; } } return FAIL; } Maude-Maude3.5.1/src/Utility/natSet.hh0000664000175000017510000001255015036121435017074 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for dense sets of natural numbers with constant time membership test. // #ifndef _natSet_hh_ #define _natSet_hh_ #include "vector.hh" class NatSet { public: typedef int value_type; typedef int size_type; class iterator { public: bool operator==(const iterator& other) const; bool operator!=(const iterator& other) const; value_type operator*() const; iterator& operator++(); iterator operator++(int); private: value_type element; const NatSet* natSet; friend class NatSet; }; typedef iterator const_iterator; NatSet(); NatSet(const NatSet&) = default; // copy ctor NatSet(NatSet&&) = default; // move ctor NatSet& operator=(const NatSet&) = default; // copy assignment NatSet& operator=(NatSet&&) = default; // move assignment void clear(); size_type size() const; bool empty() const; iterator begin() const; iterator end() const; void insert(value_type i); void insert(const NatSet& other); // i.e. union void subtract(value_type i); void subtract(const NatSet& other); void intersect(const NatSet& other); int_fast8_t contains(value_type i) const; // constant time int_fast8_t containsSmall(value_type i) const; // only correct for small arguments bool contains(const NatSet& other) const; // i.e. improper subset test bool disjoint(const NatSet& other) const; bool operator==(const NatSet& other) const; bool operator!=(const NatSet& other) const; bool operator<(const NatSet& other) const; // linear ordering; no other properties guaranteed value_type max() const; // constant time value_type min() const; void swap(NatSet& other); // // Legacy synonyms. // void makeEmpty(); int cardinality() const; private: // // long gives that natural word size on most machines. // typedef unsigned long Word; enum Constants { BITS_PER_WORD = BITS_PER_BYTE * sizeof(Word) }; static int topBit(Word w); static int bottomBit(Word w); static int countBits(Word w); static unsigned int getShift(value_type i); static Word getMaskSmall(int i); static Word getMask(value_type i); static int getWordNr(value_type i); value_type arrayMin(int i) const; int_fast8_t arrayContains(value_type i) const; // // Many sets will fit in a single machine word so we store the first word separately in // the hope of avoiding the allocation of a Vector. // Word firstWord; Vector array; friend class iterator; public: enum Values { smallIntBound = BITS_PER_WORD - 1 }; }; inline NatSet::NatSet() { firstWord = 0; } inline void NatSet::clear() { firstWord = 0; array.clear(); } inline bool NatSet::empty() const { return firstWord == 0 && array.empty(); } inline NatSet::value_type NatSet::min() const { return (firstWord == 0) ? arrayMin(0) : bottomBit(firstWord); } inline NatSet::iterator NatSet::begin() const { iterator i; i.natSet = this; i.element = min(); return i; } inline NatSet::iterator NatSet::end() const { iterator i; i.natSet = this; i.element = -1; return i; } inline int_fast8_t NatSet::contains(value_type i) const { Assert(i >= 0, "-ve argument"); return i < BITS_PER_WORD ? ((firstWord >> i) & 1) : arrayContains(i); } inline int_fast8_t NatSet::containsSmall(value_type i) const { Assert(i >= 0, "-ve argument " << i); Assert(i < BITS_PER_WORD, "too big: " << i); return ((firstWord >> i) & 1); } inline bool NatSet::operator!=(const NatSet& other) const { return !(*this == other); } inline NatSet::value_type NatSet::max() const { Index len = array.size(); if (len == 0) return (firstWord == 0) ? -1 : topBit(firstWord); return (len * BITS_PER_WORD) + topBit(array[len - 1]); } inline void NatSet::swap(NatSet& other) { Word t = firstWord; firstWord = other.firstWord; other.firstWord = t; array.swap(other.array); } // // NatSet::iterator // inline bool NatSet::iterator::operator==(const iterator& other) const { return (element == other.element) && (natSet == other.natSet); } inline bool NatSet::iterator::operator!=(const iterator& other) const { return (element != other.element) || (natSet != other.natSet); } inline NatSet::value_type NatSet::iterator::operator*() const { Assert(element != -1, "bad dereference"); return element; } inline NatSet::iterator NatSet::iterator::operator++(int) { NatSet::iterator tmp(*this); operator++(); return tmp; } ostream& operator<<(ostream& s, const NatSet& ns); inline void NatSet::makeEmpty() { clear(); } inline int NatSet::cardinality() const { return size(); } #endif Maude-Maude3.5.1/src/Utility/natSet.cc0000664000175000017510000001473115036121435017065 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class NatSet. // #include "macros.hh" #include "vector.hh" #include "natSet.hh" local_inline NatSet::Word NatSet::getMaskSmall(int i) { Assert(i >= 0, "-ve argument"); Assert(i < BITS_PER_WORD, "too big"); Word mask = 1; return mask << i; } local_inline NatSet::Word NatSet::getMask(value_type i) { Assert(i >= 0, "-ve argument"); return getMaskSmall(i & (BITS_PER_WORD - 1)); } int NatSet::topBit(Word w) { Assert(w != 0, "zero word"); int i = BITS_PER_WORD - 1; for (Word mask = getMaskSmall(i); (mask & w) == 0; mask >>= 1) --i; return i; } int NatSet::bottomBit(Word w) { Assert(w != 0, "zero word"); int i = 0; for (Word mask = 1; (mask & w) == 0; mask <<= 1) ++i; return i; } int NatSet::countBits(Word w) { static const char bitCount[] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4}; int count = 0; for (; w != 0; w >>= 4) count += bitCount[w & 15]; return count; } local_inline unsigned int NatSet::getShift(value_type i) { Assert(i >= 0, "-ve argument"); return i & (BITS_PER_WORD - 1); } local_inline int NatSet::getWordNr(value_type i) { Assert(i >= 0, "-ve argument"); return static_cast(i) / BITS_PER_WORD; } NatSet::value_type NatSet::arrayMin(int i) const { int len = array.length(); for (; i < len; i++) { if (array[i] != 0) return (i + 1) * BITS_PER_WORD + bottomBit(array[i]); } return -1; } int_fast8_t NatSet::arrayContains(value_type i) const { int w = getWordNr(i); Assert(w > 0, "bad wordNr " << w); // we don't deal with first word here if (w > array.length()) return false; return (array[w - 1] >> getShift(i)) & 1; } void NatSet::insert(value_type i) { Assert(i >= 0, "-ve argument"); if (i < BITS_PER_WORD) firstWord |= getMaskSmall(i); else { int w = getWordNr(i); Word mask = getMask(i); int len = array.length(); if (w > len) { array.expandTo(w); --w; for (int j = len; j < w; j++) array[j] = 0; array[w] = mask; } else array[w - 1] |= mask; } } void NatSet::insert(const NatSet& other) { firstWord |= other.firstWord; int len = array.length(); int len2 = other.array.length(); if (len2 > len) { array.expandTo(len2); for (int i = len; i < len2; i++) array[i] = other.array[i]; len2 = len; } for (int i = 0; i < len2; i++) array[i] |= other.array[i]; } void NatSet::subtract(value_type i) { Assert(i >= 0, "-ve argument"); if (i < BITS_PER_WORD) firstWord &= ~(getMaskSmall(i)); else { int w = getWordNr(i); int t = array.length() - w; if (t >= 0) { array[w - 1] &= ~(getMask(i)); if (t == 0) { while (w > 0 && array[w - 1] == 0) --w; array.contractTo(w); } } } } void NatSet::subtract(const NatSet& other) { firstWord &= ~(other.firstWord); int i = other.array.length(); int len = array.length(); if (len <= i) { for (i = len - 1; i >= 0; i--) { Word t = array[i] & ~(other.array[i]); array[i] = t; if (t != 0) break; } ++i; array.contractTo(i); } for (i--; i >= 0; i--) array[i] &= ~(other.array[i]); } void NatSet::intersect(const NatSet& other) { firstWord &= other.firstWord; int i = ::min(array.length(), other.array.length()) - 1; for (; i >= 0; i--) { Word t = array[i] & other.array[i]; array[i] = t; if (t != 0) break; } array.contractTo(i + 1); for (; i >= 0; i--) array[i] &= other.array[i]; } bool NatSet::contains(const NatSet& other) const { if ((firstWord | other.firstWord) != firstWord) return false; int len2 = other.array.length(); if (len2 > array.length()) return false; for (int i = 0; i < len2; i++) { Word t = array[i]; if ((t | other.array[i]) != t) return false; } return true; } bool NatSet::disjoint(const NatSet& other) const { if ((firstWord & other.firstWord) != 0) return false; int m = ::min(array.length(), other.array.length()); for (int i = 0; i < m; i++) { if ((array[i] & other.array[i]) != 0) return false; } return true; } NatSet::size_type NatSet::size() const { int c = countBits(firstWord); int len = array.length(); for (int i = 0; i < len; i++) c += countBits(array[i]); return c; } bool NatSet::operator==(const NatSet& other) const { if (firstWord != other.firstWord) return false; int len = array.length(); if (len != other.array.length()) return false; for (int i = 0; i < len; i++) { if (array[i] != other.array[i]) return false; } return true; } bool NatSet::operator<(const NatSet& other) const { int len = array.length(); int d = len - other.array.length(); if (d != 0) return d < 0; if (firstWord != other.firstWord) return firstWord < other.firstWord; for (int i = 0; i < len; i++) { Word a = array[i]; Word b = other.array[i]; if (a != b) return a < b; } return false; } // // NatSet::iterator // NatSet::iterator& NatSet::iterator::operator++() { Assert(element != -1, "bad increment"); int w = getWordNr(element); Word word = (w == 0) ? natSet->firstWord : natSet->array[w - 1]; Word mask = getMask(element); for (mask <<= 1, element++; mask != 0; mask <<= 1, element++) { if (word & mask) return *this; } element = natSet->arrayMin(w); return *this; } ostream& operator<<(ostream& s, const NatSet& natSet) { s << '{'; const NatSet::const_iterator b = natSet.begin(); const NatSet::const_iterator e = natSet.end(); for (NatSet::const_iterator i = b; i != e; ++i) { if (i != b) s << ", "; s << *i; } s << '}'; return s; } Maude-Maude3.5.1/src/Utility/mpzSystem.hh0000664000175000017510000000775215036121435017661 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2005 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class to solve Diophantine systems associated with AC and ACU unification, using // multiple precision integers. // #include #include "gmpxx.h" #include "natSet.hh" #ifndef _mpzSystem_hh_ #define _mpzSystem_hh_ class MpzSystem { public: typedef Vector IntVec; void insertEqn(const IntVec& eqn); void setUpperBounds(const IntVec& bounds); // pass NONE in place of UNBOUNDED bool findNextMinimalSolution(IntVec& solution); bool findNextMinimalSolutionGcd(IntVec& solution); private: // // Common data types, functions and data. // typedef list VecList; static bool greaterEqual(const IntVec& arg1, const IntVec& arg2); bool minimal(const IntVec& arg); void initializeUpperBounds(); #ifndef NO_ASSERT void dumpEqns(); #endif int nrVariables; VecList eqns; // Diophantine system IntVec upperBounds; // upper bounds for each variable, NONE means unbounded VecList solutions; // minimal solutions found so far // // Contejean-Devie specific stuff. // struct State { IntVec assignment; // current assignment to each variable IntVec residue; // residue for each equation NatSet frozen; // indicies of variables that can no longer be incremented }; typedef Vector StateStack; static bool isZero(const IntVec& arg); void initialize(); mpz_class scalerProduct(const IntVec& arg, int columnNr); StateStack states; // stack of search tree states int stackPointer; State current; // pre-allocated temporary storage // // Gcd based solver specific stuff. // struct StackEntry { mpz_class inc; mpz_class bound; }; static bool findConcensus(const mpz_class& a, const mpz_class& b, const mpz_class& u, const mpz_class& c, const mpz_class& d, const mpz_class& v, mpz_class& e, mpz_class& f, mpz_class& w); static bool solveTwoVariableProblem(mpz_class a, mpz_class b, mpz_class c, bool y_nonneg, const mpz_class& x_bound, const mpz_class& y_bound, mpz_class& x_base, mpz_class& y_base, mpz_class& x_inc, mpz_class& y_inc, mpz_class& bound); void swapVariables(int u, int v); void integerGaussianElimination(); void initializeGcd(); mpz_class computeSumBound(); void updateResidues(int varNr, const mpz_class& delta); bool nextSolution(bool first); bool fillOutStackEntry(int varNr); bool fillOutLastEntry(); bool solveDiagonal(); int nrFreeVariables; // free variables are those not on the diagonal Vector stack; // stack for backtracking IntVec solution; // current partial solution IntVec residues; // residue for each equation with the current partial solution mpz_class sumBound; // bound on sum of components for a minimal solution mpz_class leftOver; // part of sumBound not used by current partial solution VecList gcds; Vector permutation; // for full pivoting Vector lastPrediagNeg; // index last prediagonal -ve entry in each equation int firstPrunablePrediag; // prediagonal greater or equal to this can take one of at most 2 values }; #endif Maude-Maude3.5.1/src/Utility/mpzSystem.cc0000664000175000017510000000474115036121435017642 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class MpzSystem. // #include "macros.hh" #include "vector.hh" #include "mpzSystem.hh" // analysis options #define ANALYZE_GCD 0 //#define TRACE(s) (std::cout << s << endl) #define TRACE(s) // our stuff #include "mpzContejeanDevie.cc" #include "mpzGcdInit.cc" #include "mpzGcdTrivial.cc" #include "mpzGcdBasedSolver.cc" void MpzSystem::insertEqn(const IntVec& eqn) { Assert(!eqn.empty(), "empty eqn"); if (eqns.empty()) nrVariables = eqn.size(); else Assert(nrVariables == static_cast(eqn.size()), "eqn size differs: " << nrVariables << " vs " << eqn.size()); eqns.push_back(eqn); // deep copy } void MpzSystem::setUpperBounds(const IntVec& bounds) { upperBounds = bounds; // deep copy } void MpzSystem::initializeUpperBounds() { if (upperBounds.empty()) { upperBounds.resize(nrVariables); for (mpz_class& i : upperBounds) i = NONE; } else Assert(nrVariables == static_cast(upperBounds.size()), "row size differs"); } bool MpzSystem::greaterEqual(const IntVec& arg1, const IntVec& arg2) { IntVec::const_iterator j = arg2.begin(); for (const mpz_class& i : arg1) { if (i < *j) return false; ++j; } return true; } bool MpzSystem::minimal(const IntVec& arg) { // // A vector is minimal if it is not greater or equal to an existing solution. // for (const IntVec& v : solutions) { if (greaterEqual(arg, v)) return false; } return true; } #ifndef NO_ASSERT void MpzSystem::dumpEqns() { for (const IntVec& v : eqns) { for (const mpz_class& j : v) cout << j << '\t'; cout << endl; } cout << endl; } #endif Maude-Maude3.5.1/src/Utility/mpzGcdTrivial.cc0000664000175000017510000001343215036121435020403 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2005 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Easy subcases for gcd based solver. // bool MpzSystem::findConcensus(const mpz_class& a, const mpz_class& b, const mpz_class& u, const mpz_class& c, const mpz_class& d, const mpz_class& v, mpz_class& e, mpz_class& f, mpz_class& w) { // // Given two general solutions for x: // x = a + ib for i = 0,..., u // x = c + jd for j = 0,..., v // compute a concensus solution: // x = e + kf for k = 0,..., w // Any of u, v and w may be -1 to indicate unbounded. // Assume b != 0 and d != 0. // Assert(b != 0, "b zero"); Assert(d != 0, "d zero"); mpz_class i_base; mpz_class i_inc; mpz_class j_base; mpz_class j_inc; if (solveTwoVariableProblem(b, -d, c - a, true, u, v, i_base, j_base, i_inc, j_inc, w)) { e = a + i_base * b; f = i_inc * b; Assert(e == c + j_base * d, "base conflict " << e << " vs " << c + j_base * d); Assert(f == j_inc * d, "inc conflict"); return true; } return false; } bool MpzSystem::solveTwoVariableProblem(mpz_class a, mpz_class b, mpz_class c, bool y_nonneg, const mpz_class& x_bound, const mpz_class& y_bound, mpz_class& x_base, mpz_class& y_base, mpz_class& x_inc, mpz_class& y_inc, mpz_class& bound) { //PRINT(a); PRINT(b); PRINT(c); PRINT(y_nonneg); PRINT(x_bound); PRINT_NL(y_bound); // // For integers a, b, c with a != 0 and b != 0, generate the set of solutions to // ax + by = c // where x is nonnegative and bounded by x_bound (>= 0, -1 indicates unbounded) // and y is nonnegaive if y_nonneg flag set and bounded by y_bound (>= 0, -1 indicates unbounded) // encoded as (x_base, y_base) + k (x_inc, y_inc) for // k = 0, 1,..., bound // where bound may be -1 to represent unbounded. // Assert(a != 0, "a zero"); Assert(b != 0, "b zero"); if (b < 0) { a = -a; b = -b; c = -c; } bool neg_slope = true; bool neg_a = false; if (a < 0) { a = -a; neg_a = true; neg_slope = false; } { mpz_class g; mpz_class u; mpz_class v; mpz_gcdext(g.get_mpz_t(), u.get_mpz_t(), v.get_mpz_t(), a.get_mpz_t(), b.get_mpz_t()); //PRINT(neg_slope); PRINT(a); PRINT(b); PRINT(g); PRINT(u); PRINT_NL(v); if (!mpz_divisible_p(c.get_mpz_t(), g.get_mpz_t())) return false; // c not in the additive group generated by a and b mpz_class cs; mpz_divexact(cs.get_mpz_t(), c.get_mpz_t(), g.get_mpz_t()); mpz_divexact(x_inc.get_mpz_t(), b.get_mpz_t(), g.get_mpz_t()); mpz_divexact(y_inc.get_mpz_t(), a.get_mpz_t(), g.get_mpz_t()); if (neg_slope) y_inc = -y_inc; if (neg_a) u = -u; x_base = u * cs; y_base = v * cs; //PRINT(cs); PRINT(x_base); PRINT_NL(y_base); } // // We now have a general solution over the integers; we need to clip it // to respect nonnegativity and upper bounds. // // t = least k such that x_base + k * x_inc >= 0; // mpz_class t; mpz_class m_x_base = -x_base; mpz_cdiv_q(t.get_mpz_t(), m_x_base.get_mpz_t(), x_inc.get_mpz_t()); if (!neg_slope) { if (y_nonneg) { // // y_k = least k such that y_base + k * y_inc >= 0 // mpz_class y_k; mpz_class m_y_base = -y_base; mpz_cdiv_q(y_k.get_mpz_t(), m_y_base.get_mpz_t(), y_inc.get_mpz_t()); if (y_k > t) t = y_k; } x_base += t * x_inc; y_base += t * y_inc; bound = -1; if (x_bound >= 0) { // // bound = greatest k such that x_base + k * x_inc <= x_bound // mpz_class x_diff = x_bound - x_base; mpz_fdiv_q(bound.get_mpz_t(), x_diff.get_mpz_t(), x_inc.get_mpz_t()); if (bound < 0) return false; } if (y_bound >= 0) { // // y_k = greatest k such that y_base + k * y_inc <= y_bound // mpz_class y_k; mpz_class y_diff = y_bound - y_base; mpz_fdiv_q(y_k.get_mpz_t(), y_diff.get_mpz_t(), y_inc.get_mpz_t()); if (y_k < 0) return false; if (bound == -1 || y_k < bound) bound = y_k; } } else { if (y_bound >= 0) { // // y_k = least k such that y_base + k * y_inc <= y_bound // mpz_class y_k; mpz_class y_diff = y_bound - y_base; mpz_cdiv_q(y_k.get_mpz_t(), y_diff.get_mpz_t(), y_inc.get_mpz_t()); if (y_k > t) t = y_k; } x_base += t * x_inc; y_base += t * y_inc; bound = -1; if (x_bound >= 0) { // // bound = greatest k such that x_base + k * x_inc <= x_bound // mpz_class x_diff = x_bound - x_base; mpz_fdiv_q(bound.get_mpz_t(), x_diff.get_mpz_t(), x_inc.get_mpz_t()); if (bound < 0) return false; } if (y_nonneg) { // // y_k = greatest k such that y_base + k * y_inc >= 0 // mpz_class y_k; mpz_class m_y_base = -y_base; mpz_fdiv_q(y_k.get_mpz_t(), m_y_base.get_mpz_t(), y_inc.get_mpz_t()); if (y_k < 0) return false; if (bound == -1 || y_k < bound) bound = y_k; } } //PRINT(x_base); PRINT(y_base); PRINT(x_inc); PRINT(y_inc); PRINT_NL(bound); return true; } Maude-Maude3.5.1/src/Utility/mpzGcdInit.cc0000664000175000017510000001701115036121435017671 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Initialization code for gcd based solver. // void MpzSystem::swapVariables(int u, int v) { for (IntVec& iv : eqns) swap(iv[u], iv[v]); swap(upperBounds[u], upperBounds[v]); swap(permutation[u], permutation[v]); } void MpzSystem::integerGaussianElimination() { #if !defined(NO_ASSERT) && ANALYZE_GCD dumpEqns(); #endif // // Diagonalize the rhs as much as possible. // int varNr = nrVariables - 1; const VecList::iterator e = eqns.end(); for (VecList::iterator i = eqns.begin(); varNr >= 0 && i != e;) { const mpz_class& diag = (*i)[varNr]; if (diag == 0) { // // Permute variables to get a nonzero diagonal element. // for (int j = varNr - 1; j >= 0; --j) { if ((*i)[j] != 0) { swapVariables(varNr, j); goto eliminate; } } // // Delete an all zero equation. // i = eqns.erase(i); DebugAdvisory("deleted all zero equation"); continue; } // // Eliminate variable varNr from all equations other than ith. // eliminate: int diagVar = nrVariables - 1; for (VecList::iterator j = eqns.begin(); j != e; ++j, --diagVar) { if (i != j) { mpz_class& entry = (*j)[varNr]; if (entry != 0) { mpz_class g; mpz_gcd(g.get_mpz_t(), diag.get_mpz_t(), entry.get_mpz_t()); mpz_class d_mult = entry / g; mpz_class e_mult = diag / g; for (int k = varNr; k >= 0; --k) (*j)[k] = e_mult * (*j)[k] - d_mult * (*i)[k]; if (diagVar > varNr) (*j)[diagVar] *= e_mult; entry = 0; } } } --varNr; ++i; #if !defined(NO_ASSERT) && ANALYZE_GCD dumpEqns(); #endif } // // Make diagonal +ve. // varNr = nrVariables - 1; int nrEquations = eqns.size(); nrFreeVariables = nrVariables - nrEquations; for (VecList::iterator i = eqns.begin(); varNr >= 0 && i != e; ++i, --varNr) { mpz_class& diag = (*i)[varNr]; Assert(diag != 0, "zero diagonal element"); if (diag < 0) { diag = -diag; for (int j = 0; j < nrFreeVariables; j++) (*i)[j] = -(*i)[j]; // probably a faster way to do this } } #if !defined(NO_ASSERT) && ANALYZE_GCD dumpEqns(); #endif } mpz_class MpzSystem::computeSumBound() { // // Compute a bound on the sum of components for any minimal solution. // This bound is taken from: // L. Pottier, // "Minimal solutions of linear diophantine systems: bound and algorithms", // Proceedings of RTA '91, pages 162-173. // mpz_class bound = 1; for (const IntVec& v : eqns) { mpz_class sum = 1; for (const mpz_class& j : v) sum += abs(j); bound *= sum; } return bound; } void MpzSystem::initializeGcd() { Assert(!eqns.empty(), "no equations"); initializeUpperBounds(); sumBound = computeSumBound(); #if ANALYZE_GCD DebugPrintNL(sumBound); #endif // // Initialize permutation vector and perform Gaussian elimination. // permutation.resize(nrVariables); for (int i = 0; i < nrVariables; ++i) permutation[i] = i; integerGaussianElimination(); // // See if we have a better sum bound now. // mpz_class newBound = computeSumBound(); #if ANALYZE_GCD DebugPrintNL(newBound); #endif if (newBound < sumBound) sumBound = newBound; // // Generate gcd table and divide out any common factors an equation might have. // Also find that last negative coefficient for each equation. // int nrEquations = nrVariables - nrFreeVariables; lastPrediagNeg.resize(nrEquations); { int varNr = nrVariables - 1; int nrGcds = nrFreeVariables - 1; int eqnNr = 0; for (IntVec& iv : eqns) { gcds.push_back(IntVec()); if (nrGcds > 0) { IntVec& v = gcds.back(); v.resize(nrGcds); mpz_gcd(v[nrGcds - 1].get_mpz_t(), iv[nrGcds].get_mpz_t(), iv[varNr].get_mpz_t()); for (int j = nrGcds - 1; j > 0; --j) mpz_gcd(v[j - 1].get_mpz_t(), iv[j].get_mpz_t(), v[j].get_mpz_t()); mpz_class final; mpz_gcd(final.get_mpz_t(), iv[0].get_mpz_t(), v[0].get_mpz_t()); if (final > 1) { DebugAdvisory("dividing equation by " << final); for (int j = 0; j < nrVariables; ++j) iv[j] /= final; for (int j = nrGcds - 1; j >= 0; --j) v[j] /= final; } #if ANALYZE_GCD for (const mpz_class& j : v) cout << j << '\t'; cout << endl; #endif } for (int j = nrGcds; j >= 0; --j) { if (iv[j] < 0) { lastPrediagNeg[eqnNr] = j; goto ok; } } DebugAdvisory("all positive equation " << eqnNr); lastPrediagNeg[eqnNr] = NONE; ok: --varNr; ++eqnNr; } } { // // Determine which variables before the diagonal have limited choices. // // A prediagonal variable is prunable if // (1) All equations that have a nonzero coefficient for it // (a) have -ve coefficient for it; and // (b) have it as their last prediagonal variable with a nonzero coefficient // (2) All following prediagonal variable are prunable // // Intuitively we don't need to seach for larger values for a prunable variable // since any further solutions found will be non-minimal. However we need to // avoid the case where the first solution yields the trivial (all zero) solution // to the system. // firstPrunablePrediag = nrVariables; // assume no prunable prediagonal variables NatSet used; for (int i = nrFreeVariables - 1; i >= 0; i--) { int eqnNr = 0; for (const IntVec& v : eqns) { if (v[i] > 0) goto done; if (v[i] < 0) { if (used.contains(eqnNr)) goto done; used.insert(eqnNr); } ++eqnNr; } firstPrunablePrediag = i; } done: ; #if ANALYZE_GCD DebugPrintNL(firstPrunablePrediag); #endif } // // Initialize residue storage. // { residues.resize(nrEquations); const IntVec::iterator e = residues.end(); for (IntVec::iterator i = residues.begin(); i != e; ++i) *i = 0; } // // Initialize solution storage // { solution.resize(nrVariables); const IntVec::iterator e = solution.end(); for (IntVec::iterator i = solution.begin(); i != e; ++i) *i = 0; } // // The freeVariables constitute the search space and need stack entries. // stack.resize(nrFreeVariables); // // Termination is assured by a bound on the sum of a minimal solutions components. // leftOver = sumBound; } Maude-Maude3.5.1/src/Utility/mpzGcdBasedSolver.cc0000664000175000017510000002430515036121435021203 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Solver based on repeated use of the extended gcd calculation, with // an integer gaussian elimination preprocessing step. // void MpzSystem::updateResidues(int varNr, const mpz_class& delta) { int eqnNr = 0; for (const IntVec& v : eqns) { residues[eqnNr] += v[varNr] * delta; ++eqnNr; } } bool MpzSystem::findNextMinimalSolutionGcd(IntVec& sol) { bool first = false; if (permutation.empty()) { initializeGcd(); first = true; } if (nextSolution(first)) { // // Need to permute solution into original variable order. // solution.resize(nrVariables); for (int i = 0; i < nrVariables; ++i) sol[permutation[i]] = solution[i]; return true; } return false; } // Iterative GCD method. bool MpzSystem::nextSolution(bool first) { int sp; if (first) { sp = 0; forwards: for (; sp < nrFreeVariables; ++sp) { if (!((sp == nrFreeVariables - 1) ? fillOutLastEntry() : fillOutStackEntry(sp))) goto backwards; } if (solveDiagonal()) return true; goto backwards; } else { sp = nrFreeVariables; backwards: while (--sp >= 0) { StackEntry& st = stack[sp]; if (solution[sp] < st.bound) { // // Update leftover, residues and solution. // leftOver -= st.inc; updateResidues(sp, st.inc); solution[sp] += st.inc; ++sp; goto forwards; } leftOver += solution[sp]; updateResidues(sp, - solution[sp]); solution[sp]= 0; } } return false; } bool MpzSystem::fillOutStackEntry(int varNr) { TRACE(" solving x" << varNr); // // Default values for if we encounter an all zero coefficient variable. // mpz_class base = 0; mpz_class inc = 1; mpz_class bound = 1; mpz_class u = upperBounds[varNr]; if (u < 0 || leftOver < u) u = leftOver; // // Find a concensus solution for variable. // bool first = true; int row = 0; VecList::const_iterator j = gcds.begin(); for (const IntVec& v : eqns) { const mpz_class& a = v[varNr]; if (a != 0) { const mpz_class& residue = residues[row]; const mpz_class& g = (*j)[varNr]; mpz_class x_base; mpz_class y_base; mpz_class x_inc; mpz_class y_inc; mpz_class k_bound; Assert(g != 0, "zero gcd"); // // The idea is that if the current variable is X, // aX + (...) = -residue // but we know that all the coefficient in (...) are divisable // by g so we abstract them as gY and solve a two variable problem. // If a is the last -ve coefficient in our equation we know that Y // will be non-negative since it abtracts a sum of products where // everything (variables and divided coefficients) is non-negative. // if (!solveTwoVariableProblem(a, g, -residue, varNr == lastPrediagNeg[row], u, NONE, x_base, y_base, x_inc, y_inc, k_bound)) { TRACE("no solution"); return false; } TRACE("x" << varNr << " = " << x_base << " + " << x_inc << "k for k = 0,..., " << k_bound); if (first) { base = x_base; inc = x_inc; bound = k_bound; first = false; } else { // // If we already have a set of values to search for variable // we must compute a consensus (intersection). // mpz_class c_base; mpz_class c_inc; mpz_class c_bound; if (findConcensus(base, inc, bound, x_base, x_inc, k_bound, c_base, c_inc, c_bound)) { base = c_base; inc = c_inc; bound = c_bound; TRACE("concensus: x" << varNr << " = " << c_base << " + " << c_inc << "k for k = 0,..., " << c_bound); } else { TRACE("no concensus"); return false; } } } else { // // Since coefficient is zero in this equation it provides us with no // constraint on variable. // TRACE("no info"); } ++j; ++row; } // // Correct bound for zero inc, prunable variable and zero so far situations. // // If the increment is 0, we set the bound to 0. // If our variable is prunable, we can also set the bound to 0, // since any increments will produce a nonminimal solution; except if // all the variables in our current assignment are zero and the base is also // zero, in which case we set the bound to 1. // StackEntry& st = stack[varNr]; if (inc == 0) bound = 0; else { if (varNr >= firstPrunablePrediag) { bound = 0; if (leftOver == sumBound && base == 0) bound = 1; } } TRACE("corrected: x" << varNr << " = " << base << " + " << inc << "k for k = 0,..., " << bound); // // Set up stack entry and give variable it's first value; // update leftOver and residues. // st.inc = inc; st.bound = base + bound * inc; if (base != 0) { leftOver -= base; updateResidues(varNr, base); solution[varNr] = base; } return true; } bool MpzSystem::fillOutLastEntry() { TRACE("solving prediagonal"); // // We solve each equation for the last prediagonal variable // and its diagonal variable and try to find a consensus on the // last prediagonal variable. // int prediag = nrFreeVariables - 1; // // Default values for if we encounter an all zero coefficient variable. // mpz_class base = 0; mpz_class inc = 1; mpz_class bound = 1; mpz_class u = upperBounds[prediag]; if (u < 0 || leftOver < u) u = leftOver; // // Find a concensus solution for last prediagonal variable. // bool first = true; int row = 0; for (const IntVec& v : eqns) { const mpz_class& residue = residues[row]; ++row; const mpz_class& a = v[prediag]; int diag = nrVariables - row; const mpz_class& b = v[diag]; if (a != 0) { mpz_class x_base; mpz_class y_base; mpz_class x_inc; mpz_class y_inc; mpz_class k_bound; Assert(b != 0, "zero diag"); mpz_class u2 = upperBounds[diag]; if (u2 < 0 || leftOver < u2) u2 = leftOver; if (!solveTwoVariableProblem(a, b, -residue, true, u, u2, x_base, y_base, x_inc, y_inc, k_bound)) { TRACE("no solution"); return false; } TRACE("x = " << x_base << " + " << x_inc << "k for k = 0,..., " << k_bound); if (first) { base = x_base; inc = x_inc; bound = k_bound; first = false; } else { mpz_class c_base; mpz_class c_inc; mpz_class c_bound; if (findConcensus(base, inc, bound, x_base, x_inc, k_bound, c_base, c_inc, c_bound)) { base = c_base; inc = c_inc; bound = c_bound; TRACE("concensus: x = " << c_base << " + " << c_inc << "k for k = 0,..., " << c_bound); } else { TRACE("no concensus"); return false; } } } else { // // Since coefficient is zero in this equation it provides us with no // constraint on variable. // TRACE("no info"); } } // // Correct start bound for zero inc, prunable variable and zero so far situations. // StackEntry& st = stack[prediag]; mpz_class start = 0; if (leftOver == sumBound && base == 0) { // Current variables are all 0, as is our base. Thus if we set start // to 0, solving the diagonal would lead to the trivial solution. // if (bound == 0) return false; start = 1; } if (prediag >= firstPrunablePrediag) bound = start; // only first solution can be minimal // // Set up stack entry and give variable it's first value; // update leftOver, residues // st.inc = inc; st.bound = base + bound * inc; solution[prediag] = base + start * inc; if (solution[prediag] != 0) { leftOver -= solution[prediag]; updateResidues(prediag, solution[prediag]); } return true; } bool MpzSystem::solveDiagonal() { // // For each variable on the diagonal we compute its value by // dividing the (negated) residue of the one equation in which // it has a nonzero coefficient by that coefficient. // We will always get a valid solution however it can fail to // be minimal; it can also fail to be nontrivial // bool allZero = true; { int eqnNr = 0; int varNr = nrVariables; for (const IntVec& v : eqns) { --varNr; mpz_class q; mpz_class r; mpz_class res = - residues[eqnNr]; mpz_fdiv_qr(q.get_mpz_t(), r.get_mpz_t(), res.get_mpz_t(), v[varNr].get_mpz_t()); Assert(r == 0, "divisability error " << res << ' ' << v[varNr]); Assert(upperBounds[varNr] < 0 || q <= upperBounds[varNr], "bounds error" << upperBounds[varNr] << ' ' << q); Assert(q >= 0, "sign error " << q); if (q != 0) allZero = false; solution[varNr] = q; ++eqnNr; } } if (allZero && leftOver == sumBound) return false; // trivial solution if (minimal(solution)) { #if ANALYZE_GCD cout << "*** Solution " << solutions.size() + 1 << " ***\n"; for (const mpz_class& j : solution) cout << j << '\t'; cout << endl; #endif solutions.push_back(solution); if (allZero) { // // Diagonal variables were all zero; hence we can terminate // some of the search ranges because they cannnot produce a // solution not subsumed by current one. This optimization // is critical for pruning after finding a solution like: // (1 0 0 0 ... 0) // for (int i = nrFreeVariables - 1; i >= 0; --i) { stack[i].bound = solution[i]; if (solution[i] != 0) break; } } return true; } return false; } Maude-Maude3.5.1/src/Utility/mpzContejeanDevie.cc0000664000175000017510000001500015036121435021227 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Solver based on: // Evelyn Contejean and Herve Devie, // "An efficient incremental algorithm for solving systems of linear diophantine equations", // Information and Computation 113, pages 143-172, 1994. // // We use the non-incremental version of their algorithm with the >q ordering. // bool MpzSystem::isZero(const IntVec& arg) { for (const mpz_class& i : arg) { if (i != 0) return false; } return true; } mpz_class MpzSystem::scalerProduct(const IntVec& arg, int varNr) { // // Compute the scalar product between a vector and a column through // the equations corresponding to a variable. // Assert(arg.size() == eqns.size(), "size clash"); mpz_class sum = 0; IntVec::const_iterator j = arg.begin(); for (const IntVec& v : eqns) { sum += v[varNr] * *j; ++j; } return sum; } void MpzSystem::initialize() { initializeUpperBounds(); states.resize(nrVariables); NatSet frozen; int nrEquations = eqns.size(); for (int i = 0; i < nrVariables; ++i) { State& s = states[i]; { s.assignment.resize(nrVariables); for (mpz_class& j : s.assignment) j = 0; s.assignment[i] = 1; } { s.residue.resize(nrEquations); IntVec::iterator k = s.residue.begin(); for (const IntVec& v : eqns) { *k = v[i]; ++k; } } Assert(upperBounds[i] == NONE || upperBounds[i] > 0, "upper bound <= 0"); // // We maintain the invariant that any variable that has reached its // upper bound is frozen. // if (upperBounds[i] == 1) frozen.insert(i); s.frozen = frozen; frozen.insert(i); } current.residue.resize(nrEquations); stackPointer = nrVariables; } bool MpzSystem::findNextMinimalSolution(IntVec& solution) { if (states.isNull()) initialize(); while (stackPointer > 0) { --stackPointer; State& s = states[stackPointer]; if (isZero(s.residue)) { solutions.push_back(s.assignment); solution = s.assignment; return true; } else { // // Check that each equation has a non-frozen coefficient left that will move its // residue in the right direction. Also see if we have forced assignments to a variable. // retry: IntVec::const_iterator res = s.residue.begin(); for (const IntVec& v : eqns) { const mpz_class& d = *res; ++res; bool ok = (d == 0); int nfnzCount = 0; int lastNfnz = NONE; for (int i = 0; i < nrVariables; ++i) { if (!(s.frozen.contains(i))) { const mpz_class& c = v[i]; if (c != 0) { ++nfnzCount; lastNfnz = i; ok = ok || (d * c < 0); } } } if (!ok) goto skip; if (nfnzCount == 1) { // // Equation j has only a single nonzero, non-frozen coefficent left. // If residue is 0 we can freeze it; if residue is nonzero, it must // move us in the right direction and we have a forced assignment (or // faliure) for the corresponding variable. // if (d == 0) { //cout << "freezing " << lastNfnz << endl; s.frozen.insert(lastNfnz); goto retry; } // // We can force variable j. // //cout << "one var " << lastNfnz << endl; const mpz_class& c = v[lastNfnz]; if (d % c == 0) { mpz_class delta = -d / c; //cout << "div ok delta = " << delta << endl; Assert(delta > 0, "delta = " << delta); s.assignment[lastNfnz] += delta; if ((upperBounds[lastNfnz] == NONE || s.assignment[lastNfnz] <= upperBounds[lastNfnz]) && minimal(s.assignment)) { // // Assignment produced a new state that satisfies upper bounds // and is minimal so it replaces the old state. // IntVec::iterator res2 = s.residue.begin(); for (const IntVec& k : eqns) { *res2 += delta * k[lastNfnz]; ++res2; } //cout << "forced " << lastNfnz << " by " << delta << endl; s.frozen.insert(lastNfnz); ++stackPointer; // // Now redo from start since new state might be a solution. // } } goto skip; } } // // State survived initial checks so expand it out by incrementing its // non-frozen variables. We first save the old state in current. // current.assignment.swap(s.assignment); current.residue.swap(s.residue); current.frozen.swap(s.frozen); // // Now for each non-frozen variable that moves the solution in the right direction, // try to form a new state by incrementing it. // for (int i = 0; i < nrVariables; ++i) { if (!(current.frozen.contains(i)) && scalerProduct(current.residue, i) < 0) { mpz_class& component = current.assignment[i]; ++component; if (minimal(current.assignment)) { // // If we are still minimal, stack the new state. // State& n = states[stackPointer]; n.assignment = current.assignment; n.residue = current.residue; IntVec::const_iterator from = current.residue.begin(); IntVec::iterator to = n.residue.begin(); for (const IntVec& v : eqns) { *to = *from + v[i]; ++from; ++to; } // // We maintain the invariant that any variable that has reached its // upper bound is frozen. // if (component == upperBounds[i]) // component will never be NONE current.frozen.insert(i); n.frozen = current.frozen; ++stackPointer; } --component; current.frozen.insert(i); // freeze variable in remaining decendents whether minimal or not } } } skip: ; } return false; } Maude-Maude3.5.1/src/Utility/mathStuff.hh0000664000175000017510000000220015036121435017566 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Put the math inclusion mess in a single place. // #ifndef _mathStuff_hh_ #define _mathStuff_hh_ #include #if HAVE_IEEEFP_H #include #endif // // Darwin fix from Fabricio Chalub // #if defined(DARWIN) && !defined(isnan) extern "C" int isnan(double); #endif #endif Maude-Maude3.5.1/src/Utility/macros.hh0000664000175000017510000002602015036121435017117 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2024 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Macros, typedefs, enums and includes. // #ifndef _macros_hh_ #define _macros_hh_ // // #defines created by configure. // #if HAVE_CONFIG_H #include #endif // // C stuff. // #include #include #include #include #include #if HAVE_UNISTD_H #include // needed by solaris #endif // // C++ stuff. // #include #include #include #include #include #include #include #include using namespace std; // // Forward declarations for utility classes. // class NatSet; class Graph; class Digraph; class UnionFind; class DiophantineSystem; class SequencePartition; class StringTable; class SymbolTable; class PointerMap; class PointerSet; class BddUser; class Bdd; class Tty; class Timer; class FlagSet; class AllSat; class IntSet; class Indent; class MpzSystem; class IntSystem; class Rope; // // Type for indexing arrays and vectors. // // We want to use a signed type to avoid subtle errors caused by unsigned underflow // such as testing i >= 0 in a loop iterating backwards through a vector. // https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es107-dont-use-unsigned-for-subscripts-prefer-gslindex // ES.107: Don’t use unsigned for subscripts, prefer gsl::index // We want to avoid 32-bit ints on a 64-bit architectures since we don't want to pay for sign-extension in loops. // typedef ptrdiff_t Index; // // Types for storage efficiency. // typedef signed char Byte; typedef unsigned char Ubyte; // // 64 bit arithmetic; since it's now practical to deal with quantities // of rewrites/matchers/unifiers etc that overflow 32 bits. // #ifdef INT64_MAX #undef INT64_MAX #endif #ifdef INT64_MIN #undef INT64_MIN #endif #if SIZEOF_LONG == 8 typedef long Int64; #define INT64_MAX (9223372036854775807L) #else typedef long long int Int64; #define INT64_MAX (9223372036854775807LL) #endif #define INT64_MIN (-INT64_MAX-1) #define INT64_MIN_STRING "-9223372036854775808" // // floating point // // This is the largest integer such that all integers in the range // -INT_DOUBLE_MAX, ..., INT_DOUBLE_MAX // can be represented exactly. // #define INT_DOUBLE_MAX (1LL << 53) // // Macro to forbid default copy ctor and assignment operator // #define NO_COPYING(c) \ c(const c&) = delete; \ c& operator=(const c&) = delete // // Casting which is checked if debugging and fast otherwise. // #ifndef NO_ASSERT // // This is good for all pointers including null pointers. // #define safeCast(T, P) \ ((P != 0 && dynamic_cast(P) == 0) ? \ ((cerr << "cast error: "<< __FILE__ << ':' << __LINE__ << '\n'), abort(), static_cast(0)) : \ static_cast(P)) #else #define safeCast(T, P) static_cast(P) #endif template inline T safeCastNonNull(P p) { #ifndef NO_ASSERT if (dynamic_cast(p) == 0) { cerr << "unexpected null or cast error: "<< __FILE__ << ':' << __LINE__ << '\n'; abort(); } #endif return static_cast(p); } enum SpecialConstants { NR_PTR_LOSE_BITS = 3, // number of rhs bits to chop when hashing a pointer WORD_SIZE = 32, // bits per machine word LOG_WORD_SIZE = 5, // log_2 (WORD_SIZE) UNBOUNDED = INT_MAX, // integer used as stand-in for +infinity INT_TEXT_SIZE = 11, // max chars for text representation of an int (INT_MIN) INT64_TEXT_SIZE = 20, // max chars for text representation of a 64 bit int (INT64_MIN) DOUBLE_TEXT_SIZE = 24, // max chars for text representation of a double in // in scientific format with 17 significant figures // -1.2345678901234567e-123 // // -1 get used for lots of "out-of-band" purposes. // UNDEFINED = -1, UNDECIDED = -1, // for true, false, don't know situations UNUSED = -1, NONE = -1, DEFAULT = -1, // // For bit twiddling; things will probably break if bytes are ever // longer or shorter than 8 bits. // BITS_PER_BYTE = 8, BITS_PER_INT = BITS_PER_BYTE * sizeof(int), BITS_PER_UINT = BITS_PER_BYTE * sizeof(unsigned int), // // GARBAGE is used where we want a value to store or pass as an argument and we don't // care about which value. For most CPUs, 0 is the easiest value to generate but // when debugging we want a value that sticks out like a raw thumb in case we mistakenly // try to use it for something. Note that GARBAGE should not be used as an out-of-band // value that we test against since in this case we _do_ care what value is used. // #ifdef NO_ASSERT GARBAGE = 0 #else GARBAGE = -333333333 #endif }; #ifdef NO_IMPLEMENT_INLINES //#define inline extern __inline__ #endif // // For functions local to a compilation unit that can be inlined // in that compilation unit and discarded. // #ifdef LOCAL_INLINES #ifdef __GNUC__ #define local_inline extern __inline__ #else #define local_inline inline #endif #else #define local_inline #endif #ifndef NO_ASSERT #define \ AlwaysAssert(condition, message) \ if (!(condition)) \ ((cerr << "ASSERT FAILED: " << \ __FILE__ << ':' << __LINE__ << '\n' << message << endl), \ abort()) #define \ Assert(condition, message) \ if (!(condition)) \ ((cerr << "ASSERT FAILED: " << \ __FILE__ << ':' << __LINE__ << '\n' << message << endl), \ abort()) #define \ CantHappen(message) \ ((cerr << "CAN'T HAPPEN: " << \ __FILE__ << ':' << __LINE__ << '\n' << message << endl), \ abort()) #define \ DebugAdvisoryCheck(condition, message) \ if (!(condition) && globalDebugFlag) \ ((cerr << Tty(Tty::BLUE) << "DEBUG ADVISORY: " << Tty(Tty::RESET) << message << endl)) #define \ DebugAdvisory(message) \ if (globalDebugFlag) \ (cerr << Tty(Tty::BLUE) << "DEBUG ADVISORY: " << Tty(Tty::RESET) << message << endl) #define \ DebugEnter(message) \ if (globalDebugFlag) \ (cerr << Tty(Tty::MAGENTA) << "DEBUG ENTER: " << __PRETTY_FUNCTION__ << ": " << Tty(Tty::RESET) << message << endl) #define \ DebugExit(message) \ if (globalDebugFlag) \ (cerr << Tty(Tty::CYAN) << "DEBUG EXIT: " << __PRETTY_FUNCTION__ << ": " << Tty(Tty::RESET) << message << endl) #define \ DebugInfo(message) \ if (globalDebugFlag) \ (cerr << Tty(Tty::BLUE) << "DEBUG INFO: " << __PRETTY_FUNCTION__ << ": " << Tty(Tty::RESET) << message << endl) // // Can't be turned off - for debugging temporary use only // #define \ DebugAlways(message) \ (cerr << Tty(Tty::RED) << "DEBUG ALWAYS: " << __PRETTY_FUNCTION__ << ": " << Tty(Tty::RESET) << message << endl) #define \ DebugNew(message) \ if (globalDebugFlag) \ (cerr << Tty(Tty::REVERSE) << "DEBUG NEW: " << __PRETTY_FUNCTION__ << ": " << Tty(Tty::RESET) << message << endl) #define \ DebugPrint(v) \ if (globalDebugFlag) \ (cerr << #v << " = " << v << '\t') #define \ DebugPrintNL(v) \ if (globalDebugFlag) \ (cerr << #v << " = " << v << '\n') // // Always evaluate e and save the result in new variable v only if needed for debug mode. // #define DebugSave(v, e) auto v = (e) #else #define \ AlwaysAssert(condition, message) \ if (!(condition)) \ ((cerr << "ASSERT FAILED: " << \ __FILE__ << ':' << __LINE__ << '\n' << message << endl), \ selfCheckFailHandler()) #define Assert(condition, message) #define CantHappen(message) #define DebugAdvisoryCheck(condition, message) #define DebugAdvisory(message) #define DebugEnter(message) #define DebugExit(message) #define DebugInfo(message) #define DebugAlways(message) #define DebugNew(message) #define DebugPrint(v) #define DebugPrintNL(v) // // Always evaluate e and save the result in new variable v only if needed for debug mode. // #define DebugSave(v, e) (void) (e) #endif // To quiten old debug messages instead of commenting them out #define DebugOld(message) #include "tty.hh" #define WARNING_HEADER Tty(Tty::RED) << "Warning: " << Tty(Tty::RESET) #define ADVISORY_HEADER Tty(Tty::GREEN) << "Advisory: " << Tty(Tty::RESET) #define BEGIN_QUOTE Tty(Tty::MAGENTA) #define END_QUOTE Tty(Tty::RESET) #define QUOTE(s) BEGIN_QUOTE << s << END_QUOTE #define \ WarningCheck(condition, message) \ if (!(condition)) \ (cerr << WARNING_HEADER << message << endl) #define \ AdvisoryCheck(condition, message) \ if (!(condition) && globalAdvisoryFlag) \ (cerr << ADVISORY_HEADER << message << endl) #define \ IssueWarning(message) \ (cerr << WARNING_HEADER << message << endl) #define \ ComplexWarning(message) \ (cerr << WARNING_HEADER << message) #define \ ContinueWarning(message) \ (cerr << message) #define \ IssueAdvisory(message) \ (globalAdvisoryFlag ? (cerr << ADVISORY_HEADER << message << endl) : cerr) #define \ Verbose(output) \ if (globalVerboseFlag) \ (cerr << Tty(Tty::CYAN) << output << Tty(Tty::RESET) << '\n') #ifdef PROFILING #define \ Profile(color, message) \ (cerr << Tty(Tty::color) << message << Tty(Tty::RESET)) #else #define \ Profile(color, message) #endif extern bool globalAdvisoryFlag; extern bool globalVerboseFlag; extern bool globalDebugFlag; // // Used to circumvent GCC's unused result warnings; because (void) // is deemed an inadequate indication that we REALLY don't care about // a system call or library result, no matter what the runtime system // or library author thinks. // extern int returnValueDump; inline int uplus(int a, int b) { return (a == UNBOUNDED || b == UNBOUNDED) ? UNBOUNDED : (a + b); } inline int floorDivision(int dividend, int divisor) { if (divisor > 0) { return (dividend >= 0) ? (dividend / divisor) : -((divisor - dividend - 1) / divisor); } else { Assert(divisor < 0, "zero divisor"); return (dividend >= 0) ? -((dividend - divisor - 1) / (-divisor)) : ((-dividend) / (-divisor)); } } inline int ceilingDivision(int dividend, int divisor) { if (divisor > 0) { return (dividend >= 0) ? ((dividend + divisor - 1) / divisor) : -((-dividend) / divisor); } else { Assert(divisor < 0, "zero divisor"); return (dividend >= 0) ? -(dividend / (-divisor)) : (((-dividend) + (-divisor) - 1) / (-divisor)); } } inline const char* pluralize(int_fast64_t quantity) { return (quantity == 1) ? "" : "s"; } const char* int64ToString(int64_t i, int base = 10); int64_t stringToInt64(const char* s, bool& error, int base = 10); bool looksLikeFloat(const char* s); const char* doubleToString(double d); double stringToDouble(const char* s, bool& error); void correctEcvt(double d, int nrDigits, char buffer[], int& decPt, int& sign); void selfCheckFailHandler(); #endif Maude-Maude3.5.1/src/Utility/macros.cc0000664000175000017510000002165015036121435017111 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Now a mismomer - contains random stuff that doesn't fit // anywhere else. // #include // for DBL_MAX #include "macros.hh" #include "vector.hh" #include "mathStuff.hh" #include "decBuf.hh" #include "binBuf.hh" #include "flagSet.hh" bool globalAdvisoryFlag = true; bool globalVerboseFlag = false; bool globalDebugFlag = false; // // We use this to dump return values that the compiler // thinks should not be discarded and would otherwise warn about. // int returnValueDump; const char* int64ToString(int64_t i, int base) { Assert(base >= 2 && base <= 36, "bad base " << base); const int MAX_STRING_SIZE = 64 + 1; // 64 bits + sign const char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; static char text[MAX_STRING_SIZE + 1]; char* p = text + MAX_STRING_SIZE; bool negative = false; uint64_t u = i; if (i < 0) { u = static_cast(- (i + 1)) + 1; negative = true; } do { *(--p) = digits[u % base]; u /= base; } while (u > 0); if (negative) *(--p) = '-'; return p; } int64_t stringToInt64(const char* s, bool& error, int base) { Assert(base >= 2 && base <= 36, "bad base " << base); error = true; bool negative = false; switch (*s) { case '-': negative = true; // fall thru case '+': ++s; } int64_t r = 0; for (;;) { char c = *s++; if (c == '\0') break; int v; if (isdigit(c)) v = c - '0'; else if (isupper(c)) v = c - 'A' + 10; else if (islower(c)) v = c - 'a' + 10; else { error = true; break; } if (v >= base) { error = true; break; } if (r > (INT64_MAX - v) / base) { if (negative && *s == '\0') // check for INT64_MIN { int64_t t = -(INT64_MIN + base + v); if (t % base == 0 && t / base == r - 1) return INT64_MIN; } error = true; break; } r = r * base + v; error = false; } return negative ? -r : r; } bool looksLikeFloat(const char* s) { bool digits = false; bool dot = false; char c = *s++; if (c == '+' || c == '-') c = *s++; if (strcmp(s - 1, "Infinity") == 0) return true; if (isdigit(c)) { digits = true; do c = *s++; while (isdigit(c)); } if (c == '.') { dot = true; c = *s++; if (isdigit(c)) { digits = true; do c = *s++; while (isdigit(c)); } } if (!digits) return false; if (c == 'e' || c == 'E') { c = *s++; if (c == '+' || c == '-') c = *s++; if (!isdigit(c)) return false; do c = *s++; while (isdigit(c)); } else { if (!dot) return false; } return c == '\0'; } const char* doubleToString(double d) { if (::isnan(d)) return "NaN"; if (::isinf(d)) return (d < 0) ? "-Infinity" : "Infinity"; if (d == 0.0) return "0.0"; static char buffer[DOUBLE_TEXT_SIZE + 1] = "-"; int decPt; int sign; // // Get 17 significant digits. // const int significantDigits = 17; correctEcvt(d, significantDigits, buffer + 2, decPt, sign); // // Insert decimal point. // buffer[1] = buffer[2]; buffer[2] = '.'; // // Strip trailing zeros. // int next = 2 + significantDigits; while (next > 4 && buffer[next - 1] == '0') --next; // // Add exponent if needed. // int exponent = decPt - 1; if (exponent != 0) { buffer[next++] = 'e'; if (exponent > 0) buffer[next++] = '+'; strcpy(buffer + next, int64ToString(exponent, 10)); } else buffer[next] = '\0'; return (sign < 0) ? buffer : (buffer + 1); } double stringToDouble(const char* s, bool& error) { if (looksLikeFloat(s)) { error = false; // // Some versions of atof() don't handle Infinity. // char c = s[0]; if (c == 'I' || ((c == '+' || c == '-') && s[1] == 'I')) { double inf = DBL_MAX * DBL_MAX; return (c == '-') ? (- inf) : inf; } return atof(s); } else { error = true; return 0; } } void correctEcvt(double d, int nrDigits, char buffer[], int& decPt, int& sign) { union Bits { uint64_t i; double d; }; const uint64_t bit52 = (1ULL << 52); const uint64_t topBit = (1ULL << 63); // // Break IEEE-754 double into sign/exponent/mantissa. // Bits bits; bits.d = d; sign = (bits.i >> 63) ? -1 : 1; // top bit = 1 -> -ve uint64_t mantissa = bits.i & (bit52 - 1); // 52 LSBs int exponent = (static_cast(bits.i >> 52) & 0x7FF); // remaining 11 bits if (exponent == 2047) { strcpy(buffer, (mantissa == 0) ? "Infinity" : "NaN"); decPt = 0; return; } if (exponent == 0) { if (mantissa == 0) // +/- zero { for (int i = 0; i < nrDigits; i++) buffer[i] = '0'; buffer[nrDigits] = '\0'; decPt = 0; sign = 0; return; } exponent = -1022; // denormalized number } else { exponent -= 1023; // unbiased exponent mantissa |= bit52; // implied leading 1 } DecBuf dec; BinBuf bin; dec.zero(); mantissa <<= 11; // now the 53 MSBs ++exponent; // number of bits to the left of the binary point if (exponent > 0) { // // Case 1: Integer part which is converted by shift and add // on a decimal buffer; plus a possible fraction part. // We convert integer part of exponent bits, 60 bits at a time // because 10 * 2^60 < 2^64. // { int shift = min(exponent, 60); dec.shiftAndAdd(shift, mantissa >> (64 - shift)); mantissa <<= shift; exponent -= shift; } while (exponent > 0) { int shift = min(exponent, 60); dec.shiftAndAdd(shift, 0); exponent -= shift; } if (nrDigits <= 0) // exact conversion { decPt = dec.nrDigits(); // can't increase because we don't round if (mantissa == 0) dec.ascii(buffer, decPt - dec.nrTrailingZeros()); else { bin.init(mantissa, 0); do dec.insertDigit(bin.times10()); while (bin.gtZero()); dec.ascii(buffer, dec.nrDigits()); } } else // round to nrDigits using IEEE-754 "round to nearest" convention { int extraDigitsNeeded = nrDigits - dec.nrDigits(); if (extraDigitsNeeded <= 0) { // // We have enough digits so round using fractional part // of mantissa. // int cmpHalf = (mantissa == topBit) ? 0 : ((mantissa < topBit) ? -1 : 1); dec.round(nrDigits, mantissa > 0, cmpHalf); decPt = dec.nrDigits(); } else { // // Make more digits by converting fraction. // bin.init(mantissa, 0); for (int i = 0; i < extraDigitsNeeded; i++) dec.insertDigit(bin.times10()); // // Round using part of fraction left in bin. // dec.round(nrDigits, bin.gtZero(), bin.cmpHalf()); decPt = dec.nrDigits() - extraDigitsNeeded; } dec.ascii(buffer, nrDigits); } } else { // // Case 2: No integer part. Fraction is converted by // repeatedly multiplying it by 10. // bin.init(mantissa, -exponent); decPt = 1; int digit; do { digit = bin.times10(); --decPt; } while (digit == 0); dec.insertDigit(digit); if (nrDigits <= 0) // exact conversion { while (bin.gtZero()) dec.insertDigit(bin.times10()); dec.ascii(buffer, dec.nrDigits()); } else // round to nrDigits using IEEE-754 "round to nearest" convention { for (int i = 1; i < nrDigits; i++) dec.insertDigit(bin.times10()); // // Round using part of fraction left in bin. // dec.round(nrDigits, bin.gtZero(), bin.cmpHalf()); decPt += (dec.nrDigits() - nrDigits); // rounding may have given us an extra digit dec.ascii(buffer, nrDigits); } } } void selfCheckFailHandler() { std::cerr << "\nMaude self-check failure.\nPlease submit a bug report to: " << PACKAGE_BUGREPORT << "\nPlease include the platform details, Maude version, and a file\n'crash.maude' that can be loaded to reproduce the crash (it may load\n\ other files). Do not bother trying to simplify your example unless the\nruntime to the bug being visible is greater than 10 seconds.\n" << endl; exit(1); } Maude-Maude3.5.1/src/Utility/intSystem.hh0000664000175000017510000000463715036121435017644 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2008 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class to solve Diophantine systems associated with AC and ACU unification, using // machine integers. This version is optimized for the small multiplicities found in // typical unification problems and only implements the Contejean-Devie algorithm. // #include #include "natSet.hh" #ifndef _intSystem_hh_ #define _intSystem_hh_ class IntSystem { public: IntSystem(int nrVariables); typedef Vector IntVec; void insertEqn(const IntVec& eqn); void setUpperBounds(const IntVec& bounds); // pass UNBOUNDED to bound by INT_MAX bool findNextMinimalSolution(IntVec& solution); private: // // General data types, functions and data. // typedef list VecList; static bool greaterEqual(const IntVec& arg1, const IntVec& arg2); bool minimal(const IntVec& arg); void initializeUpperBounds(); #ifndef NO_ASSERT void dumpEqns(); #endif const int nrVariables; VecList eqns; // Diophantine system IntVec upperBounds; // upper bounds for each variable VecList solutions; // minimal solutions found so far // // Contejean-Devie specific stuff. // struct State { IntVec assignment; // current assignment to each variable IntVec residue; // residue for each equation NatSet frozen; // indicies of variables that can no longer be incremented }; typedef Vector StateStack; static bool isZero(const IntVec& arg); void initialize(); int scalerProduct(const IntVec& arg, int columnNr); StateStack states; // stack of search tree states int stackPointer; State current; // pre-allocated temporary storage }; #endif Maude-Maude3.5.1/src/Utility/intSystem.cc0000664000175000017510000000477215036121435017632 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class IntSystem. // #include "macros.hh" #include "vector.hh" #include "intSystem.hh" // analysis options #define ANALYZE_GCD 0 //#define TRACE(s) (std::cout << s << endl) #define TRACE(s) // our stuff #include "intContejeanDevie.cc" IntSystem::IntSystem(int nrVariables) : nrVariables(nrVariables) { } void IntSystem::insertEqn(const IntVec& eqn) { eqns.push_back(IntVec()); IntVec& newEqn = eqns.back(); newEqn.resize(nrVariables); int nrEntries = eqn.size(); // // Copy entries from eqn. // int i = 0; for (; i < nrEntries; ++i) newEqn[i] = eqn[i]; // // Zero pad to full length. // for (; i < nrVariables; ++i) newEqn[i] = 0; } void IntSystem::setUpperBounds(const IntVec& bounds) { upperBounds = bounds; // deep copy } void IntSystem::initializeUpperBounds() { if (upperBounds.empty()) { upperBounds.resize(nrVariables); for (int& i : upperBounds) i = UNBOUNDED; } else Assert(static_cast(nrVariables) == upperBounds.size(), "row size differs"); } bool IntSystem::greaterEqual(const IntVec& arg1, const IntVec& arg2) { IntVec::const_iterator j = arg2.begin(); for (int i : arg1) { if (i < *j) return false; ++j; } return true; } bool IntSystem::minimal(const IntVec& arg) { // // A vector is minimal if it is not greater or equal to an existing solution. // for (const IntVec& v : solutions) { if (greaterEqual(arg, v)) return false; } return true; } #ifndef NO_ASSERT void IntSystem::dumpEqns() { for (const IntVec& v : eqns) { for (int j : v) cout << j << '\t'; cout << endl; } cout << endl; } #endif Maude-Maude3.5.1/src/Utility/intSet.hh0000664000175000017510000000631515036121435017106 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for hash table based sets of ints. // #ifndef _intSet_hh_ #define _intSet_hh_ #include "vector.hh" class IntSet { public: typedef Vector::const_iterator const_iterator; // // Have the compiler make the default constructor, copy constructor and copy asignment operator. // IntSet() = default; IntSet(const IntSet&) = default; IntSet& operator=(const IntSet&) = default; IntSet(int expectedSize); int insert(int k); // returns index of inserted int int find(int k) const; // returns index or NONE bool contains(int k) const; int erase(int i); int ithElement(int i) const; const_iterator begin() const; const_iterator end() const; int size() const; bool empty() const; void clear(); void swap(IntSet& other); void insert(const IntSet& other); void subtract(const IntSet& other); void intersect(const IntSet& other); bool contains(const IntSet& other) const; bool disjoint(const IntSet& other) const; bool operator==(const IntSet& other) const; bool operator!=(const IntSet& other) const; private: enum Parameters { STARTING_HASH_TABLE_SIZE = 8 }; static int hash(int i); static int hash2(int i); int findEntry(int i) const; void resize(int minSize); void rehash(); Vector intTable; Vector hashTable; }; inline IntSet::IntSet(int expectedSize) { intTable.reserve(expectedSize); resize(2 * expectedSize); // no more the 50% load factor } inline int IntSet::size() const { return intTable.size(); } inline bool IntSet::empty() const { return intTable.empty(); } inline IntSet::const_iterator IntSet::begin() const { return intTable.begin(); } inline IntSet::const_iterator IntSet::end() const { return intTable.end(); } inline int IntSet::find(int k) const { return !empty() ? hashTable[findEntry(k)] : NONE; } inline bool IntSet::contains(int k) const { return !empty() && hashTable[findEntry(k)] != UNUSED; } inline int IntSet::ithElement(int i) const { return intTable[i]; } inline void IntSet::clear() { intTable.clear(); hashTable.clear(); } inline void IntSet::swap(IntSet& other) { intTable.swap(other.intTable); hashTable.swap(other.hashTable); } inline bool IntSet::operator==(const IntSet& other) const { return size() == other.size() && contains(other); } inline bool IntSet::operator!=(const IntSet& other) const { return !(*this == other); } #endif Maude-Maude3.5.1/src/Utility/intSet.cc0000664000175000017510000001106615036121435017073 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class IntSet. // #include #include "macros.hh" #include "vector.hh" #include "intSet.hh" inline int IntSet::hash(int i) { return std::hash{}(i); } inline int IntSet::hash2(int i) // 2nd hash function must always return an odd value { std::size_t h = std::hash{}(i); return (h ^ (h >> 8)) | 1; } int IntSet::insert(int k) { if (intTable.empty()) resize(STARTING_HASH_TABLE_SIZE); int i = findEntry(k); int j = hashTable[i]; if (j == UNUSED) { j = intTable.length(); intTable.append(k); int size = 2 * (j + 1); if (size > hashTable.length()) resize(size); else hashTable[i] = j; } return j; } void IntSet::insert(const IntSet& other) { int size = 2 * (intTable.length() + other.intTable.length()); if (size > hashTable.length()) resize(size); // pre-emptively resize hash table based on estimate for (int i = other.intTable.length() - 1; i >= 0; i--) { int k = other.intTable[i]; int j = findEntry(k); if (hashTable[j] == UNUSED) { hashTable[j] = intTable.length(); intTable.append(k); } } } int IntSet::erase(int k) { int n = intTable.length(); if (n == 0) return 0; int i = findEntry(k); int j = hashTable[i]; if (j == UNUSED) return 0; --n; intTable[j] = intTable[n]; intTable.contractTo(n); rehash(); // removing an element is expensive with closed hashing return 1; } void IntSet::subtract(const IntSet& other) { int n = intTable.length(); if (n == 0 || other.intTable.empty()) return; int j = 0; for (int i = 0; i < n; i++) { int k = intTable[i]; if (other.hashTable[other.findEntry(k)] == UNUSED) intTable[j++] = k; } if (j != n) { intTable.contractTo(j); rehash(); } } void IntSet::intersect(const IntSet& other) { int n = intTable.length(); if (n == 0) return; if (other.intTable.empty()) { intTable.clear(); hashTable.clear(); return; } int j = 0; for (int i = 0; i < n; i++) { int k = intTable[i]; if (other.hashTable[other.findEntry(k)] != UNUSED) intTable[j++] = k; } if (j != n) { intTable.contractTo(j); rehash(); } } bool IntSet::contains(const IntSet& other) const { int i = other.intTable.length(); if (i == 0) return true; if (intTable.length() < i) return false; for (i--; i >= 0; i--) { if (hashTable[findEntry(other.intTable[i])] == UNUSED) return false; } return true; } bool IntSet::disjoint(const IntSet& other) const { int i = other.intTable.length(); if (i == 0 || intTable.empty()) return true; for (i--; i >= 0; i--) { if (hashTable[findEntry(other.intTable[i])] != UNUSED) return false; } return true; } int IntSet::findEntry(int k) const { Assert(!hashTable.empty(), "empty length hash table"); int mask = hashTable.length() - 1; int i = hash(k) & mask; int j = hashTable[i]; if (j != UNUSED && intTable[j] != k) { int step = hash2(k); do { i = (i + step) & mask; j = hashTable[i]; } while (j != UNUSED && intTable[j] != k); } return i; } void IntSet::resize(int minSize) { int n = hashTable.length(); n = (n == 0) ? STARTING_HASH_TABLE_SIZE : 2 * n; while (n < minSize) n *= 2; hashTable.expandTo(n); rehash(); } void IntSet::rehash() { int n = hashTable.length(); for (int i = 0; i < n; i++) hashTable[i] = UNUSED; int mask = n - 1; for (int i = intTable.length() - 1; i >= 0; i--) { int k = intTable[i]; int j = hash(k) & mask; if (hashTable[j] != UNUSED) { int step = hash2(k); do j = (j + step) & mask; while (hashTable[j] != UNUSED); } hashTable[j] = i; } } Maude-Maude3.5.1/src/Utility/intContejeanDevie.cc0000664000175000017510000001450515036121435021224 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Solver based on: // Evelyn Contejean and Herve Devie, // "An efficient incremental algorithm for solving systems of linear diophantine equations", // Information and Computation 113, pages 143-172, 1994. // // We use the non-incremental version of their algorithm with the >q ordering. // bool IntSystem::isZero(const IntVec& arg) { for (int i : arg) { if (i != 0) return false; } return true; } int IntSystem::scalerProduct(const IntVec& arg, int varNr) { // // Compute the scalar product between a vector and a column through // the equations corresponding to a variable. // Assert(arg.size() == eqns.size(), "size clash"); int sum = 0; IntVec::const_iterator j = arg.begin(); for (const IntVec& v : eqns) { sum += v[varNr] * *j; ++j; } return sum; } void IntSystem::initialize() { initializeUpperBounds(); states.resize(nrVariables); NatSet frozen; int nrEquations = eqns.size(); for (int i = 0; i < nrVariables; ++i) { State& s = states[i]; { s.assignment.resize(nrVariables); for (int& j : s.assignment) j = 0; s.assignment[i] = 1; } { s.residue.resize(nrEquations); IntVec::iterator k = s.residue.begin(); for (const IntVec& v : eqns) { *k = v[i]; ++k; } } Assert(upperBounds[i] > 0, "zero upper bound"); // // We maintain the invariant that any variable that has reached its // upper bound is frozen. // if (upperBounds[i] == 1) frozen.insert(i); s.frozen = frozen; frozen.insert(i); } current.residue.resize(nrEquations); stackPointer = nrVariables; } bool IntSystem::findNextMinimalSolution(IntVec& solution) { if (states.isNull()) initialize(); while (stackPointer > 0) { --stackPointer; State& s = states[stackPointer]; if (isZero(s.residue)) { solutions.push_back(s.assignment); solution = s.assignment; return true; } else { // // Check that each equation has a non-frozen coefficient left that will move its // residue in the right direction. Also see if we have forced assignments to a variable. // retry: IntVec::const_iterator res = s.residue.begin(); for (const IntVec& v : eqns) { int d = *res; ++res; bool ok = (d == 0); int nfnzCount = 0; int lastNfnz = NONE; for (int i = 0; i < nrVariables; ++i) { if (!(s.frozen.contains(i))) { int c = v[i]; if (c != 0) { ++nfnzCount; lastNfnz = i; ok = ok || (d * c < 0); } } } if (!ok) goto skip; if (nfnzCount == 1) { // // Equation v has only a single nonzero, non-frozen coefficent left. // If residue is 0 we can freeze it; if residue is nonzero, it must // move us in the right direction and we have a forced assignment (or // faliure) for the corresponding variable. // if (d == 0) { //cout << "freezing " << lastNfnz << endl; s.frozen.insert(lastNfnz); goto retry; } // // We can force variable v. // //cout << "one var " << lastNfnz << endl; int c = v[lastNfnz]; if (d % c == 0) { int delta = -d / c; //cout << "div ok delta = " << delta << endl; Assert(delta > 0, "delta = " << delta); s.assignment[lastNfnz] += delta; if (s.assignment[lastNfnz] <= upperBounds[lastNfnz] && minimal(s.assignment)) { // // Assignment produced a new state that satisfies upper bounds // and is minimal so it replaces the old state. // IntVec::iterator res2 = s.residue.begin(); for (const IntVec& k : eqns) { *res2 += delta * k[lastNfnz]; ++res2; } //cout << "forced " << lastNfnz << " by " << delta << endl; s.frozen.insert(lastNfnz); ++stackPointer; // // Now redo from start since new state might be a solution. // } } goto skip; } } // // State survived initial checks so expand it out by incrementing its // non-frozen variables. We first save the old state in current. // current.assignment.swap(s.assignment); current.residue.swap(s.residue); current.frozen.swap(s.frozen); // // Now for each non-frozen variable that moves the solution in the right direction, // try to form a new state by incrementing it. // for (int i = 0; i < nrVariables; ++i) { if (!(current.frozen.contains(i)) && scalerProduct(current.residue, i) < 0) { int& component = current.assignment[i]; ++component; if (minimal(current.assignment)) { // // If we are still minimal, stack the new state. // State& n = states[stackPointer]; n.assignment = current.assignment; n.residue = current.residue; IntVec::const_iterator from = current.residue.begin(); IntVec::iterator to = n.residue.begin(); for (const IntVec& v : eqns) { *to = *from + v[i]; ++from; ++to; } // // We maintain the invariant that any variable that has reached its // upper bound is frozen. // if (component == upperBounds[i]) current.frozen.insert(i); n.frozen = current.frozen; ++stackPointer; } --component; current.frozen.insert(i); // freeze variable in remaining decendents whether minimal or not } } } skip: ; } return false; } Maude-Maude3.5.1/src/Utility/indexedSet.hh0000664000175000017510000000567715036121435017746 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2023 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class template for (constructive) indexed sets. // #ifndef _indexedSet_hh_ #define _indexedSet_hh_ #include //#include template class IndexedSet { public: // // The pupose of FastPair is to allow an insert() which avoids copying // the inserted element if it is already in the indexed set. // We assume T is a complex data type for which copies, compares // and destructs are relatively expensive. A less ugly method would // be to do a find() before inserting but this would cost a second // round of compares if we actually had to do the insert(). // typedef pair FastPair; void clear(); int insert(const T& element); int insert(const FastPair& fastPair); int find(const T& element) const; const T& ithElement(int i) const; int size() const; void swap(IndexedSet& other); private: typedef map EltMap; typedef Vector IndexMap; EltMap eltMap; IndexMap indexMap; }; template inline void IndexedSet::clear() { indexMap.clear(); eltMap.clear(); } template inline void IndexedSet::swap(IndexedSet& other) { indexMap.swap(other.indexMap); eltMap.swap(other.eltMap); } template inline int IndexedSet::insert(const T& element) { pair p = eltMap.insert(typename EltMap::value_type(element, indexMap.size())); if (p.second) indexMap.push_back(p.first); return p.first->second; } template inline int IndexedSet::insert(const FastPair& fastPair) { pair p = eltMap.insert(fastPair); if (p.second) { p.first->second = indexMap.size(); indexMap.push_back(p.first); } return p.first->second; } template inline int IndexedSet::find(const T& element) const { typename EltMap::const_iterator i = eltMap.find(element); return (i == eltMap.end()) ? -1 : i->second; } template inline const T& IndexedSet::ithElement(int i) const { return indexMap[i]->first; } template inline int IndexedSet::size() const { return indexMap.size(); } #endif Maude-Maude3.5.1/src/Utility/indent.hh0000664000175000017510000000226615036121435017122 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class to make generating indentation easy // #ifndef _indent_hh_ #define _indent_hh_ //#define INDENT_STRING ": " #define INDENT_STRING " " class Indent { public: Indent(int level); private: const int level; friend ostream& operator<<(ostream& s, const Indent& c); }; inline Indent::Indent(int level) : level(level) { } #endif Maude-Maude3.5.1/src/Utility/indent.cc0000664000175000017510000000206315036121435017103 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class Indent // #include "macros.hh" #include "indent.hh" ostream& operator<<(ostream& s, const Indent& indent) { for (int i = 0; i < indent.level; i++) s << INDENT_STRING; return s; } Maude-Maude3.5.1/src/Utility/graph.hh0000664000175000017510000000265115036121435016740 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for graphs. // #ifndef _graph_hh_ #define _graph_hh_ #include class Graph { public: Graph(int nrNodes); void insertEdge(int n1, int n2); int color(Vector& coloring); // node 0 is guaranteed to get color 0 void findComponents(Vector >& components); private: void colorNode(int i, int& maxColor, Vector& coloring); void visit(int i, Vector& component, NatSet& visited); typedef set AdjSet; Vector adjSets; }; inline void Graph::insertEdge(int n1, int n2) { adjSets[n1].insert(n2); adjSets[n2].insert(n1); } #endif Maude-Maude3.5.1/src/Utility/graph.cc0000664000175000017510000000466615036121435016736 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2021 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Implementation for class Graph // #include "macros.hh" #include "vector.hh" #include "natSet.hh" #include "graph.hh" Graph::Graph(int nrNodes) : adjSets(nrNodes) { } int Graph::color(Vector& coloring) { int nrNodes = adjSets.size(); coloring.resize(nrNodes); for (int i = 0; i < nrNodes; i++) coloring[i] = UNDEFINED; int maxColor = UNDEFINED; for (int i = 0; i < nrNodes; i++) colorNode(i, maxColor, coloring); return maxColor + 1; } void Graph::colorNode(int i, int& maxColor, Vector& coloring) { if (coloring[i] != UNDEFINED) return; NatSet used; AdjSet adjSet = adjSets[i]; { // // Find colors already used by neighbours. // for (int j : adjSet) { int c = coloring[j]; if (c != UNDEFINED) used.insert(c); } } // // Find first unused color. // int color = 0; while (used.contains(color)) ++color; coloring[i] = color; if (color > maxColor) maxColor = color; // // Color neighbours. // for (int j : adjSet) colorNode(j, maxColor, coloring); } void Graph::findComponents(Vector >& components) { NatSet visited; int nrNodes = adjSets.size(); for (int i = 0; i < nrNodes; i++) { if (!visited.contains(i)) { int nrComponents = components.length(); components.expandBy(1); visit(i, components[nrComponents], visited); } } } void Graph::visit(int i, Vector& component, NatSet& visited) { visited.insert(i); component.append(i); AdjSet adjSet = adjSets[i]; for (int j : adjSet) { if (!visited.contains(j)) visit(j, component, visited); } } Maude-Maude3.5.1/src/Utility/flagSet.hh0000664000175000017510000000324315036121435017222 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class for a set of 32 flags. // #ifndef _flagSet_hh_ #define _flagSet_hh_ class FlagSet { public: FlagSet(int initFlags = 0); bool getFlag(int flag) const; bool oneOrMoreSet(int activeFlags) const; bool allSet(int activeFlags) const; void clearFlags(int activeFlags); void setFlags(int activeFlags); private: int flags; }; inline FlagSet::FlagSet(int initFlags) { flags = initFlags; } inline bool FlagSet::getFlag(int flag) const { return flags & flag; } inline bool FlagSet::oneOrMoreSet(int activeFlags) const { return flags & activeFlags; } inline bool FlagSet::allSet(int activeFlags) const { return (flags & activeFlags) == activeFlags; } inline void FlagSet::clearFlags(int activeFlags) { flags &= ~activeFlags; } inline void FlagSet::setFlags(int activeFlags) { flags |= activeFlags; } #endif Maude-Maude3.5.1/src/Utility/diophantineSystem.hh0000664000175000017510000001635515036121435021354 0ustar nileshnilesh/* This file is part of the Maude 3 interpreter. Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ // // Class to solve Diophantine systems associated with AC and ACU matching. // // Based on: // Steven Eker, // "Single Elementary Associative-Commutative Matching", // Journal of Automated Reasoning, pp35-51, 28(1), 2002. // // Given an n-component vector of positive integers R and an m-component vector // of positive integers C a solution is an n*m matrix M of natural numbers such // that // R * M = C. // The intuition is that M_{i,j} is the multiplicity of the jth constant assigned // to the ith variable in an single elementary AC or ACU matching problem. // For AC we are only interested in solutions which all rows (possibly all but // one in the case of extension variables) of M have a non-zero sum. // // We solve a slightly more general problem where minimum and maximum // values may be specified for the sum of each row of M. // The algorithm used here is optimized for moderately large problem instances. // We do not combine repeated entries in R or make use of failure information // since these approaches to reducing the search space only pay for their overheads // for very large problem instances and would considerably complicate the code. // // Rows are created by the member function // insertRow(int coeff, int minSize, int maxSize) // when "coeff" is the component of R and "minSize" and "maxSize" are the // minimum and maximum values for the sum of the corresponding row of M. // // Columns are created by the member function // insertColumn(int value) // where "value" is the component of C. // // To generate the first and successive solutions the member function solve() is // called; this returns true if a solution was generated and false if no more // solutions exist. If true was returned the components of M can be extracted // using the member function solution(int row, int column). // // Note that is a error to add more rows or columns after the first call to // solve(), or to try to examine a non-existent solution. // // The basic approach is to sort R into descending order and solve one row // at a time, backtracking whenever a dead end is detected. To solve a row // we consider C as a multiset and compute a sub-multiset that we could // potentially use for the current row. We then systematically try selections // from this sub-multiset starting with the smallest ones. // // The bottom level of the implementation uses two different algorithms for // solving a row depending on whether the system as a whole is "simple" or // "complex". A system is "simple" iff at least one element of R is 1 and // has a maximum allowable sum greater or equal that the largest column value. // Otherwise the system is "complex". // Since we sort R into descending order, simple systems // have the property that any natural number can be expressed as a natural number // linear combination of any final segment of the sorted R. Thus we can rule // out one cause of failure for partial solutions. For complex systems we keep // a "solubility vector" which allows us to detect this kind of failure early // and prune the useless branches from the search. // #ifndef _diophantineSystem_hh_ #define _diophantineSystem_hh_ class DiophantineSystem { public: enum SpecialValues { INSOLUBLE = -1 }; DiophantineSystem(int estNrRows = 0, int estNrColumns = 0); void insertRow(int coeff, int minSize, int maxSize); void insertColumn(int value); bool solve(); int solution(int row, int column) const; int rowCount() const; int columnCount() const; private: struct Select { int base; // base value for element of M (0 for simple systems) int extra; // extra value representing current state of solution int maxExtra; // maximum for extra }; // // In a complex system, for each row with coefficient R_i and for each possible // column value V we compute and store the minimum and maximum K such that // V - K*R_i can be expressed as a natural number linear combination over // R_j for j > i, respecting the maximum allowable sums but not the minimum // allowable sums (since some other column may make up the minimum). // If no such (natural number) K exists we store min = max = INSOLUBLE. // struct Soluble { int min; // minimum assignment to row for given column value int max; // maximum assignment to row for given column value }; // // Structure for each row. We have a pair of member functions to handle // making a selection from a multiset, both normally and in the presence // of solubility constraints on the non-selected part. // struct Row { bool multisetSelect(Vector& bag, bool findFirst); bool multisetComplex(Vector& bag, Vector& soluble, bool findFirst); int name; // original position of row int coeff; // coefficient int minSize; // minimum acceptable sum int minProduct; // coeff * minSize int minLeave; // minimum sum that must be left for // remaining rows int maxSize; // maximum acceptable sum int maxProduct; // coeff * maxSize int maxLeave; // maximum sum that may be left for // remaining rows int currentSize; // current size of selection from multiset int currentMaxSize; // maximum size of selection from multiset Vector& s = r.selection; s.expandTo(nrColumns); for (int j = 0; j < nrColumns; j++) s[j].base = 0; minTotal += r.minProduct; maxTotal += r.maxProduct; } if (rows[nrRows - 1].coeff > 1 || rows[nrRows - 1].maxSize < maxColumnValue) { // // Complex case // buildSolubilityVectors(); Vector& soluble = rows[0].soluble; for (int j = 0; j < nrColumns; j++) { if (soluble[columns[j]].min < 0) { failed = true; return false; } } complex = true; } return true; } // // Function to build the solubility vectors discussed above using a dynamic // programming approach. // void DiophantineSystem::buildSolubilityVectors() { int nrRows = rows.length(); // // Compute solubility vector for last row // { Row& r = rows[nrRows - 1]; Vector& s = r.soluble; s.expandTo(maxColumnValue + 1); int coeff = r.coeff; for (int j = 1; j <= maxColumnValue; j++) s[j].min = s[j].max = INSOLUBLE; int count = 0; for (int j = 0; j <= maxColumnValue && count <= r.maxSize; j += coeff) s[j].min = s[j].max = count++; } // // Compute remaining vectors in descending order // for (int i = nrRows - 2; i >= 0; i--) { Vector& prev = rows[i + 1].soluble; Vector& next = rows[i].soluble; next.expandTo(maxColumnValue + 1); int coeff = rows[i].coeff; int maxSize = rows[i].maxSize; for (int j = 0; j <= maxColumnValue; j++) { int t = j - coeff; if (t >= 0 && next[t].min != INSOLUBLE && next[t].min < maxSize) { next[j].min = (prev[j].min == INSOLUBLE) ? next[t].min + 1 : 0; if (next[t].max < maxSize) next[j].max = next[t].max + 1; else { int newMax = maxSize; for (int k = j - maxSize * coeff; prev[k].min == INSOLUBLE; k += coeff) --newMax; Assert(newMax >= next[t].min + 1, "bad newMax"); next[j].max = newMax; } } else { next[j].min = next[j].max = ((prev[j].min == INSOLUBLE) ? INSOLUBLE : 0); } } } } // // For each initial segment of the unsolved portion of R we check that there // is a large enough sum of large enough elements in (what is left of) C to // rule out a certain kind of failure. Return false if the current partial // solution fails this test (and must therefore fail). // local_inline bool DiophantineSystem::viable(int rowNr) const { int nrRows = rows.length(); int nrColumns = columns.length(); int localSumOfMinProducts = 0; for (int i = rowNr; i <= nrRows - 2; i++) // no need to consider last row { int t = rows[i].minProduct; if (t > 0) { localSumOfMinProducts += t; int lowerLimit = rows[i].coeff; int localColumnSum = 0; for (int j = 0; j < nrColumns; j++) { int c = columns[j]; if (c >= lowerLimit) { localColumnSum += c; if (localColumnSum >= localSumOfMinProducts) goto okay; } } return false; } okay: ; } return true; } ///////////////////////////////////////////////////////////////////////// // // Code for solving simple case // ///////////////////////////////////////////////////////////////////////// // // Find a selection from a multiset by undoing the previous selection until // the selected amount of some element can be increased by one (without // exceeding overall selection size). Then make up the size of the selection // by selecting the earliest elements available. // local_inline bool DiophantineSystem::Row::multisetSelect(Vector& bag, bool findFirst) { int bagLength = bag.length(); int undone; if (!findFirst) { if (currentSize > 0) { undone = 0; for (int j = 0; j < bagLength; j++) { Assert(selection[j].extra <= selection[j].maxExtra, "extra > maxExtra"); int t = selection[j].extra; if (undone > 0 && t < selection[j].maxExtra) { ++(selection[j].extra); --undone; bag[j] -= coeff; goto forwards; } if (t > 0) { selection[j].extra = 0; undone += t; bag[j] += t * coeff; } } } return false; } else undone = currentSize; forwards: for(int j = 0; undone > 0; j++) { Assert(j < bagLength, "overran bag"); int t = min(undone, selection[j].maxExtra); if (t > 0) { selection[j].extra = t; undone -= t; bag[j] -= t * coeff; } } return true; } // // Solve last row by allocating what is left. // local_inline void DiophantineSystem::solveLastRowSimple() { Vector& selection = rows[rows.length() - 1].selection; Vector& soluble = rows[rows.length() - 1].soluble; int nrColumns = columns.length(); for (int i = 0; i < nrColumns; i++) { int t = soluble[columns[i]].min; Assert(t != INSOLUBLE, "solubility bug"); selection[i].extra = t; } } // // Solve non-last row by trying to find a next selection for it and increasing // the size of selection we are looking for if necessary. If we are looking for // a first solution we first have to generate the multiset and determine the // feasable range of selection sizes taking into account solubility constraints. // Because of solubility constaints we may end up with minimum values for // certain elements of M which are subtracted out of C just before searching // for the first solution and added back when the final failure occurs (just // before returning false). // local_inline bool DiophantineSystem::solveRowComplex(int rowNr, bool findFirst) { int nrColumns = columns.length(); Row& r = rows[rowNr]; int coeff = r.coeff; Vector