contract interface Animal = entrypoint sound : () => string contract Cat : Animal = entrypoint sound() = "meow" main contract Main = entrypoint oracle() = ok_2YNyxd6TRJPNrTcEDCe9ra59SVUdp9FR9qWC5msKZWYD9bP9z5 entrypoint query() = oq_2oRvyowJuJnEkxy58Ckkw77XfWJrmRgmGaLzhdqb67SKEL1gPY entrypoint init() = let o01 : oracle(Animal, Animal) = oracle() : oracle(Animal, Animal) // success let o02 : oracle(Animal, Animal) = oracle() : oracle(Animal, Cat) // success let o03 : oracle(Animal, Animal) = oracle() : oracle(Cat, Animal) // fail let o04 : oracle(Animal, Animal) = oracle() : oracle(Cat, Cat) // fail let o05 : oracle(Animal, Cat) = oracle() : oracle(Animal, Animal) // fail let o06 : oracle(Animal, Cat) = oracle() : oracle(Animal, Cat) // success let o07 : oracle(Animal, Cat) = oracle() : oracle(Cat, Animal) // fail let o08 : oracle(Animal, Cat) = oracle() : oracle(Cat, Cat) // fail let o09 : oracle(Cat, Animal) = oracle() : oracle(Animal, Animal) // success let o10 : oracle(Cat, Animal) = oracle() : oracle(Animal, Cat) // success let o11 : oracle(Cat, Animal) = oracle() : oracle(Cat, Animal) // success let o12 : oracle(Cat, Animal) = oracle() : oracle(Cat, Cat) // success let o13 : oracle(Cat, Cat) = oracle() : oracle(Animal, Animal) // fail let o14 : oracle(Cat, Cat) = oracle() : oracle(Animal, Cat) // success let o15 : oracle(Cat, Cat) = oracle() : oracle(Cat, Animal) // fail let o16 : oracle(Cat, Cat) = oracle() : oracle(Cat, Cat) // success let q01 : oracle_query(Animal, Animal) = query() : oracle_query(Animal, Animal) // success let q02 : oracle_query(Animal, Animal) = query() : oracle_query(Animal, Cat) // success let q03 : oracle_query(Animal, Animal) = query() : oracle_query(Cat, Animal) // success let q04 : oracle_query(Animal, Animal) = query() : oracle_query(Cat, Cat) // success let q05 : oracle_query(Animal, Cat) = query() : oracle_query(Animal, Animal) // fail let q06 : oracle_query(Animal, Cat) = query() : oracle_query(Animal, Cat) // success let q07 : oracle_query(Animal, Cat) = query() : oracle_query(Cat, Animal) // fail let q08 : oracle_query(Animal, Cat) = query() : oracle_query(Cat, Cat) // success let q09 : oracle_query(Cat, Animal) = query() : oracle_query(Animal, Animal) // fail let q10 : oracle_query(Cat, Animal) = query() : oracle_query(Animal, Cat) // fail let q11 : oracle_query(Cat, Animal) = query() : oracle_query(Cat, Animal) // success let q12 : oracle_query(Cat, Animal) = query() : oracle_query(Cat, Cat) // success let q13 : oracle_query(Cat, Cat) = query() : oracle_query(Animal, Animal) // fail let q14 : oracle_query(Cat, Cat) = query() : oracle_query(Animal, Cat) // fail let q15 : oracle_query(Cat, Cat) = query() : oracle_query(Cat, Animal) // fail let q16 : oracle_query(Cat, Cat) = query() : oracle_query(Cat, Cat) // success ()